一、JSerialComm 简介
JSerialComm 是一款专为 Java 设计的串口通信库,与传统串口通信库相比,它的 API 简洁直观,上手容易。同时,JSerialComm 在跨平台支持方面表现卓越,无论是 Windows、Linux 还是 macOS 系统,都能轻松实现串口通信功能。这使得开发者能够将更多精力投入到业务逻辑的开发中,无需为不同系统下串口通信的差异而烦恼。
二、添加 JSerialComm 依赖
(一)Maven 项目
在pom.xml
文件中加入如下依赖项,Maven 会自动从中央仓库下载所需的库文件及其依赖:
<dependency>
<groupId>com.fazecast\</groupId>
<artifactId>jSerialComm\</artifactId>
<version>2.6.2\</version>
</dependency>
(二)Gradle 项目
在build.gradle
文件中添加以下代码,Gradle 会负责依赖的获取与管理:
implementation 'com.fazecast:jSerialComm:2.6.2'
(三)手动添加
若不使用构建工具,可从 JSerialComm 的官方网站或 Maven 中央仓库直接下载jSerialComm
的 JAR 包。在 Java 项目中,通过项目的构建路径设置,将该 JAR 包添加到库引用列表里,即可完成手动添加依赖。
三、检测可用串口
使用 JSerialComm 检测系统中可用串口的代码如下:
import com.fazecast.jSerialComm.SerialPort;
public class SerialPortDetectionJSerialComm {
public static void main(String\[] args) {
SerialPort\[] ports = SerialPort.getCommPorts();
for (SerialPort port : ports) {
System.out.println("可用串口: " + port.getSystemPortName());
}
}
}
在这段代码中,SerialPort.getCommPorts()
方法发挥了核心作用,它会扫描系统,获取所有可用的串口对象,并将其存储在一个数组中。之后,通过遍历该数组,我们能够获取每个串口的系统端口名称。例如,在 Windows 系统中可能是COM1
、COM2
等,在 Linux 系统中可能是/dev/ttyUSB0
等。如此一来,开发者便能清晰地了解当前系统中可供使用的串口资源。
四、打开串口并设置参数
(一)获取串口对象
首先,要根据指定的串口名称获取对应的SerialPort
对象:
SerialPort serialPort = SerialPort.getCommPort(portName);
if (serialPort == null) {
System.out.println("指定的串口不存在");
return;
}
通过SerialPort.getCommPort(portName)
方法尝试获取指定名称的串口对象,如果返回值为null
,表明系统中不存在该名称的串口,程序会给出相应提示并终止后续操作。
(二)设置串口参数
获取到串口对象后,便可设置其通信参数,如波特率、数据位、停止位和奇偶校验等。以设置波特率为例:
int baudRate = 9600;
serialPort.setBaudRate(baudRate);
这段代码将串口的波特率设置为 9600,波特率决定了数据传输的速率。在实际应用中,需根据与串口通信的设备所支持的波特率进行设置,常见的波特率还有 4800、115200 等。
(三)打开串口
一切准备就绪后,尝试打开串口:
if (serialPort.openPort()) {
System.out.println("串口打开成功");
// 在此处可进行数据的读写操作
} else {
System.out.println("串口打开失败");
}
通过serialPort.openPort()
方法尝试打开串口,如果返回值为true
,表示串口成功打开,此时可以进行数据的读写操作;若返回false
,则说明串口打开失败,可能是由于串口被其他程序占用、权限不足等原因导致。
五、数据读写操作
(一)读取数据
从串口读取数据通常在一个单独的线程中进行,以避免阻塞主线程:
import com.fazecast.