JOptionPane.showMessageDialog(null, \温度警告!!!\ } flag_alarm=false; } } protected void buttonExit_actionPerformed(ActionEvent e) { commStop(); try { fileout.writeInt(sliderAlarm.getValue()); //报警值写入配置 fileout.close();//关闭输出流 } catch (IOException e1) { JOptionPane.showMessageDialog(null, \写入报警值到配置错误\ e1.printStackTrace(); } System.exit(0); //退出 } protected void buttonStart_actionPerformed(ActionEvent e) { if(flag_start!=true) //判断是否已启动监控,flag_start=true为启动监控。 { commStart(); //启动监控 flag_start=true;//设置启动标志为true } else { commStop(); //停止监控 flag_start=false; //设置启动监控为false } } private void commStart() { comboBoxPortID.setEnabled(false); //下拉列表不可用 comboBoxPortID.setForeground(Color.RED); //下拉列表前景色为红色 serialcomm.SerialInit(String.valueOf(comboBoxPortID.getSelectedItem())); //用下拉列表框的端口对串口参数进行初始化 serialPort = serialcomm.getSerialPort(); //得到端口实例
31
try { serialPort.addEventListener(new myListener());//添加端口读监听事件 serialPort.notifyOnDataAvailable(true);//开启串口监听 } catch (TooManyListenersException e) { JOptionPane.showMessageDialog(null, \添加端口监听事件错误\ e.printStackTrace(); } buttonStart.setText(\停止监控\ //改变按钮控件显示 } private class myListener implements SerialPortEventListener { public void serialEvent(SerialPortEvent evt) { if (evt.getEventType() == SerialPortEvent.DATA_AVAILABLE)// 如果串口事件是有数据到达 { try { InputStream input = serialPort.getInputStream(); // 得到端口输入流 setReaddata(input.read()); // 把低位机送来的数据赋值到readdata sliderTemp_stateChanged(null); // 改变温度滑条的值 flag_alarm=true; if(temp_old!=getReaddata()) { temp_old=getReaddata(); sliderAlarm_stateChanged(null); // 调用报警滑条的改变事件,以判断温度是否超出报警值 } //JOptionPane.showMessageDialog(null, getReaddata()); //显示接收到的数据 } catch (IOException e) { JOptionPane.showMessageDialog(null, \输入流错误!\ e.printStackTrace();
32
} }
else if (evt.getEventType() == SerialPortEvent.FE)// 出现帧错误 { JOptionPane.showMessageDialog(null, \出现帧错误\ throw new RuntimeException(\出现帧错误\}
else if (evt.getEventType() == SerialPortEvent.BI)// 出现通信中断 { JOptionPane.showMessageDialog(null, \出现通信中断\ throw new RuntimeException(\出现通信中断\}
} }
private class SliderAlarmMouseListener extends MouseAdapter { public void mouseClicked(MouseEvent e) { sliderAlarm_mouseClicked(e); } public void mouseReleased(MouseEvent e) { sliderAlarm_mouseReleased(e); } }
private class SliderAlarmMouseMotionListener extends MouseMotionAdapter { public void mouseDragged(MouseEvent e) { sliderAlarm_mouseDragged(e); } }
private void commStop() { try { serialcomm.allClosed(); } catch (IOException e) { JOptionPane.showMessageDialog(null, \关闭端口错误\ e.printStackTrace(); }
33
}
}
comboBoxPortID.setEnabled(true); //下拉列表为可用
comboBoxPortID.setForeground(Color.GREEN); //下拉列表前景色为绿色
buttonStart.setText(\启动监控\改变按钮控件显示
public int getReaddata() { return readdata; }
public void setReaddata(int readdata) { this.readdata = readdata; }
protected void sliderAlarm_mouseClicked(MouseEvent e) { }
protected void sliderAlarm_mouseDragged(MouseEvent e) { }
protected void sliderAlarm_mouseReleased(MouseEvent e) { flag_alarm=true; sliderAlarm_stateChanged(null); }
34