当前位置: 首页 > 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(); // 关闭串口}
}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【香菇带你学Mysql】Linux下Mysql8使用二进制安装包安装教程【建议收藏】
  • 案例分享—国外深色UI界面设计赏析
  • 使用 C++ 实现简单的插件系统
  • 程序员的最爱,FRP实现无公网IP的内网穿透,搭建远程服务:http、ssh、samba,基于最新FRP0.59.0版本
  • 【网络协议】网络劫持 - ARP/DNS欺骗篇
  • Windows11 WSL2 Ubuntu编译安装perf工具
  • 【C++深度探索】哈希表介绍与实现
  • 并查集-应用方向以及衍生汇总+代码实现(c++)-学习一个数据结构就会做三类大题!
  • 【QT常用技术讲解】多线程处理+全局变量处理异步事件并获取多个线程返回的结果
  • 【区块链+金融服务】广东省区域性股权市场区块链创新服务平台 | FISCO BCOS应用案例
  • git用法
  • 《Unity3D高级编程 主程手记》第四章 用户界面(六) UI 优化(上)
  • MySQL事务深度讲解
  • Unity + HybridCLR 从零开始
  • 第二十四天学习笔记2024.8.8
  • Android交互
  • Android优雅地处理按钮重复点击
  • css属性的继承、初识值、计算值、当前值、应用值
  • Java 最常见的 200+ 面试题:面试必备
  • JS函数式编程 数组部分风格 ES6版
  • Sass Day-01
  • vue2.0开发聊天程序(四) 完整体验一次Vue开发(下)
  • 关于 Cirru Editor 存储格式
  • 欢迎参加第二届中国游戏开发者大会
  • 看完九篇字体系列的文章,你还觉得我是在说字体?
  • 区块链分支循环
  • 思维导图—你不知道的JavaScript中卷
  • 深度学习之轻量级神经网络在TWS蓝牙音频处理器上的部署
  • const的用法,特别是用在函数前面与后面的区别
  • Java性能优化之JVM GC(垃圾回收机制)
  • Spring第一个helloWorld
  • ​第20课 在Android Native开发中加入新的C++类
  • # 数论-逆元
  • #快捷键# 大学四年我常用的软件快捷键大全,教你成为电脑高手!!
  • $.extend({},旧的,新的);合并对象,后面的覆盖前面的
  • (09)Hive——CTE 公共表达式
  • (10)STL算法之搜索(二) 二分查找
  • (30)数组元素和与数字和的绝对差
  • (二)Pytorch快速搭建神经网络模型实现气温预测回归(代码+详细注解)
  • (附源码)springboot掌上博客系统 毕业设计063131
  • (附源码)ssm旅游企业财务管理系统 毕业设计 102100
  • (强烈推荐)移动端音视频从零到上手(上)
  • (四)库存超卖案例实战——优化redis分布式锁
  • (贪心) LeetCode 45. 跳跃游戏 II
  • (转)大道至简,职场上做人做事做管理
  • **PHP分步表单提交思路(分页表单提交)
  • .config、Kconfig、***_defconfig之间的关系和工作原理
  • .NET Reactor简单使用教程
  • .NET 程序如何获取图片的宽高(框架自带多种方法的不同性能)
  • .NET/C# 反射的的性能数据,以及高性能开发建议(反射获取 Attribute 和反射调用方法)
  • .Net高阶异常处理第二篇~~ dump进阶之MiniDumpWriter
  • .NET构架之我见
  • .net通过类组装数据转换为json并且传递给对方接口
  • @RequestMapping 的作用是什么?
  • [20150629]简单的加密连接.txt