Java提供了一些API来支持串口通信。主要包括:
javax.comm:Java Communications API,是一个用于串行通信的Java API。然而,这个API已经很长时间没有更新了,而且只支持32位的Windows系统。官网已经删。
RXTX:是一个跨平台的串口通信API,提供了Java的接口,并且支持Windows、Linux、Mac等多个操作系统32位、64位都支持,开源。下载 - Rxtx (qbang.org) java 9及以上不支持。
nrjavaserial:这是RXTX项目的一个分支,并修复了相关bug,重点是 易于使用和嵌入到其他库中。库文件和dll都打包到一个文件里了,不需要再复制dll等操作了。GitHub - NeuronRobotics/nrjavaserial:A Java Serial Port system。这是 RXTX 项目的一个分支,用于本机代码的 jar 加载。
nrjavaserial
import gnu.io.NRSerialPort;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
public class RXTXtest2 {
public static void main(String[] args) {
for(String s:NRSerialPort.getAvailableSerialPorts()){
System.out.println("Availible port: "+s);
}
String port = "COM1";
int baudRate = 9600;
NRSerialPort serial = new NRSerialPort(port, baudRate);
serial.connect();
DataInputStream ins = new DataInputStream(serial.getInputStream());
DataOutputStream outs = new DataOutputStream(serial.getOutputStream());
byte b = 0;
while (true) {
try {
b = (byte) ins.read();
//System.out.println(b);
if(b!=-1)outs.write(b);
} catch (IOException e) {
e.printStackTrace();
}
}
// serial.disconnect();
}
}
以下别用-------------------------------------------------------------------------------------------------------
RXTX示例
java 8正常 。java 11还崩溃。