CN114629597B - 一种应用于串口的可靠传输方法和系统 - Google Patents
一种应用于串口的可靠传输方法和系统 Download PDFInfo
- Publication number
- CN114629597B CN114629597B CN202210284354.8A CN202210284354A CN114629597B CN 114629597 B CN114629597 B CN 114629597B CN 202210284354 A CN202210284354 A CN 202210284354A CN 114629597 B CN114629597 B CN 114629597B
- Authority
- CN
- China
- Prior art keywords
- data
- terminal
- frame
- connection
- request
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 230000005540 biological transmission Effects 0.000 title claims abstract description 78
- 238000000034 method Methods 0.000 title claims abstract description 45
- 230000004044 response Effects 0.000 claims description 78
- 230000008569 process Effects 0.000 claims description 14
- 230000000977 initiatory effect Effects 0.000 claims description 13
- 125000004122 cyclic group Chemical group 0.000 claims description 10
- 230000002159 abnormal effect Effects 0.000 claims description 8
- 230000009191 jumping Effects 0.000 claims description 3
- 238000004806 packaging method and process Methods 0.000 claims description 3
- 238000012795 verification Methods 0.000 abstract description 3
- 230000007246 mechanism Effects 0.000 abstract description 2
- 230000006854 communication Effects 0.000 description 5
- 238000004891 communication Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 5
- 238000012545 processing Methods 0.000 description 3
- 230000007175 bidirectional communication Effects 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000013524 data verification Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/004—Arrangements for detecting or preventing errors in the information received by using forward error control
- H04L1/0041—Arrangements at the transmitter end
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/0078—Avoidance of errors by organising the transmitted data in a format specifically designed to deal with errors, e.g. location
- H04L1/0083—Formatting with frames or packets; Protocol or part of protocol for error control
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/08—Arrangements for detecting or preventing errors in the information received by repeating transmission, e.g. Verdan system
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/12—Arrangements for detecting or preventing errors in the information received by using return channel
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Communication Control (AREA)
- Detection And Prevention Of Errors In Transmission (AREA)
Abstract
本发明公开一种应用于串口的可靠传输方法和系统,方法包括以下步骤:S1:在需要通过串口进行数据传输的终端间通过数据帧发送连接请求,建立连接;S2:在连接状态下,发送数据的终端将需要发送的数据封装成数据帧进行传输,接收数据的终端将接收到的数据帧进行检验后,获得传输的数据;S3:任一终端发起断开请求,断开终端间的连接状态。本发明在嵌入式设备的两端建立一个状态连接,在连接状态下,对发送的数据封装成帧,添加对数据的校验,实现数据帧的重传机制,以保证用户数据的完整、正确和无损坏传输。
Description
技术领域
本发明涉及数据传输领域,更具体地,涉及一种应用于串口的可靠传输方法和系统。
背景技术
许多嵌入式设备之间的通信往往只采用原生的串口协议进行通信,而原生的串口协议无法保证数据的可靠传输,且无法获知数据的发送状态(成功或失败),在设备或传输线受到干扰时,容易导致数据的损坏和丢失,特别在一些物联网数据的采集传输场景下(如智能驾驶、智能安防等),数据的实时性和可靠性尤为重要,原生的串口协议无法满足这些场景的应用。
现有技术中公开一种基于嵌入式设备的远程通信控制系统,嵌入式设备与底层工业设备双向通信,嵌入式端接收来自于底层工业设备的运行数据并处理,并将从服务端收到的控制指令发送到底层工业设备中;云服务器开启相应的端口与嵌入式端的网口双向通信,接收从嵌入式端发送来的底层工业设备的运行数据,并将从远端外部主机获取到的控制指令下发到嵌入式端;外部主机与云服务器的相应端口双向通信,外部主机将设备控制软件的控制指令通过数据链路发送至云服务器上,并接收云服务器转发而来的底层工业设备的运行数据,嵌入式端包括用户信息管理模块、可视化配置与监控模块、协议转换通信模块、资源调度功能模块、日志记录模块。该方案依然无法获知数据的发送状态,传输不可靠。
发明内容
本发明的首要目的是提供一种应用于串口的可靠传输方法,解决原生串口协议传输的不可靠性。
本发明的进一步目的是提供一种应用于串口的可靠传输系统。
为解决上述技术问题,本发明的技术方案如下:
一种应用于串口的可靠传输方法,包括以下步骤:
S1:在需要通过串口进行数据传输的终端间通过数据帧发送连接请求,建立连接;
S2:在连接状态下,发送数据的终端将需要发送的数据封装成数据帧进行传输,接收数据的终端将接收到的数据帧进行检验后,获得传输的数据;
S3:任一终端发起断开请求,断开终端间的连接状态。
优选地,所述数据帧包括帧头、帧标志、数据、帧校验和帧尾,其中:
帧头占用一个字节大小,值固定为0XDF;
帧标志占用一个字节大小,但只使用一个字节的后5个bit,前3个bit预留均为0,后5位bit依次为TAL、ACK、CON、RST、SHT,TAL表示原始数据被分帧后的最后一个帧,ACK表示该帧包含应答消息,CON表示发起连接请求,RST表示请求重置连接,SHT表示请求关闭连接;
数据最大占用255字节,上层原始数据大于255字节则会被分帧;原始数据中若包含协议中的特殊字符,则会在该字符前插入转义字符0XFE进行传输,即特殊字符在数据中表示为转义字符+特殊字符的形式;
帧校验占用2字节,采用循环冗余法计算从帧标志到数据共2个部分的全部字节得到两个字节进行填充;
帧尾占用一个字节大小,值固定为0XFF。
优选地,所述步骤S1中在需要进行数据传输的终端间建立连接,具体为:
S11:第一终端向第二终端发起连接请求,连接请求的帧标志的CON位和TAL位置为1;
S12:第一终端接收第二终端返回的第一应答消息,第一终端转为连接状态,第一应答消息的帧标志ACK位和TAL位置为1;
S13:第一终端发送第二应答消息至第二终端,第二终端收到第二应答消息后转为连接状态,第二应答消息的帧标志ACK位和TAL位置为1。
优选地,所述步骤S11中,第一终端经过预设的等待时间内未收到第二终端的第一应答消息,则认为连接请求丢失,第一终端重新发送连接请求,最多进行4次重发,每次重发后的等待时间依次增加,第4次重发之后仍为收到第一应答消息,则取消连接请求,返回错误至上层调用者。
优选地,当第一终端在连接状态,第二终端在非连接状态时,执行以下步骤:
第一终端发送非连接请求的任意帧至第二终端;
第一终端接收第二终端返回的请求重置连接帧;
第一终端发送建立连接的应答消息至第二终端,应答消息的ACK位和TAL位置为1,第二终端收到应答消息后,转为连接状态,若第二终端经过一定时间内未收到应答消息,则认为消息丢失,将进行重新发送,最多进行4次重发,等待时间间隔为固定值,当第4次重发之后如果未收到应答,则取消该请求并结束流程,此时仍保持非连接状态。
优选地,当第一终端处于非连接状态,第二终端在连接状态时,执行以下步骤:
第一终端发送连接请求至第二终端;
第一终端接收第二终端返回的请求重置连接帧,第一终端转为连接状态,若第一终端经过一定时间内未收到第二终端的请求重置连接帧,则认为消息丢失,将进行重新发送,最多进行4次重发,等待的时间间隔依次增加,当第4次重发之后如果未收到应答,则取消连接请求,并返回错误给上层调用者;
第一终端发送建立连接的应答消息至第二终端,若第二终端经过一定时间内未收到第一终端的应答消息,则认为消息丢失,将进行重新发送,最多进行4次重发,等待时间间隔为固定值,当第4次重发之后如果未收到应答,则取消该请求并结束流程,此时第二终端转为非连接状态。
优选地,所述步骤S2中发送数据的终端将需要发送的数据封装成数据帧进行传输,具体为:
S201:由上层调用者传入原始数据;
S202:检查终端件是否已经连接,未建立连接则返回错误给上层调用者并退出发送流程,已建立连接则进入S203;
S203:检查数据是否大于255字节,若大于255字节则取数据的前255个字节并进入S204,若小于255字节则将帧标志中的TAL位置1再进入S204;
S204:替换S203传入的数据中的特殊字符为转义字符+特殊字符的形式;
S205:检查是否存在已从另一个终端接收了数据帧但未进行应答的情况,是则将帧标志中的ACK位置1,将应答帧与该帧合并;否则直接进入S206;
S206:使用循环冗余法计算从帧标志到数据共2个部分的全部字节得到两个字节对帧校验部分进行填充;
S207:对该帧添加帧头0XDF和帧尾0XFF;
S208:将封装完成的帧进行发送;
S209:此时从帧发送之后开始计时,若在一定的等待时间内未收到应答,则进行重发,等待时间间隔为固定值发送的次数最多为5次,若超过5次则返回错误给上层调用者并退出发送流程,此时该终端转为非连接状态;若在等待时间内收到应答,则进入S2010;
S2010:检查是否剩余有未发送的数据,若有则跳转到S203继续流程;否则结束流程。
优选地,所述步骤S2中接收数据的终端将接收到的数据帧进行检验后,具体为:
S211:从串口接收一个包含帧头帧尾边界的完整的数据帧;
S212:使用循环冗余法计算从帧标志到数据共2个部分的全部字节得到两个字节,与该帧的帧校验数据进行对比,若一致则进入S213,否则丢弃该帧退出流程;
S213:检验该帧的帧标志ACK位是否为1,是则标志发送给另一终端的上一帧数据已经被收到;否则直接进入S214;
S214:检验该帧的帧标志TAL位是否为1,是则将数据存入缓存区末尾,进入S215;否则将数据存入缓存区末尾后退出流程;
S215:将缓存区所有数据提供至上层调用;
S216:清空缓存区,结束流程。
优选地,所述步骤S3中断开终端间的连接,分为正常断开和异常断开,正常断开具体为:
S31:任意一终端发起第一断开请求至另一终端,第一断开请求的SHT位和TAL位置为1;
S32:发起第一断开请求的终端收到另一终端返回的第三应答消息;
S33:发起第一断开请求的终端收到另一终端返回的第二断开请求,第二断开请求的SHT位和TAL位置为1;
S34:发起第一断开请求的终端发送第四应答消息至另一终端,发起第一断开请求的终端转为非连接状态;另一终端收到第四应答消息后,另一终端转为非连接状态;
异常断开具体为:
在发送数据的流程中,若出现重发次数大于等于五次的情况,则发送数据的终端,自动转为未连接状态;接收端并未被影响,仍保持连接状态。
一种应用于串口的可靠传输系统,包括:
连接模块,所述连接模块用于在需要进行数据传输的终端间通过数据帧发送连接请求,建立连接;
传输模块,所述传输模块用于在连接状态下,发送数据的终端将需要发送的数据封装成数据帧进行传输,接收数据的终端将接收到的数据帧进行检验后,获得传输的数据;
断开模块,所述断开模块用于在数据传输完成后,断开终端间的连接。
与现有技术相比,本发明技术方案的有益效果是:
1)本发明具有连接状态,可以确定两个通信设备都具有发送和接收数据的能力,本发明相对原生的串口协议添加了连接状态,即在数据传输之前需要在两个设备终端之间建立连接,而连接是需要通过两个设备终端互发互收消息来确定建立的,确保了在建立连接之后双终端都有发送的接收的能力,否则无法正常建立连接和传输数据;任一设备在发送数据时,若出现错误,则会转为非连接状态,表示无法该设备或另一设备的数据收发出现问题。1
2)本发明具有数据校验功能,可保证数据的准确无损坏传输,本发明在每个数据帧上携带了帧校验码,该校验码可以对帧标志和数据进行比较,若一致则表示数据在传输过程中没有发生损坏,可以保留该数据;否则丢弃该数据。
3)本发明具有数据帧的接收确认功能和数据帧的超时重发功能,提高了数据发送的容错率,本发明会对发送端发送的数据进行接收应答反馈,即通知发送端已接收到上一帧数据,若数据帧传输过程中丢失,发送端未收到应答反馈,则会进行一定次数的数据帧重发,提高了数据帧发送失败的容错率。
4)本发明可获知数据的发送状态,可供上层调用者进行相应处理,本发明可在数据帧发送之后,获知数据帧的发送状态,即可获知数据是否发送成功,若发送失败则会返回错误给上层调用者,从而通知上层调用者进行相应的错误处理。
附图说明
图1为本发明的方法流程示意图。
图2为在需要进行数据传输的终端间建立连接流程示意图。
图3为当第一终端在连接状态,第二终端在非连接状态时,终端间建立连接流程示意图。
图4为当第一终端在非连接状态,第二终端在连接状态时,终端间建立连接流程示意图。
图5为发送数据的流程示意图。
图6为数据接收流程示意图。
图7为两个终端正常断开的流程示意图。
图8为本发明的系统模块示意图。
具体实施方式
附图仅用于示例性说明,不能理解为对本专利的限制;
为了更好说明本实施例,附图某些部件会有省略、放大或缩小,并不代表实际产品的尺寸;
对于本领域技术人员来说,附图中某些公知结构及其说明可能省略是可以理解的。
下面结合附图和实施例对本发明的技术方案做进一步的说明。
实施例1
本实施例提供一种应用于串口的可靠传输方法,如图1所示,包括以下步骤:
S1:在需要通过串口进行数据传输的终端间通过数据帧发送连接请求,建立连接;
S2:在连接状态下,发送数据的终端将需要发送的数据封装成数据帧进行传输,接收数据的终端将接收到的数据帧进行检验后,获得传输的数据;
S3:任一终端发起断开请求,断开终端间的连接状态。
在具体实施过程中,本实施例在嵌入式设备的两端建立一个状态连接,在连接状态下,对发送的数据封装成帧,添加对数据的校验,实现数据帧的重传机制,以保证用户数据的完整、正确和无损坏传输。
实施例2
本实施例在实施例1的基础上,提供数据帧的具体结构:
所述数据帧包括帧头、帧标志、数据、帧校验和帧尾,各个部分占用的字节数如表1第二行所示:
表1
帧头 | 帧标志 | 数据 | 帧校验 | 帧尾 |
1字节 | 1字节 | 最大255字节 | 2字节 | 1字节 |
帧头占用一个字节大小,值固定为0XDF;
帧标志占用一个字节大小,但只使用一个字节的后5个bit,前3个bit预留均为0,如表2所示;后5位bit依次为TAL、ACK、CON、RST、SHT,TAL表示原始数据被分帧后的最后一个帧,ACK表示该帧包含应答消息,CON表示发起连接请求,RST表示请求重置连接,SHT表示请求关闭连接;;
表2
数据最大占用255字节,上层原始数据大于255字节则会被分帧;原始数据中若包含协议中的特殊字符,则会在该字符前插入转义字符0XFE进行传输,即特殊字符在数据中表示为转义字符+特殊字符的形式;
帧校验占用2字节,采用循环冗余法计算从帧标志到数据共2个部分的全部字节得到两个字节进行填充;
帧尾占用一个字节大小,值固定为0XFF。
实施例3
本实施例在实施例1和实施例2的基础上,分别从连接、传输、断开三大部分来描述本发明。
连接主要指的是两个嵌入式设备在数据传输前的所需建立的连接,步骤图2所示:
所述步骤S1中在需要进行数据传输的终端间建立连接,具体为:
S11:第一终端向第二终端发起连接请求,连接请求的帧标志的CON位和TAL位置为1,如表3所示:
表3
S12:第一终端接收第二终端返回的第一应答消息,第一终端转为连接状态,第一应答消息的帧标志ACK位和TAL位置为1;
S13:第一终端发送第二应答消息至第二终端,第二终端收到第二应答消息后转为连接状态,第二应答消息的帧标志ACK位和TAL位置为1。
第一应答消息的数据帧和第二应答消息的数据帧如表4所示:
表4
上述流程也可以是第二终端向第一终端发起连接请求。
在连接建立的过程中,可能出现错误,下面描述几种错误的处理步骤:
在第一终端发送连接请求消息时,可能该消息会丢失,当发送后经过一定的等待时间内未收到第二终端的应答消息,则认为消息丢失,将进行重新发送,最多进行4次重发,等待的时间间隔依次增加,各个时间间隔可选择为0.1秒、0.5秒、1秒、2秒、5秒,当第4次重发之后如果仍然未收到应答,则取消连接请求,并返回错误给上层调用者;
若第一终端在等待时间内接收到了第一应答消息,则进行消息解析,格式如表4所示,若接收的消息无法解析、格式或内容出现错误,则丢弃该消息,并根据流程继续等待第一应答消息;
同理,第二终端等待第二应答消息流程如上段所示,但此时的等待时间间隔为固定值,最多进行4次重发,时间间隔可选择为0.1秒;
对于一种异常情况,当一个终端在连接状态,但另一终端在非连接状态时,例如:第一终端可正常发送数据,但第二终端无法正常接收数据,此时第一终端若发送非请求连接的任意帧给第二终端,处理流程如图3所示:
当第一终端在连接状态,第二终端在非连接状态时,执行以下步骤:
第一终端发送非连接请求(即除表3外)的任意帧至第二终端;
第一终端接收第二终端返回的请求重置连接帧,重置连接帧如表5所示:
表5
第一终端发送建立连接的应答消息至第二终端,应答消息的ACK位和TAL位置为1,第二终端收到应答消息后,转为连接状态,若第二终端经过一定时间内未收到应答消息,则认为消息丢失,将进行重新发送,最多进行4次重发,等待时间间隔为固定值,当第4次重发之后如果未收到应答,则取消该请求并结束流程,此时仍保持非连接状态。
当第一终端在非连接状态,但第二终端在连接状态时,若第一终端向第二终端发送连接请求,处理流程如图4所示:
当第一终端处于非连接状态,第二终端在连接状态时,执行以下步骤:
第一终端发送连接请求至第二终端,连接请求帧如表3所示;
第一终端接收第二终端返回的请求重置连接帧,重置连接帧如表5所示,第一终端转为连接状态,若第一终端经过一定时间内未收到第二终端的请求重置连接帧,则认为消息丢失,将进行重新发送,最多进行4次重发,等待的时间间隔依次增加,当第4次重发之后如果未收到应答,则取消连接请求,并返回错误给上层调用者;
第一终端发送建立连接的应答消息至第二终端,若第二终端经过一定时间内未收到第一终端的应答消息,则认为消息丢失,将进行重新发送,最多进行4次重发,等待时间间隔为固定值,当第4次重发之后如果未收到应答,则取消该请求并结束流程,此时第二终端转为非连接状态。
传输主要指的是两个嵌入式设备在建立连接后进行数据的双向传输,其中数据发送流程如图5所示:
所述步骤S2中发送数据的终端将需要发送的数据封装成数据帧进行传输,具体为:
S201:由上层调用者传入原始数据;
S202:检查终端件是否已经连接,未建立连接则返回错误给上层调用者并退出发送流程,已建立连接则进入S203;
S203:检查数据是否大于255字节,若大于255字节则取数据的前255个字节并进入S204,若小于255字节则将帧标志中的TAL位置1再进入S204;
S204:替换S203传入的数据中的特殊字符为转义字符+特殊字符的形式;
S205:检查是否存在已从另一个终端接收了数据帧但未进行应答的情况,是则将帧标志中的ACK位置1,将应答帧与该帧合并;否则直接进入S206;
S206:使用循环冗余法计算从帧标志到数据共2个部分的全部字节得到两个字节对帧校验部分进行填充;
S207:对该帧添加帧头0XDF和帧尾0XFF;
S208:将封装完成的帧进行发送;
S209:此时从帧发送之后开始计时,若在一定的等待时间内未收到应答,则进行重发,等待时间间隔为固定值发送的次数最多为5次,若超过5次则返回错误给上层调用者并退出发送流程,此时该终端转为非连接状态;若在等待时间内收到应答,则进入S2010;
S2010:检查是否剩余有未发送的数据,若有则跳转到S203继续流程;否则结束流程。
数据接收流程如图6所示:
所述步骤S2中接收数据的终端将接收到的数据帧进行检验后,具体为:
S211:从串口接收一个包含帧头帧尾边界的完整的数据帧;
S212:使用循环冗余法计算从帧标志到数据共2个部分的全部字节得到两个字节,与该帧的帧校验数据进行对比,若一致则进入S213,否则丢弃该帧退出流程;
S213:检验该帧的帧标志ACK位是否为1,是则标志发送给另一终端的上一帧数据已经被收到;否则直接进入S214;
S214:检验该帧的帧标志TAL位是否为1,是则将数据存入缓存区末尾,进入S215;否则将数据存入缓存区末尾后退出流程;
S215:将缓存区所有数据提供至上层调用;
S216:清空缓存区,结束流程。
断开指的是已处于连接状态的两个终端的正常断开和异常断开,正常断开如图7所示:
所述步骤S3中断开终端间的连接,分为正常断开和异常断开,正常断开具体为:
S31:任意一终端发起第一断开请求至另一终端,第一断开请求的SHT位和TAL位置为1,如表6所示:
表6
S32:发起第一断开请求的终端收到另一终端返回的第三应答消息;
S33:发起第一断开请求的终端收到另一终端返回的第二断开请求,第二断开请求的SHT位和TAL位置为1;
S34:发起第一断开请求的终端发送第四应答消息至另一终端,发起第一断开请求的终端转为非连接状态;另一终端收到第四应答消息后,另一终端转为非连接状态;
在第一终端发送第一断开请求时,可能该消息会丢失,当发送后经过一定时间内未收到第二终端2的第三应答消息,则认为消息丢失,将进行重新发送,最多进行4次重发,等待时间间隔为固定值,时间间隔可选择为0.1秒,当第4次重发之后如果未收到应答,则取消该请求并结束流程,此时自动转为非连接状态。
异常断开具体为:
在发送数据的流程中,若出现重发次数大于等于五次的情况,则发送数据的终端,自动转为未连接状态;接收端并未被影响,仍保持连接状态。
实施例4
本实施例提供一种应用于串口的可靠传输系统,如图8所示,包括:
连接模块,所述连接模块用于在需要进行数据传输的终端间通过数据帧发送连接请求,建立连接;
传输模块,所述传输模块用于在连接状态下,发送数据的终端将需要发送的数据封装成数据帧进行传输,接收数据的终端将接收到的数据帧进行检验后,获得传输的数据;
断开模块,所述断开模块发起断开请求,断开终端间的连接状态。
相同或相似的标号对应相同或相似的部件;
附图中描述位置关系的用语仅用于示例性说明,不能理解为对本专利的限制;
显然,本发明的上述实施例仅仅是为清楚地说明本发明所作的举例,而并非是对本发明的实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明权利要求的保护范围之内。
Claims (8)
1.一种应用于串口的可靠传输方法,其特征在于,包括以下步骤:
S1:在需要通过串口进行数据传输的终端间通过数据帧发送连接请求,建立连接;
S2:在连接状态下,发送数据的终端将需要发送的数据封装成数据帧进行传输,接收数据的终端将接收到的数据帧进行检验后,获得传输的数据;
S3:任一终端发起断开请求,断开终端间的连接状态;
所述数据帧包括帧头、帧标志、数据、帧校验和帧尾,其中:
帧头占用一个字节大小,值固定为0XDF;
帧标志占用一个字节大小,但只使用一个字节的后5个bit,前3个bit预留均为0,后5位bit依次为TAL、ACK、CON、RST、SHT,TAL表示原始数据被分帧后的最后一个帧,ACK表示该数据帧包含应答消息,CON表示发起连接请求,RST表示请求重置连接,SHT表示请求关闭连接;
数据最大占用255字节,上层原始数据大于255字节则会被分帧;原始数据中若包含协议中的特殊字符,则会在该特殊字符前插入转义字符0XFE进行传输,即特殊字符在数据中表示为转义字符+特殊字符的形式;
帧校验占用2字节,采用循环冗余法计算从帧标志到数据共2个部分的全部字节得到两个字节进行填充;
帧尾占用一个字节大小,值固定为0XFF;
所述步骤S1中在需要进行数据传输的终端间建立连接,具体为:
S11:第一终端向第二终端发起连接请求,连接请求的帧标志的CON位和TAL位置为1;
S12:第一终端接收第二终端返回的第一应答消息,第一终端转为连接状态,第一应答消息的帧标志ACK位和TAL位置为1;
S13:第一终端发送第二应答消息至第二终端,第二终端收到第二应答消息后转为连接状态,第二应答消息的帧标志ACK位和TAL位置为1。
2.根据权利要求1所述的应用于串口的可靠传输方法,其特征在于,所述步骤S11中,第一终端经过预设的等待时间内未收到第二终端的第一应答消息,则认为连接请求丢失,第一终端重新发送连接请求,最多进行4次重发,每次重发后的等待时间依次增加,第4次重发之后仍未收到第一应答消息,则取消连接请求,返回错误至上层调用者。
3.根据权利要求2所述的应用于串口的可靠传输方法,其特征在于,当第一终端在连接状态,第二终端在非连接状态时,执行以下步骤:
第一终端发送非连接请求的任意帧至第二终端;
第一终端接收第二终端返回的请求重置连接帧;
第一终端发送建立连接的应答消息至第二终端,应答消息的ACK位和TAL位置为1,第二终端收到应答消息后,转为连接状态,若第二终端经过一定时间内未收到应答消息,则认为请求重置连接帧丢失,将进行重发请求重置连接帧,最多进行4次重发,等待时间间隔为固定值,当第4次重发之后如果未收到应答消息,则取消该重置连接请求并结束流程,此时仍保持非连接状态。
4.根据权利要求2所述的应用于串口的可靠传输方法,其特征在于,当第一终端处于非连接状态,第二终端在连接状态时,执行以下步骤:
第一终端发送连接请求至第二终端;
第一终端接收第二终端返回的请求重置连接帧,第一终端转为连接状态,若第一终端经过一定时间内未收到第二终端的请求重置连接帧,则认为连接请求丢失,将进行重新发送,最多进行4次重发,等待的时间间隔依次增加,当第4次重发之后如果未收到第二终端的请求重置连接帧,则取消连接请求,并返回错误给上层调用者;
第一终端发送建立连接的应答消息至第二终端,若第二终端经过一定时间内未收到第一终端的应答消息,则认为请求重置连接帧丢失,将进行重新发送,最多进行4次重发,等待时间间隔为固定值,当第4次重发之后如果未收到应答消息,则取消该重置连接请求并结束流程,此时第二终端转为非连接状态。
5.根据权利要求1所述的应用于串口的可靠传输方法,其特征在于,所述步骤S2中发送数据的终端将需要发送的数据封装成数据帧进行传输,具体为:
S201:由上层调用者传入原始数据;
S202:检查终端间是否已经连接,未建立连接则返回错误给上层调用者并退出发送流程,已建立连接则进入S203;
S203:检查数据是否大于255字节,若大于255字节则取数据的前255个字节并进入S204,若小于255字节则将帧标志中的TAL位置1再进入S204;
S204:替换S203传入的数据中的特殊字符为转义字符+特殊字符的形式;
S205:检查是否存在未进行应答的消息,是则将帧标志中的ACK位置1;否则直接进入S206;
S206:使用循环冗余法计算从帧标志到数据共2个部分的全部字节得到两个字节对帧校验部分进行填充;
S207:添加帧头0XDF和帧尾0XFF;
S208:将封装完成的数据帧进行发送;
S209:此时从数据帧发送之后开始计时,若在一定的等待时间内未收到应答,则进行重发,等待时间间隔为固定值,发送的次数最多为5次,若超过5次则返回错误给上层调用者并退出发送流程,此时该发送数据的终端转为非连接状态;若在等待时间内收到应答,则进入S2010;
S2010:检查是否剩余有未发送的数据,若有则跳转到S203继续流程;否则结束流程。
6.根据权利要求5所述的应用于串口的可靠传输方法,其特征在于,所述步骤S2中接收数据的终端将接收到的数据帧进行检验,具体为:
S211:从串口接收一个包含帧头帧尾边界的完整的数据帧;
S212:使用循环冗余法计算从帧标志到数据共2个部分的全部字节得到两个字节,与该数据帧的帧校验数据进行对比,若一致则进入S213,否则丢弃该数据帧退出流程;
S213:检验该数据帧的帧标志ACK位是否为1,是则标志其发送的上一帧数据已经被收到;否则直接进入S214;
S214:检验该数据帧的帧标志TAL位是否为1,是则将数据存入缓存区末尾,进入S215;否则将数据存入缓存区末尾后退出流程;
S215:将缓存区所有数据提供至上层调用;
S216:清空缓存区,结束流程。
7.根据权利要求6所述的应用于串口的可靠传输方法,其特征在于,所述步骤S3中断开终端间的连接,分为正常断开和异常断开,正常断开具体为:
S31:任意一终端发起第一断开请求至另一终端,第一断开请求的SHT位和TAL位置为1;
S32:发起第一断开请求的终端收到另一终端返回的第三应答消息;
S33:发起第一断开请求的终端收到另一终端返回的第二断开请求,第二断开请求的SHT位和TAL位置为1;
S34:发起第一断开请求的终端发送第四应答消息至另一终端,发起第一断开请求的终端转为非连接状态;另一终端收到第四应答消息后,另一终端转为非连接状态;
异常断开具体为:
在发送数据的流程中,若出现重发次数大于五次的情况,则发送数据的终端,自动转为非连接状态;接收端并未被影响,仍保持连接状态。
8.一种应用于串口的可靠传输系统,其特征在于,包括:
连接模块,所述连接模块用于在需要进行数据传输的终端间通过数据帧发送连接请求,建立连接;
传输模块,所述传输模块用于在连接状态下,发送数据的终端将需要发送的数据封装成数据帧进行传输,接收数据的终端将接收到的数据帧进行检验后,获得传输的数据;
断开模块,所述断开模块用于在数据传输完成后,断开终端间的连接;
所述数据帧包括帧头、帧标志、数据、帧校验和帧尾,其中:
帧头占用一个字节大小,值固定为0XDF;
帧标志占用一个字节大小,但只使用一个字节的后5个bit,前3个bit预留均为0,后5位bit依次为TAL、ACK、CON、RST、SHT,TAL表示原始数据被分帧后的最后一个帧,ACK表示该数据帧包含应答消息,CON表示发起连接请求,RST表示请求重置连接,SHT表示请求关闭连接;
数据最大占用255字节,上层原始数据大于255字节则会被分帧;原始数据中若包含协议中的特殊字符,则会在该特殊字符前插入转义字符0XFE进行传输,即特殊字符在数据中表示为转义字符+特殊字符的形式;
帧校验占用2字节,采用循环冗余法计算从帧标志到数据共2个部分的全部字节得到两个字节进行填充;
帧尾占用一个字节大小,值固定为0XFF;
所述连接模块中在需要进行数据传输的终端间建立连接,具体为:
第一终端向第二终端发起连接请求,连接请求的帧标志的CON位和TAL位置为1;
第一终端接收第二终端返回的第一应答消息,第一终端转为连接状态,第一应答消息的帧标志ACK位和TAL位置为1;
第一终端发送第二应答消息至第二终端,第二终端收到第二应答消息后转为连接状态,第二应答消息的帧标志ACK位和TAL位置为1。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210284354.8A CN114629597B (zh) | 2022-03-22 | 2022-03-22 | 一种应用于串口的可靠传输方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210284354.8A CN114629597B (zh) | 2022-03-22 | 2022-03-22 | 一种应用于串口的可靠传输方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114629597A CN114629597A (zh) | 2022-06-14 |
CN114629597B true CN114629597B (zh) | 2023-11-21 |
Family
ID=81903053
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210284354.8A Active CN114629597B (zh) | 2022-03-22 | 2022-03-22 | 一种应用于串口的可靠传输方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114629597B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5912752A (en) * | 1996-06-26 | 1999-06-15 | Lexmark International, Inc. | Method and apparatus for improving serial infrared asynchronous communication performance |
CN103546250A (zh) * | 2013-09-18 | 2014-01-29 | 中标软件有限公司 | 一种用于车载终端的通信方法及系统 |
CN111711609A (zh) * | 2020-05-21 | 2020-09-25 | 重庆川仪自动化股份有限公司 | 一种串口通信中的协议设计方法 |
CN112910856A (zh) * | 2021-01-18 | 2021-06-04 | 南京理工大学 | 基于串口通信的通信协议的设计方法 |
CN113595966A (zh) * | 2020-04-30 | 2021-11-02 | 阿里巴巴集团控股有限公司 | 串口通信控制、配置、测试方法、装置、电子设备和存储介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11663100B2 (en) * | 2020-06-02 | 2023-05-30 | Analog Devices International Unlimited Company | Serial interface with improved diagnostic coverage |
-
2022
- 2022-03-22 CN CN202210284354.8A patent/CN114629597B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5912752A (en) * | 1996-06-26 | 1999-06-15 | Lexmark International, Inc. | Method and apparatus for improving serial infrared asynchronous communication performance |
CN103546250A (zh) * | 2013-09-18 | 2014-01-29 | 中标软件有限公司 | 一种用于车载终端的通信方法及系统 |
CN113595966A (zh) * | 2020-04-30 | 2021-11-02 | 阿里巴巴集团控股有限公司 | 串口通信控制、配置、测试方法、装置、电子设备和存储介质 |
CN111711609A (zh) * | 2020-05-21 | 2020-09-25 | 重庆川仪自动化股份有限公司 | 一种串口通信中的协议设计方法 |
CN112910856A (zh) * | 2021-01-18 | 2021-06-04 | 南京理工大学 | 基于串口通信的通信协议的设计方法 |
Non-Patent Citations (1)
Title |
---|
一种用于穿戴设备的串行通信协议的设计与实现;范能胜;张怀岺;;北京生物医学工程(04);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN114629597A (zh) | 2022-06-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111164923B (zh) | 用于单向传输数据的设计 | |
EP1768296A2 (en) | Method and apparatus for transmitting signaling data messages in a wireless communications system | |
CN111083161A (zh) | 数据传输的处理方法及装置、物联网设备 | |
CN113765976A (zh) | 一种通信方法和系统 | |
EP1708445A1 (en) | Communication device and logical link abnormality detection method | |
EP2696621A1 (en) | Message processing method, device and system | |
CN103516673A (zh) | 一种网络数据通信方法、系统及客户端和服务器 | |
CN110493775B (zh) | 通过att和异常处理来适配的通信方法及系统 | |
CN111769915B (zh) | 数据传输方法及相关设备 | |
CN110120854B (zh) | 传输数据的方法和装置 | |
CN112395237A (zh) | 一种至少两个控制器之间通信的方法及其系统 | |
CN114629597B (zh) | 一种应用于串口的可靠传输方法和系统 | |
CN107147561B (zh) | 一种基于xmpp协议的即时通讯方法及系统 | |
JP4229807B2 (ja) | データ転送方法とtcpプロキシ装置およびそれを用いたネットワークシステム | |
US20040264453A1 (en) | Method and system establishing a data link layer protocol on a I2CTM physical layer connection | |
CN105634894B (zh) | 一种增强型can总线数据重发方法和装置 | |
CN106534331A (zh) | 一种基于动态端口切换的数据传输方法和系统 | |
CN113541874A (zh) | 一种数据传输方法及网络设备 | |
CN102904764A (zh) | 一种数据传输装置及其传输方法 | |
CN111181628B (zh) | 通过北斗短报文传输语音数据的方法、终端及存储介质 | |
CN115038115A (zh) | 数据传输方法、装置、电子设备、存储介质和产品 | |
CN113965254A (zh) | 一种快速、可靠的卫星移动通信数据传输帧结构及方法 | |
CN111464514A (zh) | 一种tcp热备份方法及系统 | |
CN115955271B (zh) | 卫星数据传输方法、装置及电子设备 | |
CN116488712B (zh) | 一种基于改进存储转发协议的非实时中继通信方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |