CN109728879B - 串口突发接入应用层slip协议报文同步纠错方法 - Google Patents
串口突发接入应用层slip协议报文同步纠错方法 Download PDFInfo
- Publication number
- CN109728879B CN109728879B CN201910044479.1A CN201910044479A CN109728879B CN 109728879 B CN109728879 B CN 109728879B CN 201910044479 A CN201910044479 A CN 201910044479A CN 109728879 B CN109728879 B CN 109728879B
- Authority
- CN
- China
- Prior art keywords
- message
- serial port
- byte
- pflag
- synchronous
- 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
Images
Landscapes
- Communication Control (AREA)
Abstract
本发明公开了串口突发接入应用层SLIP协议报文同步纠错方法,依据SLIP协议报文的结构特点与格式特征,进行接收字节初始同步捕获,从接收到的第一个字节开始进行匹配分析,如若不是协议的开始或者结束标识则直接丢弃;一旦捕获同步信息后,由于同步信息存在伪同步情况,需要对同步信息的真实性进行进一步的甄别;甄别后得到的第一个正确同步,使其跳出之前伪同步错误,完成识别报文语义,恢复正常双方的双向沟通。本发明的有益效果:任意基于SLIP协议的串口通信设备可以随时、任意时刻接入,该方法解决了SLIP协议的伪同步问题,为应用层识别报文语义提供纠错保障,提高了需要使用SLIP协议进行串口通信的产品用户体验。
Description
技术领域
本发明涉及嵌入式领域,具体来说涉及串口突发接入应用层SLIP协议报文同步纠错方法。
背景技术
嵌入式领域中,串口通信是一种非常常见、使用广泛的信息传输通信接口。串口又称为串行接口,按电气标准及协议来分,包括:RS-232、RS-422、RS485。RS-232、RS-422与RS-485标准只对接口的电气特性做出规定,不涉及接外挂程式、电缆或协议。其传输是按照每单个字节8bit进行传输。当***的某一设备运行后,需要通过上述三种标准中一种串口标准不断往外发送串口数据,比如:短波电台中的接收信号电平值、扫描频率值等需要不断发给电脑终端。接收方的串口突发接入,其收到的第一个字节以较大概率出现不是约定报文协议格式的第一个字节,导致其报文的同步出现错误,是一种虚假伪同步。因此,串口应用层的接入成功具有随机性,并且这种接入成功率非常低,存在着突发接入的时机问题。其出现虚假同步错误,像“多米诺骨牌效应”一样不断积累下去,并且无法跳出这种累加的错误,导致应用层永久性无法识别报文语义。只有当设备使用时,必须严格按照某种顺序进行设备开启,才能避免上述情况发生,实现正常有效通信,从而带来好的使用体验。
发明内容
针对相关技术中的问题,本发明提出串口突发接入应用层SLIP协议报文同步纠错方法,解决现有SLIP协议报文虚假的同步,导致应用层永久性无法识别报文语义,最终无法进行正常有效的通信的问题。
为了实现上述技术目的,本发明的技术方案是这样的:
串口突发接入应用层SLIP协议报文同步纠错方法,具体包括以下步骤:
步骤1:串口突发接入设备,并依据SLIP协议报文的结构特点与格式特征,进行接收字节初始同步捕获;
步骤2:从捕获到的第一个字节开始进行匹配分析,若不是协议的开始或者结束标识则直接丢弃,一旦捕获同步信息后,则对同步信息的真实性进行进一步的甄别;
步骤3:甄别后得到的第一个正确同步,判定当前报文同步成功,串口应用层正常报文。
进一步的,步骤1中串口突发接入设备及捕获字节的具体步骤为:
S0:定义完整SLIP协议报文标识Pflag,在初始化时置为0;
S1:定义存储协议报文内容临时缓存,大小为n的数组DATA一维变量,数组DATA的大小满足单条SLIP规定报文字节数出现最大长度,进行串口的初始化,等待设备串口突发接入;
S2:串口中断函数开始捕获字节,当串口中断收到字节则进行匹配分析,否则继续等待串口接收中断。
进一步的,S1中数组DATA的大小满足单条SLIP规定报文字节数出现最大长度,含转义后最大长度。
进一步的,步骤2中的字节匹配分析的具体步骤为:
S3:对收到的串口字节进行内容匹配检测是否为0xC0,如果是0xC0则执行S4,否则执行S11;
S4:如果当前字节内容是0xC0,且Pflag等于0,则执行S5;如果当前字节内容是0xC0,且Pflag等于1,则执行S6;
S5:将标识Pflag置为1(即当前为一个新的SLIP协议报文),放在DATA数组的第一个存储位置,再执行S2;
S6:将标识Pflag置为2(即已捕获完一个完整协议报文同步),放在DATA数组的m+2位置,将标识Pflag置为0,再执行S7;
S7:判断标识Pflag是否等于2,如果等于2则进行下一步的甄别,否则执行S2。
进一步的,步骤3中甄别判定的具体步骤为:
S8:进行真伪同步鉴定,判断DATA的收到数据长度是否大于2;如果大于2则执行S9,否则执行S10;
S9:判定当前报文正确同步,串口应用层已接收到一个完整正确的SLIP协议报文;
S10:判定当前报文为伪同步,当前报文属于SLIP协议伪报文,将标识Pflag置为1,将DATA数组中第二个位置的0xC0去掉,执行S2,后续接收到的串口数据从DATA的第二个位置开始存储;
S11:判断标识Pflag置是否为1,如果不等于1则执行S12,否则执行S13;
S12:直接丢弃当前字节内容,不保存到缓存DATA数组中,执行S2;
S13:将收到的字节内容放在DATA数组缓存的m+1位置,执行S2。
进一步的,S10中判定当前报文为伪同步的标准是:SLIP协议报文特点是由十六进制0xC0、0xC0组成,大小为2字节。
进一步的,DATA数组中的m大小取决于Pflag等于1之后收到非0xC0字节的数量。
本发明的有益效果:任意基于SLIP协议的串口通信设备可以随时、任意时刻接入,该方法解决了SLIP协议的伪同步问题,为应用层识别报文语义提供纠错保障,提高了需要使用SLIP协议进行串口通信的产品用户体验。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是根据本发明实施例所述串口突发接入应用层SLIP协议报文同步纠错方法的流程图;
图2是根据本发明实施例所述标准SLIP协议报文格式特征示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员所获得的所有其他实施例,都属于本发明保护的范围。
串口突发接入应用层SLIP协议报文同步纠错方法,具体包括以下步骤:
步骤1:串口突发接入设备,并依据SLIP协议报文的结构特点与格式特征,进行接收字节初始同步捕获;
步骤2:从捕获到的第一个字节开始进行匹配分析,若不是协议的开始或者结束标识则直接丢弃,一旦捕获同步信息后,则对同步信息的真实性进行进一步的甄别;
步骤3:甄别后得到的第一个正确同步,判定当前报文同步成功,串口应用层正常报文。
如图1所示,其具体的实时过程包括以下步骤:
S0:定义完整SLIP协议报文标识Pflag,在初始化时置为0;
S1:定义存储协议报文内容临时缓存,大小为n的数组DATA一维变量,数组DATA的大小满足单条SLIP规定报文字节数出现最大长度,含转义后最大长度,进行串口的初始化,等待设备串口突发接入;
S2:串口中断函数开始捕获字节,当串口中断收到第一个字节则执行S3,否则继续等待串口接收中断;
S3:对收到的串口字节进行内容匹配检测是否为0xC0,如果是0xC0则执行S4,否则执行S11;
S4:如果当前字节内容是0xC0,且Pflag等于0,则执行S5;如果当前字节内容是0xC0,且Pflag等于1,则执行S6;
S5:将标识Pflag置为1(即当前为一个新的SLIP协议报文),放在DATA数组的第一个存储位置,再执行S2;
S6:将标识Pflag置为2(即已捕获完一个完整协议报文同步),放在DATA数组的m+2位置(m大小均取决于Pflag等于1之后收到非0xC0字节的数量),将标识Pflag置为0,再执行S7;
S7:判断标识Pflag是否等于2,如果等于2则执行S8,否则执行S2;
S8:进行真伪同步鉴定,判断DATA的收到数据长度是否大于2;如果大于2则执行S9,否则执行S10;
S9:判定当前报文正确同步,串口应用层已接收到一个完整正确的SLIP协议报文;
S10:判定当前报文为伪同步(伪同步的SLIP协议报文特点是由十六进制0xC0、0xC0组成,大小为2字节),当前报文属于SLIP协议伪报文,将标识Pflag置为1,将DATA数组中第二个位置的0xC0去掉,执行S2,后续接收到的串口数据从DATA的第二个位置开始存储;
S11:判断标识Pflag置是否为1,如果不等于1则执行S12,否则执行S13;
S12:直接丢弃当前字节内容,不保存到缓存DATA数组中,执行S2;
S13:将收到的字节内容放在DATA数组缓存的m+1位置(m大小均取决于Pflag等于1之后收到非0xC0字节的数量),执行S2。
现对其具体的设计原理进行简要说明:
如图2所示,依据SLIP协议报文的结构特点与格式特征进行同步匹配捕获;由于串口突发接入,捕获后的同步信息存在伪同步情况,利用报文整个字节长度至少大于2的特点(因为完备的同步信息占据2字节大小),甄别去掉伪同步;一旦捕获到第一个合法同步命令后,则可以跳出伪同步、纠正其同步错误问题,为应用层正常报文语义理解提供保障,使得双方恢复正常有效通信。
以上仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (6)
1.串口突发接入应用层SLIP协议报文同步纠错方法,其特征在于,具体包括以下步骤:
步骤1:串口突发接入设备,并依据SLIP协议报文的结构特点与格式特征,进行接收字节初始同步捕获;
步骤2:从捕获到的第一个字节开始进行匹配分析,若不是协议的开始或者结束标识则直接丢弃,一旦捕获同步信息后,则对同步信息的真实性进行进一步的甄别;
步骤3:进行真伪同步鉴定,判断DATA的收到数据长度是否大于2;如果大于2则判定当前报文正确同步,串口应用层已接收到一个完整正确的SLIP协议报文,否则判定当前报文为伪同步,当前报文属于SLIP协议伪报文,将标识Pflag置为1,将DATA数组中第二个位置的0xC0去掉,串口中断函数开始捕获字节,后续接收到的串口数据从DATA的第二个位置开始存储;判断标识Pflag置是否为1,如果不等于1则直接丢弃当前字节内容,不保存到缓存DATA数组中,执行串口中断函数开始捕获字节,否则将收到的字节内容放在DATA数组缓存的m+1位置,执行串口中断函数开始捕获字节;
步骤4:甄别后得到的第一个正确同步,判定当前报文同步成功,串口应用层正常报文。
2.根据权利要求1所述的串口突发接入应用层SLIP协议报文同步纠错方法,其特征在于,步骤1中串口突发接入设备及捕获字节的具体步骤为:
S0:定义完整SLIP协议报文标识Pflag,在初始化时置为0;
S1:定义存储协议报文内容临时缓存,大小为n的数组DATA一维变量,数组DATA的大小满足单条SLIP规定报文字节数出现最大长度,进行串口的初始化,等待设备串口突发接入;
S2:串口中断函数开始捕获字节,当串口中断收到字节则进行匹配分析,否则继续等待串口接收中断。
3.根据权利要求2所述的串口突发接入应用层SLIP协议报文同步纠错方法,其特征在于,S1中数组DATA的大小满足单条SLIP规定报文字节数出现最大长度,含转义后最大长度。
4.根据权利要求2所述的串口突发接入应用层SLIP协议报文同步纠错方法,其特征在于,步骤2中的字节匹配分析的具体步骤为:
S3:对收到的串口字节进行内容匹配检测是否为0xC0,如果是0xC0则执行S4,否则执行S11;
S4:如果当前字节内容是0xC0,且Pflag等于0,则执行S5;如果当前字节内容是0xC0,且Pflag等于1,则执行S6;
S5:将标识Pflag置为1,表示当前为一个新的SLIP协议报文,放在DATA数组的第一个存储位置,再执行S2;
S6:将标识Pflag置为2,表示已捕获完一个完整协议报文同步,放在DATA数组的m+2位置,将标识Pflag置为0,再执行S7;
S7:判断标识Pflag是否等于2,如果等于2则进行下一步的甄别,否则执行S2。
5.根据权利要求1所述的串口突发接入应用层SLIP协议报文同步纠错方法,其特征在于,S10中判定当前报文为伪同步的标准是:SLIP协议报文特点是由十六进制0xC0、0xC0组成,大小为2字节。
6.根据权利要求1或4中任意一项所述的串口突发接入应用层SLIP协议报文同步纠错方法,其特征在于,DATA数组中的m大小取决于Pflag等于1之后收到非0xC0字节的数量。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910044479.1A CN109728879B (zh) | 2019-01-17 | 2019-01-17 | 串口突发接入应用层slip协议报文同步纠错方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910044479.1A CN109728879B (zh) | 2019-01-17 | 2019-01-17 | 串口突发接入应用层slip协议报文同步纠错方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109728879A CN109728879A (zh) | 2019-05-07 |
CN109728879B true CN109728879B (zh) | 2022-02-11 |
Family
ID=66299721
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910044479.1A Active CN109728879B (zh) | 2019-01-17 | 2019-01-17 | 串口突发接入应用层slip协议报文同步纠错方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109728879B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112019319A (zh) * | 2020-08-25 | 2020-12-01 | 杰华特微电子(杭州)有限公司 | 一种数据信号同步传输的方法及设备 |
CN112866389B (zh) * | 2021-01-21 | 2022-09-16 | 同方电子科技有限公司 | 一种基于Slip协议的短波电台通信中文件传输方法及设备 |
CN113726755B (zh) * | 2021-08-23 | 2023-06-02 | 天津津航计算技术研究所 | 一种slip协议数据的处理方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101141236A (zh) * | 2007-03-20 | 2008-03-12 | 中兴通讯股份有限公司 | 用于同步传输***的定帧方法 |
US8340005B1 (en) * | 2005-02-08 | 2012-12-25 | Cortina Systems, Inc. | High speed packet interface and method |
CN104486034A (zh) * | 2014-12-08 | 2015-04-01 | 江西洪都航空工业集团有限责任公司 | 一种rs422/485串口通信数据组包方法 |
CN105187420A (zh) * | 2015-08-27 | 2015-12-23 | 哈尔滨工业大学 | 一种基于rs422总线的通讯协议匹配方法 |
CN106533874A (zh) * | 2016-11-22 | 2017-03-22 | 北京金自天正智能控制股份有限公司 | 一种基于Modbus RTU协议的永磁同步电机数据通信***及方法 |
CN107395565A (zh) * | 2017-06-15 | 2017-11-24 | 北京机械设备研究所 | 一种定长单字节格式报文协议下串口接收预处理方法 |
-
2019
- 2019-01-17 CN CN201910044479.1A patent/CN109728879B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8340005B1 (en) * | 2005-02-08 | 2012-12-25 | Cortina Systems, Inc. | High speed packet interface and method |
CN101141236A (zh) * | 2007-03-20 | 2008-03-12 | 中兴通讯股份有限公司 | 用于同步传输***的定帧方法 |
CN104486034A (zh) * | 2014-12-08 | 2015-04-01 | 江西洪都航空工业集团有限责任公司 | 一种rs422/485串口通信数据组包方法 |
CN105187420A (zh) * | 2015-08-27 | 2015-12-23 | 哈尔滨工业大学 | 一种基于rs422总线的通讯协议匹配方法 |
CN106533874A (zh) * | 2016-11-22 | 2017-03-22 | 北京金自天正智能控制股份有限公司 | 一种基于Modbus RTU协议的永磁同步电机数据通信***及方法 |
CN107395565A (zh) * | 2017-06-15 | 2017-11-24 | 北京机械设备研究所 | 一种定长单字节格式报文协议下串口接收预处理方法 |
Also Published As
Publication number | Publication date |
---|---|
CN109728879A (zh) | 2019-05-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109728879B (zh) | 串口突发接入应用层slip协议报文同步纠错方法 | |
EP1811710A2 (en) | Apparatus and method for processing bursts in a wireless communication system | |
US10396921B2 (en) | Multi-lane synchronization method, synchronization apparatus and system, and computer storage medium | |
EP3675398A1 (en) | Check code processing method, electronic device, and storage medium | |
JPH0673940U (ja) | データ受信器 | |
CN110704356A (zh) | 一种通用的解析串口数据方法 | |
CN112332951B (zh) | 一种以太网帧抢占方法、装置、设备及存储介质 | |
CN111130690A (zh) | 一种ir46智能电表的多通讯协议的处理方法及装置 | |
CN112565105A (zh) | 一种降低时间敏感帧转发时延的方法、装置及设备 | |
JPH05160815A (ja) | 連送方式における誤り回復処理方法 | |
CN115695576B (zh) | 一种兼容tsn帧抢占协议的数据帧转换方法及装置 | |
CN111770055A (zh) | 一种应用于电能表的多协议通讯帧快速判别方法 | |
CN115297447B (zh) | 一种长短信合并方法、***、设备及存储介质 | |
CN115801927A (zh) | 报文解析方法及装置 | |
CN112351049B (zh) | 数据传输方法、装置、设备及存储介质 | |
US11435999B2 (en) | Method and apparatus for upgrading software | |
KR920002747B1 (ko) | 회수프레임인식장치 | |
JP3495625B2 (ja) | デジタル放送受信機におけるtsデータフィルタリング回路 | |
CN116192998B (zh) | 一种解码功率传输协议信息包的方法、装置及设备 | |
CN116756076A (zh) | 同步串口通讯的错误检测方法、检测***、终端及介质 | |
CN111163022A (zh) | 报文的传输方法和装置以及计算机可读存储介质 | |
CN113242473B (zh) | 一种数据处理方法、***、数据采集设备及可读存储介质 | |
EP2073423A1 (en) | Method and device for error detection and handling of received radio link control protocol data units in a mobile radio communication system | |
CN117041388B (zh) | 一种适用于bms产品的数据传输方法 | |
CN112671721A (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 |