java 串口 接收地䠙数据 demo
时间: 2023-08-09 21:05:05 浏览: 234
以下是一个简单的 Java 串口接收数据的示例代码:
```java
import java.io.IOException;
import java.io.InputStream;
import java.util.Enumeration;
import gnu.io.CommPortIdentifier;
import gnu.io.SerialPort;
import gnu.io.SerialPortEvent;
import gnu.io.SerialPortEventListener;
public class SerialReader implements SerialPortEventListener {
SerialPort serialPort;
public void initialize() {
CommPortIdentifier portId = null;
Enumeration portEnum = CommPortIdentifier.getPortIdentifiers();
while (portEnum.hasMoreElements()) {
CommPortIdentifier currPortId = (CommPortIdentifier) portEnum.nextElement();
if (currPortId.getName().equals("/dev/ttyUSB0")) { // 串口名称
portId = currPortId;
break;
}
}
if (portId == null) {
System.out.println("Could not find COM port.");
return;
}
try {
serialPort = (SerialPort) portId.open(this.getClass().getName(), 2000);
serialPort.setSerialPortParams(9600, SerialPort.DATABITS_8, SerialPort.STOPBITS_1, SerialPort.PARITY_NONE);
InputStream in = serialPort.getInputStream();
serialPort.addEventListener(this);
serialPort.notifyOnDataAvailable(true);
} catch (Exception e) {
System.err.println(e.toString());
}
}
public synchronized void close() {
if (serialPort != null) {
serialPort.removeEventListener();
serialPort.close();
}
}
public synchronized void serialEvent(SerialPortEvent oEvent) {
if (oEvent.getEventType() == SerialPortEvent.DATA_AVAILABLE) {
try {
int available = serialPort.getInputStream().available();
byte chunk[] = new byte[available];
serialPort.getInputStream().read(chunk, 0, available);
String str = new String(chunk);
System.out.print(str);
} catch (Exception e) {
System.err.println(e.toString());
}
}
}
public static void main(String[] args) {
SerialReader reader = new SerialReader();
reader.initialize();
}
}
```
这个示例程序使用 RXTXcomm 库来进行串口通信,需要先在系统中安装这个库。
该程序通过枚举系统中所有串口,找到指定名称的串口,然后打开串口并设置参数,最后监听串口数据并输出到控制台。你可以根据自己的需求进行修改和扩展。
阅读全文