RXTXcomm 串口通信
虚拟串口和串口调试助手的使用
-
虚拟串口软件:
VSPD,https://www.eltima.com/cn/products/vspdxp/-
VSPD会自动识别出本台计算上有几个物理串口,例如本机只有一个物理串口COM1。在右侧端口管理的分页中,添加虚拟端口。虚拟端口是成对出现的,如COM2和COM3,其编号由VSPD自动检测本地物理串口资源后,自动为虚拟串口排号。单击“Add pair”按钮为计算机添加虚拟串口组对。
为何是组对出现,COM2->COM3和COM3->COM2,串口通信是异步的,允许发送数据的同时接收数据,数据流向是双向的。组对出现我们可以通过串口调试助手分别从两端进行调试。

-
-
串口调试助手:
COMHelper,需要可留言私信你滴邮箱,打包发你。- 开箱即用,开启串口,点击即用。
使用效果如下:

Java RXTXcomm 实现串口通信并调试
-
下载RXTXcomm
- RXTXcomm提供了 Windows x64, x86, ia64 and Linux x86, x86_64等操作系统支持。http://fizzed.com/oss/rxtx-for-java
-
根据机器配置解压缩文件夹,复制相关Jar包及DLL文件

RXTXcomm.jar-><JAVA_HOME>\jre\lib\extrxtxSerial.dll-><JAVA_HOME>\jre\binrxtxParallel.dll-><JAVA_HOME>\jre\bin
-
将Jar包添加到项目lib中,IDE使用的是
IDEA,项目构建方式为Maven

-
创建
SerialPortDataHandle类,继承Thread类,并实现SerialPortEventListener接口,具体代码如下:public class SerialPortDataHandle extends Thread implements SerialPortEventListener { private static final Logger logger = LoggerFactory.getLogger(SerialPortDataHandle.class); // 通讯端口管理,控制对通信端口的访问的中心类 static CommPortIdentifier portManager; // 有效连接上的端口的枚举 static Enumeration<?> portList; // 串口输入流引用 static InputStream inputStream; // 串口输出流引用 static OutputStream outputStream; // 串口对象引用 static SerialPort serialPort; // 堵塞队列:用来存放串口发送到服务端的数据 private BlockingQueue<String> msgQueue = new LinkedBlockingQueue<>(); // 线程控制标识 private boolean flag = true; @Override public void serialEvent(SerialPortEvent event) { switch (event.getEventType()) { /* * SerialPortEvent.BI:/*Break interrupt,通讯中断 * SerialPortEvent.OE:/*Overrun error,溢位错误 * SerialPortEvent.FE:/*Framing error,传帧错误 * SerialPortEvent.PE:/*Parity error,校验错误 * SerialPortEvent.CD:/*Carrier detect,载波检测 * SerialPortEvent.CTS:/*Clear to send,清除发送 * SerialPortEvent.DSR:/*Data set ready,数据设备就绪 * SerialPortEvent.RI:/*Ring indicator,响铃指示 * SerialPortEvent.OUTPUT_BUFFER_EMPTY:/*Output buffer is empty,输出缓冲区清空 */ case SerialPortEvent.BI: case SerialPortEvent.OE: case SerialPortEvent.FE: case SerialPortEvent.PE: case SerialPortEvent

本文详细介绍如何使用RXTXcomm库实现Java串口通信,包括虚拟串口软件VSPD的配置,串口调试助手COMHelper的使用,以及串口通信参数设置与数据收发的完整代码示例。

5257

被折叠的 条评论
为什么被折叠?



