Java串口通信程序程序及注释 可编译运行Word格式.docx
- 文档编号:19910570
- 上传时间:2023-01-12
- 格式:DOCX
- 页数:8
- 大小:16.81KB
Java串口通信程序程序及注释 可编译运行Word格式.docx
《Java串口通信程序程序及注释 可编译运行Word格式.docx》由会员分享,可在线阅读,更多相关《Java串口通信程序程序及注释 可编译运行Word格式.docx(8页珍藏版)》请在冰豆网上搜索。
importjava.awt.event.*;
importjava.io.*;
importjava.util.*;
classS_FrameextendsFrameimplementsRunnable,ActionListener{
/*检测系统中可用的通讯端口类*/
staticCommPortIdentifierportId;
/*Enumeration为枚举型类,在util中*/
staticEnumerationportList;
OutputStreamoutputStream;
/*RS-232的串行口*/
SerialPortserialPort;
ThreadreadThread;
Panelp=newPanel();
TextFieldin_message=newTextField("
打开COM1,波特率9600,数据位8,停止位
1."
);
TextAreaout_message=newTextArea();
ButtonbtnOpen=newButton("
打开串口,发送数据"
ButtonbtnClose=newButton("
关闭串口,停止发送数据"
bytedata[]=newbyte[10240];
/*设置判断要是否关闭串口的标志*/
booleanmark;
/*安排窗体*/
S_Frame()
{super("
串口发送数据"
setSize(200,200);
setVisible(true);
add(out_message,"
Center"
add(p,"
North"
p.add(btnOpen);
p.add(btnClose);
add(in_message,"
South"
btnOpen.addActionListener(this);
btnClose.addActionListener(this);
}//R_Frame()end
/*点击按扭打开串口.*/
publicvoidactionPerformed(ActionEventevent){
if(event.getSource()==btnClose){
serialPort.close();
//关闭串口
mark=true;
//用于中止线程的run()方法
in_message.setText("
串口COM1已经关闭,停止发送数据."
}else{mark=false;
/*从文本区按字节读取数据*/
data=out_message.getText().getBytes();
/*打开串口*/
start();
串口COM1已经打开,正在每2秒钟发送一次数据....."
}
}//actionPerformed()end
/*打开串口,并调用线程发送数据*/
publicvoidstart(){
/*获取系统中所有的通讯端口*/
portList=CommPortIdentifier.getPortIdentifiers();
/*用循环结构找出串口*/
while(portList.hasMoreElements()){
/*强制转换为通讯端口类型*/
portId=(CommPortIdentifier)portList.nextElement();
if(portId.getPortType()==CommPortIdentifier.PORT_SERIAL){if(portId.getName().equals("
COM1"
)){
try{
serialPort=(SerialPort)portId.open("
ReadComm"
2000);
}catch(PortInUseExceptione){}
/*设置串口输出流*/
outputStream=serialPort.getOutputStream();
}catch(IOExceptione){}
}//ifend
}//whileend
/*调用线程发送数据*/
try{
readThread=newThread(this);
//线程负责每发送一次数据,休眠2秒钟
readThread.start();
}catch(Exceptione){}
}//start()end
/*发送数据,休眠2秒钟后重发*/
publicvoidrun(){
/*设置串口通讯参数*/
serialPort.setSerialPortParams(9600,
SerialPort.DATABITS_8,
SerialPort.STOPBITS_1,
SerialPort.PARITY_NONE);
}catch(UnsupportedCommOperationExceptione){}
/*发送数据流(将数组data[]中的数据发送出去)*/
outputStream.write(data);
}catch(IOExceptione){}
/*发送数据后休眠2秒钟,然后再重发*/
try{Thread.sleep
(2000);
if(mark)
{return;
//结束run方法,导致线程死亡}start();
}catch(InterruptedExceptione){}
}//run()end
}//类S_Frameend
publicclassSendComm
{publicstaticvoidmain(Stringargs[])
{S_FrameS_win=newS_Frame();
S_win.addWindowListener(newWindowAdapter()
{publicvoidwindowClosing(WindowEvente)
{System.exit
(0);
}
});
S_win.pack();
}}
接收程序:
classR_FrameextendsFrameimplements
Runnable,ActionListener,SerialPortEventListener{/*检测系统中可用的通讯端口类*/
/*Enumeration为枚举型类,在java.util中*/
InputStreaminputStream;
/*声明RS-232串行端口的成员变量*/
Stringstr="
"
;
TextFieldout_message=newTextField("
上面文本框显示接收到的数据"
TextAreain_message=newTextArea();
打开串口"
/*建立窗体*/
R_Frame(){super("
串口接收数据"
add(btnOpen,"
/*点击按扭所触发的事件:
打开串口,并监听串口.*/
publicvoidactionPerformed(ActionEventevent){/*获取系统中所有的通讯端口*/
out_message.setText("
已打开端口COM1,正在接收数据....."
/*设置串口监听器*/
serialPort.addEventListener(this);
}catch(TooManyListenersExceptione){}
/*侦听到串口有数据,触发串口事件*/
serialPort.notifyOnDataAvailable(true);
//线程负责每接收一次数据休眠20秒钟
/*接收数据后休眠20秒钟*/
Thread.sleep
(200);
/*串口监听器触发的事件,设置串口通讯参数,读取数据并写到文本区中*/publicvoidserialEvent(SerialPortEventevent){
/*设置串口通讯参数:
波特率、数据位、停止位、奇偶校验*/
try
{serialPort.setSerialPortParams(9600,SerialPort.DATABITS_8,SerialPort.STOPBITS_1,SerialPort.PARITY_NONE);
catch(UnsupportedCommOperationExceptione){}
byte[]readBuffer=newbyte[20];
inputStream=serialPort.getInputStream();
try{/*从线路上读取数据流*/
while(inputStream.available()>
0){
intnumBytes=inputStream.read(readBuffer);
str=newString(readBuffer);
/*接收到的数据存放到文本区中*/
in_message.append(str+"
\n"
}//serialEvent()end
}//类R_Frameend
publicclassReadComm{publicstaticvoidmain(Stringargs[]){/*实例化接收串口数据的窗体类*/
R_FrameR_win=newR_Frame();
/*定义窗体适配器的关闭按钮功能*/
R_win.addWindowListener(newWindowAdapter()
R_win.pack();
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java串口通信程序程序及注释 可编译运行 Java 串口 通信 程序 注释 编译 运行
![提示](https://static.bdocx.com/images/bang_tan.gif)