Spring boot 使用 jSerialComm 对串口使用发送信息并接收

什么是 jSerialComm?

jSerialComm 是一个 Java 库,旨在提供一种独立于平台的方式来访问标准串行端口,而无需外部库、本机代码或任何其他工具。它旨在替代 RxTx 和(已弃用的)Java Communications API,具有更高的易用性、对超时的增强支持以及同时打开多个端口的能力。

官方网站

http://fazecast.github.io/jSerialComm/

jar包信息

jSerialComm.jar文件地址
maven jar 包 引入,在项目根目录引入lib 将jar包放在下面

<dependency>
	<groupId>jSerialComm</groupId>
	<artifactId>jSerialComm</artifactId>
	<systemPath>${project.basedir}/lib/jSerialComm-2.11.0.jar</systemPath>
	<version>2.11.0</version>
	<scope>system</scope>
</dependency>

如何在我自己的项目中使用这个库?

此库最方便的功能之一是,它允许您简单地将JAR 文件包含在自定义项目中,它将自动选择并加载适合您的平台和架构的正确本机库。因此,您只需将 jSerialComm.jar 文件复制到项目目录中并链接到它(就像链接到任何其他 JAR 文件一样)即可使用此库。

要访问项目中库的内容,请确保将其import com.fazecast.jSerialComm.*放入 Java 文件中。然后,您可以通过调用以下静态方法生成系统上所有可用串行端口(真实或虚拟)的列表:

SerialPort.getCommPorts()

这将返回一个 SerialPort 对象数组,您可以对其进行迭代。有关此库及其方法的完整概述,请参阅Javadoc 库参考。或者,如果您已经知道要使用的端口的端口描述符(例如,“/dev/ttyS0”或“COM3”),或者如果您将此库与伪终端一起使用(例如,“/dev/pts/14”),则可以使用以下静态方法创建 SerialPort 对象:

SerialPort.getCommPort(String portDescriptor)

Linux 用户须知:在 Linux 中,串行端口访问仅限于某些用户和组。要启用用户访问,您必须打开终端并输入以下命令,然后 jSerialComm 才能访问系统上的端口。如果某些命令失败,请不要担心。并非所有 Linux 发行版都存在所有这些组。(请注意,此过程只能对每个用户执行一次):

sudo usermod -a -G uucp username
sudo usermod -a -G dialout username
sudo usermod -a -G lock username
sudo usermod -a -G tty username

具体方法很简单, 打开对应的串口,对应波特率 去收发数据就可以了

package org.gateway.controller;
import com.fazecast.jSerialComm.SerialPort;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class TestController {
    @GetMapping("/test")
    public void test3() throws InterruptedException {
        SerialPort comPort = SerialPort.getCommPorts()[0]; // 获取第一个可用的串口
        comPort.openPort(); // 打开串口
        comPort.setBaudRate(9600); // 设置波特率
        Thread.sleep(2000);
        // 发送数据
        String message = "opens";
        comPort.writeBytes(message.getBytes(), message.length());
        Thread.sleep(500);
        // 读取数据
        byte[] readBuffer = new byte[1024];
        int numRead = comPort.readBytes(readBuffer, readBuffer.length);
        if (numRead > 0) {
            System.out.println("Received: " + new String(readBuffer, 0, numRead));
        }

        comPort.closePort(); // 关闭串口
    }
}

  • 13
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值