现在聊到Java大多都是各种企业应用、互联网应用等,用的都是Spring全家桶系列。最近在某项目中用到了串口通信技术,因此写下此文聊聊相对比较冷门的技术。由于公司项目团队都是用Java开发,因此选型时首选Java相关组件。经过一番学习了解,发现现在的Java实现串口通信是如此简单。
JACOB一个Java-COM中间件。通过这个组件你可以在Java应用程序中调用COM组件和Win32程序库。
NRJavaSerial是Java实现的串口通信组件,是RXTXX项目的分支。
下面开始介绍串口通信的简单实现。
下载JACOB,这里使用的是1.19版本。下载完成后,将jacob-1.19-x64.dll文件复制到jdk的bin目录下(如果是32位jdk则是jacob-1.19-x86.dll)。
新建项目,将JACOB的jar包复制到项目的lib目录下,添加Maven依赖:
<dependency>
<groupId>com.neuronrobotics</groupId>
<artifactId>nrjavaserial</artifactId>
<version>5.2.1</version>
</dependency>
<dependency>
<groupId>com.jacob</groupId>
<artifactId>jacob</artifactId>
<version>1.19</version>
<scope>system</scope>
<systemPath>${basedir}/lib/jacob.jar</systemPath>
</dependency>
下发串口指令样例:
// port为串口名,baudRate为波特率
NRSerialPort nrSerialPort = new NRSerialPort(port, baudRate);
nrSerialPort.connect();
// 新建串口的输出流
DataOutputStream dataOutputStream = new DataOutputStream(nrSerialPort.getOutputStream());
// 下发指令,b为字节数据
dataOutputStream.write(b);
nrSerialPort.disconnect();
接收串口指令通过实现SerialPortEventListener来实现,样例代码如下:
// port为串口名,baudRate为波特率
NRSerialPort nrSerialPort = new NRSerialPort(port, baudRate);
nrSerialPort.connect();
// 新建接收命令监听器
DataInputStream dataInputStream = new DataInputStream(nrSerialPort.getInputStream());
serialReader = new SerialReader(dataInputStream);
nrSerialPort.addEventListener(serialReader);
nrSerialPort.notifyOnDataAvailable(true);
SerialReader的实现:
/**
* 串口事件监听器
*/
public static class SerialReader implements SerialPortEventListener {
private DataInputStream dataInputStream;
private byte[] buffer = new byte[128];
public SerialReader(DataInputStream dataInputStream) {
this.dataInputStream = dataInputStream;
}
@Override
public void serialEvent(SerialPortEvent serialPortEvent) {
int data;
int len = 0;
try {
while ((data = dataInputStream.read()) > -1) {
buffer[len++] = (byte) data;
}
byte[] tmp = ArrayUtils.subarray(buffer, 0, len);
log.info("接收到串口消息: {}", tmp);
} catch (Exception e) {
log.error("SerialReader exception: {}", e.getMessage());
}
}
}
以上是Java实现串口通信的基础代码样例,如果需要完整可运行代码,请加关注私信我。如果有同行的朋友或者从事Java开发的朋友也可关注我多交流,谢谢!
好了,这篇文章的内容营销圈就和大家分享到这里,如果大家对网络推广引流和网络创业项目感兴趣,可以添加微信:Sum8338 备注:营销圈引流学习,我拉你进直播课程学习群,每周135晚上都是有实战的推广引流技术和网络创业项目课程分享,当然是免费学!
版权声明:本站部分文章来源互联网用户自发投稿,主要目的在于分享信息,版权归原作者所有,不承担相关法律责任。如有侵权请联系我们反馈邮箱yingxiaoo@foxmail.com,我们将在7个工作日内进行处理,如若转载,请注明本文地址:https://www.yingxiaoo.com/145034.html