使用RXTXcomm进行串口通信

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

RXTXcomm 串口通信

虚拟串口和串口调试助手的使用
  • 虚拟串口软件:VSPDhttps://www.eltima.com/cn/products/vspdxp/

    • VSPD会自动识别出本台计算上有几个物理串口,例如本机只有一个物理串口COM1。在右侧端口管理的分页中,添加虚拟端口。虚拟端口是成对出现的,如COM2和COM3,其编号由VSPD自动检测本地物理串口资源后,自动为虚拟串口排号。单击“Add pair”按钮为计算机添加虚拟串口组对。

      为何是组对出现,COM2->COM3和COM3->COM2,串口通信是异步的,允许发送数据的同时接收数据,数据流向是双向的。组对出现我们可以通过串口调试助手分别从两端进行调试。
      在这里插入图片描述

  • 串口调试助手:COMHelper,需要可留言私信你滴邮箱,打包发你。

    • 开箱即用,开启串口,点击即用。

使用效果如下:
在这里插入图片描述

Java RXTXcomm 实现串口通信并调试
  • 下载RXTXcomm

  • 根据机器配置解压缩文件夹,复制相关Jar包及DLL文件
    在这里插入图片描述

    • RXTXcomm.jar -> <JAVA_HOME>\jre\lib\ext
    • rxtxSerial.dll -> <JAVA_HOME>\jre\bin
    • rxtxParallel.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
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

编程小透明

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值