Java串口通信程序程序及注释 可编译运行Word格式.docx

上传人:b****6 文档编号:19910570 上传时间:2023-01-12 格式:DOCX 页数:8 大小:16.81KB
下载 相关 举报
Java串口通信程序程序及注释 可编译运行Word格式.docx_第1页
第1页 / 共8页
Java串口通信程序程序及注释 可编译运行Word格式.docx_第2页
第2页 / 共8页
Java串口通信程序程序及注释 可编译运行Word格式.docx_第3页
第3页 / 共8页
Java串口通信程序程序及注释 可编译运行Word格式.docx_第4页
第4页 / 共8页
Java串口通信程序程序及注释 可编译运行Word格式.docx_第5页
第5页 / 共8页
点击查看更多>>
下载资源
资源描述

Java串口通信程序程序及注释 可编译运行Word格式.docx

《Java串口通信程序程序及注释 可编译运行Word格式.docx》由会员分享,可在线阅读,更多相关《Java串口通信程序程序及注释 可编译运行Word格式.docx(8页珍藏版)》请在冰豆网上搜索。

Java串口通信程序程序及注释 可编译运行Word格式.docx

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();

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > IT计算机 > 计算机软件及应用

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1