tp官方正版下载 SpringBoot中集成串口通信的项目实践

发布日期:2025-04-29 14:20    点击次数:110

串口通信介绍 串口通信是一种按位发送和接收字节的简单概念,尽管比并行通信慢,但串口可以同时使用一根线发送数据和接收数据。串口通信简单且能够实现远距离通信,例如,串口的长度可达1200米,而并行通信的长度限制为20米.串口通常用于ASCII码字符的传输,通信使用地线、发送线和接收线三根线完成。重要的参数有波特率、数据位、停止位和奇偶校验。

波特率

这是一个衡量符号传输速率的参数。指的是信号被调制以后在单位时间内的变化,即单位时间内载波参数变化的次数,如每秒钟传送240个字符,而每个字符格式包含10位(1个起始位,1个停止位,8个数据位),这时的波特率为240Bd,比特率为10位240个/秒=2400bps。一般调制速率大于波特率,比如通常电话线的波特率为14400,28800和36600。波特率可以远远大于这些值,但是波特率和距离成反比。高波特率常常用于放置的很近的仪器间的通信,典型的例子就是GPIB设备的通信

数据位

这是衡量通信中实际数据位的参数。当计算机发送一个信息包,实际的数据往往不会是8位的,标准的值是6、7和8位。如何设置取决于你想传送的信息。比如,标准的ASCII码是0~127(7位)。扩展的ASCII码是0~255(8位)。如果数据使用简单的文本(标准 ASCII码),那么每个数据包使用7位数据。每个包是指一个字节,包括开始/停止位,数据位和奇偶校验位。由于实际数据位取决于通信协议的选取,tp钱包官网下载app术语“包”指任何通信的情况。

停止位

用于表示单个包的最后一位。典型的值为1, tokenpocket下载1.5和2位。由于数据是在传输线上定时的,并且每一个设备有其自己的时钟,很可能在通信中两台设备间出现了小小的不同步。因此停止位不仅仅是表示传输的结束,并且提供计算机校正时钟同步的机会。适用于停止位的位数越多,不同时钟同步的容忍程度越大,但是数据传输率同时也越慢。

奇偶校验位

在串口通信中一种简单的检错方式。有四种检错方式:偶、奇、高和低。当然没有校验位也是可以的。对于偶和奇校验的情况,串口会设置校验位(数据位后面的一位),用一个值确保传输的数据有偶个或者奇个逻辑高位。例如,如果数据是011,那么对于偶校验,校验位为0,保证逻辑高的位数是偶数个。如果是奇校验,校验位为1,这样就有3个逻辑高位。高位和低位不真正的检查数据,简单置位逻辑高或者逻辑低校验。这样使得接收设备能够知道一个位的状态,有机会判断是否有噪声干扰了通信或者是否传输和接收数据是否不同步。

开始集成

组件介绍

对于Java集成串口通信,常见的选择有 原生Java串口通信API、RXTX库、jSerialComm库,

原生Java串口通信API只支持到Java6版本,后续便不再维护,所以不推荐使用RXTX库是过去主流开发串口通信使用的依赖组件,但是由于需要在jvm包中添加指定的依赖组件,其次,RXTX的稳定性和兼容性可能存在一些问题,且仅维护至Jdk8版本,后续不再持续维护了,所以本次也不考虑使用它所以本次采用的是jSerialComm库,以下是jSerialComm库的一些主要特点和功能:跨平台支持:jSerialComm可以在多个操作系统上使用,包括Windows、Linux和MacOS等。多串口支持:它可以同时管理多个串口,通过获取和管理已连接的串口列表,方便选择和使用特定的串口。简单的API:jSerialComm提供了简洁易用的API,使串口的打开、读取、写入和关闭等操作变得简单和直观。支持异步读取:可以使用回调函数或监听器来异步读取串口数据,实现非阻塞的读取操作。高性能:jSerialComm使用了底层的串口通信库,具有高效的读写性能,适用于处理大量的串口数据。可靠性和稳定性:它经过了充分测试和优化,具有良好的稳定性和可靠性,能够处理各种串口通信场景。开源免费:jSerialComm是一个开源库,使用MIT许可证,可以免费使用和修改。

Maven依赖导入

配置类

创建一个 SerialConfig 用于定义串口通用信息配置

串口工具类

准备一个SerialService 用于创建串口,关闭串口,收发消息

串口业务类使用

基于以上的工具类就已经可以对串口通信进行开发了,以下是使用案例

1.创建串口连接

可以使用监听器方式接收数据,但是需要进行绑定,后续会介绍

2.关闭串口连接

3.定时发送串口数据

4.周期性读取串口数据

5.监听式读取串口数据

监听式读取数据使用的是非阻塞行读取数据,有数据就会触发创建一个监听器

给串口连接进行绑定监听器

需要注意的是监听器接收数据和定时接收数据选取其中一个就好了

https://www.btppai.com

到此这篇关于SpringBoot中集成串口通信的项目实践的文章就介绍到这了,更多相关SpringBoot 串口通信内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!