`
- 浏览:
1599870 次
- 性别:
-
/***//******************************************
* 程序文件名称:SendComm.java
*功能:从串行口COM1中发送数据
******************************************/
importjava.awt.*;
importjava.awt.event.*;
importjava.io.*;
importjava.util.*;
importjavax.comm.*;
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();
in_message.setText("串口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)...{}
/**//*设置串口输出流*/
try...{
outputStream=serialPort.getOutputStream();
}
catch(IOExceptione)...{}
}//ifend
}//ifend
}//whileend
/**//*调用线程发送数据*/
try...{
readThread=newThread(this);
//线程负责每发送一次数据,休眠2秒钟
readThread.start();
}
catch(Exceptione)...{}
}//start()end
/**//*发送数据,休眠2秒钟后重发*/
publicvoidrun()...{
/**//*设置串口通讯参数*/
try...{
serialPort.setSerialPortParams(9600,
SerialPort.DATABITS_8,
SerialPort.STOPBITS_1,
SerialPort.PARITY_NONE);
}
catch(UnsupportedCommOperationExceptione)...{}
/**//*发送数据流(将数组data[]中的数据发送出去)*/
try...{
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();
}
}
/***//******************************************
* 程序文件名称:ReadComm.java
*功能:从串行口COM1中接收数据
******************************************/
importjava.awt.*;
importjava.awt.event.*;
importjava.io.*;
importjava.util.*;
importjavax.comm.*;
classR_FrameextendsFrameimplementsRunnable,ActionListener,SerialPortEventListener
...{
/**//*检测系统中可用的通讯端口类*/
staticCommPortIdentifierportId;
/**//*Enumeration为枚举型类,在java.util中*/
staticEnumerationportList;
InputStreaminputStream;
/**//*声明RS-232串行端口的成员变量*/
SerialPortserialPort;
ThreadreadThread;
Stringstr="";
TextFieldout_message=newTextField("上面文本框显示接收到的数据");
TextAreain_message=newTextArea();
ButtonbtnOpen=newButton("打开串口");
/**//*建立窗体*/
R_Frame()
...{
super("串口接收数据");
setSize(200,200);
setVisible(true);
btnOpen.addActionListener(this);
add(out_message,"South");
add(in_message,"Center");
add(btnOpen,"North");
}//R_Frame()end
/**//*点击按扭所触发的事件:打开串口,并监听串口.*/
publicvoidactionPerformed(ActionEventevent)
...{
/**//*获取系统中所有的通讯端口*/
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);
out_message.setText("已打开端口COM1,正在接收数据.....");
}
catch(PortInUseExceptione)...{}
/**//*设置串口监听器*/
try...{
serialPort.addEventListener(this);
}
catch(TooManyListenersExceptione)...{}
/**//*侦听到串口有数据,触发串口事件*/
serialPort.notifyOnDataAvailable(true);
}//ifend
}//ifend
}//whileend
readThread=newThread(this);
readThread.start();//线程负责每接收一次数据休眠20秒钟
}//actionPerformed()end
/**//*接收数据后休眠20秒钟*/
publicvoidrun()...{
try...{
Thread.sleep(20000);
}
catch(InterruptedExceptione)...{}
}//run()end
/**//*串口监听器触发的事件,设置串口通讯参数,读取数据并写到文本区中*/
publicvoidserialEvent(SerialPortEventevent)...{
/**//*设置串口通讯参数:波特率、数据位、停止位、奇偶校验*/
try...{
serialPort.setSerialPortParams(9600,
SerialPort.DATABITS_8,
SerialPort.STOPBITS_1,
SerialPort.PARITY_NONE);
}
catch(UnsupportedCommOperationExceptione)...{ }
byte[]readBuffer=newbyte[20];
try...{
inputStream=serialPort.getInputStream();
}
catch(IOExceptione)...{}
try...{
/**//*从线路上读取数据流*/
while(inputStream.available()>0)...{
intnumBytes=inputStream.read(readBuffer);
}//whileend
str=newString(readBuffer);
/**//*接收到的数据存放到文本区中*/
in_message.append(str+" ");
}
catch(IOExceptione)...{}
}//serialEvent()end
}//类R_Frameend
publicclassReadComm
...{
publicstaticvoidmain(Stringargs[])
...{
/**//*实例化接收串口数据的窗体类*/
R_FrameR_win=newR_Frame();
/**//*定义窗体适配器的关闭按钮功能*/
R_win.addWindowListener(newWindowAdapter()
...{publicvoidwindowClosing(WindowEvente)
...{System.exit(0);}
});
R_win.pack();
}
}
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
利用GUI图形化界面实现JAVA串口通信
java串口通讯demo源码,内有注解。可实现通过javaWeb页面控制串口,调用串口数据,发送串口指令等操作。可同时监听多个串口,并同时向多个串口发送和接收消息。内含已经写好的串口监听类,定时器,以及串口数据转换...
java串口通信实例,仅供大家学习参考。Java串口,本实例大致工作流程是:将以下的所有java类都放在一个包下面,run as ---java application ,打开的是一个图形化界面,最上面的是一个输入文本框(也就是你要发射的...
java源码 JAVA串口通信源码 .
Java串口通信编程
Java串口通讯
jar包含32位与64位版本使用方法如下:拷贝 RXTXcomm.jar 到 <JAVA_HOME>\jre\lib\ext目录中
很全面的java串口通信详解,很适合新手学习
java,串口通信,PC-PC串口,实现串口通信,PC-PC串口
java串口通讯及串口调试助手
java串口通信简单例子,方便串口上位机的开发,作为引导作用
1.1 常见的Java串口包... 1 1.2 串口包的安装(Windows下)... 1 2 串口API概览... 2 2.1 javax.comm.CommPort2 2.2 javax.comm.CommPortIdentifier3 2.3 javax.comm.SerialPort3 2.4 串口API实例... 3 2.4.1...
Java串口通信攻击技术Java串口通信攻击技术Java串口通信攻击技术Java串口通信攻击技术Java串口通信攻击技术
Java串口通讯代码和工具: 导入相关 jar包到工程, 参看里面的 txt文件操作 (注意: 确认串口没有被占用。)
java串口通讯源码
java串口通讯demo实例,其中包含java串口通讯的jar,虚拟串口工具,友善串口助手。以及发送接收数据的java小工程实例。
Java串口通信依赖的jar包 RXTXcomm.jar 及dll文件 内含32位与64位版本 使用方法见说明
基于RXTXcomm.jar包所写的java串口通信代码,主要就两个文件,一个是src中的JavaRs232.java文件,代码都在里面。另一个就是在RXTX文件夹中的RXTXcomm.jar包
Java串行通信,控制打印机 Java串行通信,控制打印机