当前位置: 首页 > news >正文

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(); // 关闭串口}
}
http://www.lryc.cn/news/427280.html

相关文章:

  • 江协科技STM32学习笔记(第10章 SPI通信)
  • 力扣热题100_回溯_22_括号生成
  • 【k8s】ubuntu24.04 containerd 手动从1.7.15 换为1.7.20
  • Java二十三种设计模式-备忘录模式(19/23)
  • js一些杂乱理解
  • 机器学习 之 线性回归算法
  • ThreadLoad如何防止内存溢出
  • 2024.8.19 学习记录 —— 作业
  • Java 阿里云视频直播开发流程
  • SQLite 轻量级的嵌入式关系型数据库的替代软件
  • Flutter-自适用高度PageView
  • 群晖NAS本地搭建可远程交互的大型语言模型LLM聊天机器人
  • TypeScript 构建工具之 webpack
  • conda环境下在pycharm中调试scrapy项目
  • contenteditable=“true“的标签限制字数的时候修改光标位置
  • 51单片机-LED灯蜂鸣器数码管按键DS18B20温度传感器
  • 笔记本一线品牌有哪些
  • mysql聚合函数和分组
  • ubuntu20.04+RealSenseD455
  • WAF绕过技巧
  • HarmonyOS应用三之组件生命周期和参数传递
  • [Qt][Qt 网络][上]详细讲解
  • 读零信任网络:在不可信网络中构建安全系统21读后总结与感想兼导读
  • Java基础——注释
  • Redis未授权访问漏洞利用合集
  • 基于asp.net的在线考试系统、基于c#的在线考试管理系统
  • 将 hugo 博客搬迁到服务器
  • 【Datawhale AI夏令营第四期】 魔搭-大模型应用开发方向笔记 Task04 RAG模型 人话八股文Bakwaan_Buddy项目创空间部署
  • CTF密码学小结
  • Vue快速入门(七)——Vue3 状态管理 - Pinia(二)