java串口接受数据
时间: 2023-10-26 22:16:23 浏览: 81
串口接收数据
3星 · 编辑精心推荐
Java 中实现串口接收数据,需要使用 Java Comm API。下面是一个简单的例子:
```java
import java.io.InputStream;
import java.util.Enumeration;
import gnu.io.CommPortIdentifier;
import gnu.io.SerialPort;
public class SerialPortReader implements Runnable {
SerialPort serialPort;
private static final String PORT_NAME = "COM3";
private static final int TIME_OUT = 2000;
private static final int DATA_RATE = 9600;
public void initialize() {
CommPortIdentifier portId = null;
Enumeration portEnum = CommPortIdentifier.getPortIdentifiers();
while (portEnum.hasMoreElements()) {
CommPortIdentifier currPortId = (CommPortIdentifier) portEnum.nextElement();
if (PORT_NAME.equals(currPortId.getName())) {
portId = currPortId;
break;
}
}
if (portId == null) {
System.out.println("Could not find COM port.");
return;
}
try {
serialPort = (SerialPort) portId.open(this.getClass().getName(), TIME_OUT);
serialPort.setSerialPortParams(DATA_RATE, SerialPort.DATABITS_8, SerialPort.STOPBITS_1, SerialPort.PARITY_NONE);
InputStream input = serialPort.getInputStream();
(new Thread(new SerialPortReader(input))).start();
} catch (Exception e) {
System.err.println(e.toString());
}
}
public void run() {
byte[] buffer = new byte[1024];
int len = -1;
try {
while ((len = this.input.read(buffer)) > -1) {
System.out.print(new String(buffer, 0, len));
}
} catch (Exception e) {
System.err.println(e.toString());
}
}
public static void main(String[] args) {
SerialPortReader spReader = new SerialPortReader();
spReader.initialize();
}
}
```
这个例子中,我们创建了一个 SerialPortReader 类,其中包含了串口的初始化和数据接收操作。在 initialize() 方法中,我们首先获取指定的串口,然后设置串口参数,最后打开串口并获取输入流。在 run() 方法中,我们不断读取输入流中的数据,并打印出来。在 main() 方法中,我们创建了一个 SerialPortReader 对象,并调用 initialize() 方法来初始化串口和开始读取数据。
阅读全文