java串口rxtx的若干坑

首先读串口大部分用的都是rxtx,rxtx的相关介绍都很多,不介绍了

坑1,必须jdk1.8,而且最好是201的,版本高,直接jvm崩溃

坑2,windows上可用,但Linux上未必可行,读数据必报错,可参考https://blog.csdn.net/digitalscience/article/details/108269633

坑3,假如在linux上串口未识别,在如上提供的文件中,找到RXTXcommdriver这个文件, 

在这个数组添加需要的串口即可

在此记录,防止忘记 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java中使用RXTX库来操作串口,可以通过多线程来实现同时处理多个串口通信任务的需求。下面是一个简单的使用RXTX库实现串口多线程通信的示例代码: ``` import gnu.io.*; public class SerialPortThread implements Runnable, SerialPortEventListener { private SerialPort serialPort; private Thread thread; private String portName; private int baudRate; private boolean running; public SerialPortThread(String portName, int baudRate) { this.portName = portName; this.baudRate = baudRate; this.running = false; } public void start() { try { CommPortIdentifier portIdentifier = CommPortIdentifier.getPortIdentifier(portName); CommPort commPort = portIdentifier.open(this.getClass().getName(), 2000); if (commPort instanceof SerialPort) { serialPort = (SerialPort) commPort; serialPort.setSerialPortParams(baudRate, SerialPort.DATABITS_8, SerialPort.STOPBITS_1, SerialPort.PARITY_NONE); serialPort.addEventListener(this); serialPort.notifyOnDataAvailable(true); thread = new Thread(this); thread.start(); } else { throw new Exception("Error: Only serial ports are handled by this example."); } } catch (Exception e) { System.out.println("Error: " + e); } } public void stop() { running = false; serialPort.removeEventListener(); serialPort.close(); thread.interrupt(); } @Override public void run() { running = true; while (running) { try { Thread.sleep(100); } catch (InterruptedException e) { System.out.println("Thread interrupted: " + e); } } } @Override public void serialEvent(SerialPortEvent serialPortEvent) { if (serialPortEvent.getEventType() == SerialPortEvent.DATA_AVAILABLE) { try { // 读取串口数据 byte[] buffer = new byte[serialPort.getInputStream().available()]; int len = serialPort.getInputStream().read(buffer); System.out.println("Received " + len + " bytes: " + new String(buffer)); } catch (Exception e) { System.out.println("Error: " + e); } } } } ``` 这个例子实现了一个SerialPortThread类,它可以监听一个串口并在收到数据时打印出来。要使用它,你可以在你的应用程序中创建多个SerialPortThread对象并调用start()方法来开始监听串口。例如: ``` SerialPortThread port1 = new SerialPortThread("/dev/ttyUSB0", 9600); SerialPortThread port2 = new SerialPortThread("/dev/ttyUSB1", 9600); port1.start(); port2.start(); ``` 这将创建两个SerialPortThread实例并开始监听/dev/ttyUSB0和/dev/ttyUSB1串口。在运行时,你将看到在多个线程中同时接收串口数据的输出。记得在程序结束时调用stop()方法来停止所有线程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值