Java串口通信(Spring Boot项目)

由于需求需要使用java进行串口通信,上网查询资料还是发现关于Java串口通信的资料太少了
所以发文记录一下自己的使用心得,如有不足之处多多包涵


首先导入串口通信Maven依赖包

<dependency>
    <groupId>gnu.io</groupId>
    <artifactId>rxtx</artifactId>
    <version>2.1.7</version>
</dependency>

然后右键我的电脑-设备管理中查看自己需要通信设备的串口号我这里是COM4

private static final String PORT_NAME = "COM4"; // 串口号,根据实际情况修改

@Slf4j
@Componen
public class Serial implements SerialPortEventListener{//这里要实现SerialPortEventListener接口然后重写接口下的serialEvent方法
  private BufferedReader input;
  private SerialPort serialPort;//串口对象
  private static final String PORT_NAME="COM4"
  public void initialize() {//串口初始化
    CommPortIdentifier portId = null;
        Enumeration portEnum = CommPortIdentifier.getPortIdentifiers();//获取当前所有串口设备集合

        while (portEnum.hasMoreElements()) {//遍历串口集合
            CommPortIdentifier currPortId = (CommPortIdentifier) portEnum.nextElement();
            if (currPortId.getName().equals(PORT_NAME)) {//如果当前串口名和自己需要的串口名相同,说明找到了需要进行通信的串口设备,则跳出循环
                portId = currPortId;
                break;
            }
        }
        if (portId == null) {
            System.out.println("Could not find COM port.");
            return;
        }
         try {
            //串口初始化
            serialPort = (SerialPort) portId.open(this.getClass().getName(), TIMEOUT);//尝试打开串口
            serialPort.setSerialPortParams(BAUD_RATE, SerialPort.DATABITS_8, SerialPort.STOPBITS_1, SerialPort.PARITY_NONE);//直接粘贴,具体的含义可以问AI
            input = new BufferedReader(new InputStreamReader(serialPort.getInputStream(), "GBK"));//设置输入流
            serialPort.addEventListener(this);
            serialPort.notifyOnDataAvailable(true);
        } catch (Exception e) {
            System.err.println(e.toString());
        }
    }
  public synchronized void serialEvent(SerialPortEvent oEvent) {
        if (oEvent.getEventType() == SerialPortEvent.DATA_AVAILABLE) {
            try {
                String inputLine = input.readLine();//实现了serialEvent方法之后,会自动监听串口消息
                //...处理消息逻辑
            }catch{
                throw new IOException("串口意外关闭")
            }
        }
    }
}

总结

-建议新开一个线程,对串口进行异步调用
-博主第一次写博客,如有不足之处请体谅,哈哈~

posted @   四季山川  阅读(11)  评论(1编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)

阅读目录(Content)

此页目录为空

点击右上角即可分享
微信分享提示