JavaFX串口通信之JSerialComm详解

一、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 系统中可能是COM1COM2等,在 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.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值