}
}
}
检测端(接收端)主程序:
#include \#include \#include \#include \#include \ //0 1 2 3 4 5 6 7 8 9 .
unsigned code lcdtable[]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x2e};//lcd显示代码;
uchar d1,d2,d3,po4,po3,po2,po1; //个位,十位,百位,1/10位,1/100位,1/1000位,1/10000位; uchar low,tdatalow,tdataheight; //温度低字节,未处理温度的小数位
uint temp,tempold,tempnew,point;//采集温度,旧温度,新温度,实际温度的小数位
void convert(uchar c) { d1=0x00; d2=0x00; d3=0x00; po1=0x00; po2=0x00; po3=0x00; po4=0x00;
d3=(c00)/100; //取百位 d2=(c0)/10; //取十位 d1=(c)/1; //取个位 po4=(point000)/1000; //取1/10位 po3=(point00)/100; //取1/100位 po2=(point0)/10; //取1/1000位 po1=(point)/1; //取1/10000位 }
21
void display()//LCD显示函数 { //显示温度 wr_byte_ram(1,0x42,lcdtable[d3]); //显示百位 wr_byte_ram(1,0x43,lcdtable[d2]); //显示十位 wr_byte_ram(1,0x44,lcdtable[d1]); //显示个位
wr_byte_ram(1,0x45,lcdtable[10]); //显示小数点 wr_byte_ram(1,0x46,lcdtable[po4]); //显示1/10位 wr_byte_ram(1,0x47,lcdtable[po3]); //显示1/100位 wr_byte_ram(1,0x48,lcdtable[po2]); //显示1/1000位 wr_byte_ram(1,0x49,lcdtable[po1]); //显示1/10000位 wr_length_ram(1,0x4A,\显示温度单位 }
void dispNegativeTemp(uchar l) //LCD显示负温度 { convert(l);//转换 wr_length_ram(1,0x40,\ \擦除字符 wr_length_ram(1,0x40,\显示负温度 display(); //LCD显示函数 }
void dispPositiveTemp(uchar l) //LCD显示正温度 { convert(l); //转换 wr_length_ram(1,0x40,\ \擦除字符 wr_length_ram(1,0x40,\显示正温度 display(); //LCD显示函数 }
main() { ini_lcd1602(); //初始化LCD; Config905(); //配置905 init_serialcomm(); //初始化串口
22
wr_length_ram(1,0x00,\显示提示字符 while(1) { temp=0x0000;
SetRxMode();//设置为接收模式 temp=RxPacket();//接收温度函数
if(temp!=tempold) //数据有变化者,重新显示 { tempnew=temp; tdatalow=temp&0xff; tdataheight=temp>>8; }
point=temp&0x000F;//取小数位; point=point*625;//转换为实际温度
if(temp & 0x8000) //处理负温度 { temp=temp&0x0FFF;//去除高4位的符号; temp=temp^0x0FFF;//取反; temp+=1; temp>>=4; //计算温度,除以16; low=temp|0x00; //取低字节
dispNegativeTemp(low); //LCD显示负温度
low=low|0x80; }
else //处理正温度 { temp>>=4;//计算温度,除以16; low=temp|0x00;//取低字节 }
dispPositiveTemp(low); //LCD显示正温度
send_char_com(low);//向串口发送一个字符
23
}
}
计算机监控软件主程序:
package com.Frame;
import java.awt.BorderLayout; import java.awt.Color;
import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionAdapter; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.EOFException; import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.util.Enumeration;
import java.util.TooManyListenersException;
import javax.comm.CommPortIdentifier; import javax.comm.SerialPort;
import javax.comm.SerialPortEvent;
import javax.comm.SerialPortEventListener; import javax.swing.JButton; import javax.swing.JComboBox; import javax.swing.JFrame; import javax.swing.JLabel;
import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JSlider;
import javax.swing.SwingConstants; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener;
24
import com.Serial.SerialComm;
public class MainFrame { private SerialComm serialcomm=null; //串口实例 private SerialPort serialPort=null; //串口实例 private File file=null;//保存报警值 private DataOutputStream fileout=null;//写报警值数据流; private DataInputStream filein=null;//读报警值数据流; private int readdata=0; //串口数据存储 private int temp_old=0; private Boolean flag_start=false; //监控标志 private Boolean flag_alarm=false; //报警标志 private JFrame frame; private final JPanel panel = new JPanel(); private final JLabel Label1 = new JLabel(); private final JComboBox comboBoxPortID = new JComboBox(); private final JButton buttonStart = new JButton(); private final JSlider sliderTemp = new JSlider(); private final JLabel labelSliderTemp = new JLabel(); private final JLabel label = new JLabel(); private final JLabel label_1 = new JLabel(); private final JSlider sliderAlarm = new JSlider(); private final JLabel labelSliderAlarm = new JLabel(); private final JButton buttonExit = new JButton(); /** * Launch the application * @param args */ public static void main(String args[]) { try { MainFrame window = new MainFrame(); window.frame.setVisible(true); }
25