CN112637141A - Slip协议解析中保证数据完整性的方法 - Google Patents

Slip协议解析中保证数据完整性的方法 Download PDF

Info

Publication number
CN112637141A
CN112637141A CN202011438329.8A CN202011438329A CN112637141A CN 112637141 A CN112637141 A CN 112637141A CN 202011438329 A CN202011438329 A CN 202011438329A CN 112637141 A CN112637141 A CN 112637141A
Authority
CN
China
Prior art keywords
data
last
buffer
stored
frame
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.)
Withdrawn
Application number
CN202011438329.8A
Other languages
English (en)
Inventor
李逸楠
孙丽君
所玉君
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tianjin Jinhang Computing Technology Research Institute
Original Assignee
Tianjin Jinhang Computing Technology Research Institute
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Tianjin Jinhang Computing Technology Research Institute filed Critical Tianjin Jinhang Computing Technology Research Institute
Priority to CN202011438329.8A priority Critical patent/CN112637141A/zh
Publication of CN112637141A publication Critical patent/CN112637141A/zh
Withdrawn legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/02Protocol performance
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/03Protocol definition or specification 
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/06Notations for structuring of protocol data, e.g. abstract syntax notation one [ASN.1]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/12Protocol engines
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/22Parsing or analysis of headers

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Communication Control (AREA)

Abstract

本发明公开了一种SLIP协议解析中保证数据完整性的方法,步骤为:统计本次接收到的数据缓存区中0xc0的个数;保存数据缓存区中的最后一个0xc0的数组序号;判断接收缓存区中是否仅有一个数据,且这个数据是0xc0;如果不满足步骤3判断条件,就判断最后一个0xc0是否是数据缓存区中最后一个数据。本发明会将数据缓冲区中的不完整数据帧保存起来,并记录保存的数据个数;在下一次读取缓冲区数据时,把保存的数据拼接在缓冲区数据之前,接着再做后续的协议解析,就可以保证不会抛弃掉不完整的数据帧而导致待解析的数据不完整。

Description

SLIP协议解析中保证数据完整性的方法
技术领域
本发明属于SLIP协议解析技术领域,涉及一种SLIP协议解析中保证数据完整性的方法。
背景技术
SLIP协议简单描述如下:以0xc0为帧头,0xc0为帧尾,帧头帧尾间若出现0xc0,则以连续两个字符0xdb和0xdc取代;如果帧头帧尾间出现0xdb,那么就用连续两个字符0xdb和0xdd替代;接收方也按照这个规则还原接收到的数据。
在数据接收过程中,接收到的数据会存放在接收缓存区中,通过检测0xc0帧头,0xc0帧尾,将数据帧从缓存区中取出。由于基于SLIP协议的数据帧长度不固定,发送方与接收方软件运行周期也不可能严格同步,导致接收缓存中的数据可能存在不完整的数据帧。
发明内容
(一)发明目的
本发明的目的是:为了保证接收到数据不丢帧,设计一种保证数据完整性的方法,可应对缓存区数据各种不完整情况下解析数据帧的完整性。
(二)技术方案
为了解决上述技术问题,本发明提供一种SLIP协议解析中保证数据完整性的方法包括以下步骤:
步骤1:统计本次接收到的数据缓存区中0xc0的个数。遍历缓存区中所有数据,与0xc0比较,若相等,则将0xc0个数计数器加1。用count来表示0xc0的个数,用lastc0Index来表示数据缓存区中最后一个0xc0的数组序号,用revlen来表示接收缓存区中数据个数,用revbuf来表示接收缓存区数据起始地址。
步骤2:保存数据缓存区中的最后一个0xc0的数组序号。遍历缓存区中所有数据,与0xc0比较,若相等,则将计数中间变量counttemp加1,并将counttemp与上一步计算得到的0xc0个数计数器count比较,若不一致则继续运行循环,若一致则记录下此时已经比较过的数据个数i值,此值就是最后一个0xc0的数组序号lastc0Index,跳出循环。
步骤3:判断接收缓存区中是否仅有一个数据,且这个数据是0xc0。若是,则认为不是完整的数据帧,需要将这个0xc0保存起来,并将需要保存的数据个数赋值为1。具体方法是,如果revlen为1,且rebuf地址内的数据就是0xc0,那么就把0xc0存储在savebuf指向的地址中,且把存储数据长度savelen赋值为1。
步骤4:如果不满足第三步判断条件,就判断最后一个0xc0是否就是数据缓存区中最后一个数据,若是,则进入第5步处理。若不是,就说明数据缓存区中存在不完整的数据帧,需要存储不完整的数据帧,并记录需要存储的数据个数。判断最后一个0xc0是否就是数据缓存区中最后一个数据的具体方法是比较lastc0Index和revlen的值。如果lastc0Index和revlen-1的值一致,说明最后一个0xc0就是数据缓存区中最后一个数据;若不一致,说明不是。需要记录的数据长度就是revlen-lastc0Index,需要记录的数据就是revbuf+lastc0Index地址往后长度为revlen-lastc0Index的所有数据,存储在savebuf地址开始revlen-lastc0Index长度的内存中。
步骤5:若满足第四步判断,说明最后一个0xc0就是数据缓冲区的最后一个数据,此时还不能认为缓冲区内不存在不完整的数据帧。还存在一种可能性,就是最后的0xc0是下一帧数据的帧头,此时是需要保存这个0xc0的,并将需要保存的数据个数置为1。判断最后一个0xc0是否需要保存的方法是判断这个0xc0之前的数据是否也是0xc0,如果是,则保存;如果不是,则说明数据帧是完整的,没有需要保存的数据。具体判断方法是将revbuf+lastc0Index-1地址指向的数据与0xc0比较,如果相等,那么就把0xc0存储在savebuf指向的地址中,且把存储数据长度savelen赋值为1。如果不相等,需要存储的数据长度savelen置为0。
(三)有益效果
上述技术方案所提供的SLIP协议解析中保证数据完整性的方法,会将数据缓冲区中的不完整数据帧保存起来,并记录保存的数据个数;在下一次读取缓冲区数据时,把保存的数据拼接在缓冲区数据之前,接着再做后续的协议解析,就可以保证不会抛弃掉不完整的数据帧而导致待解析的数据不完整。
具体实施方式
为使本发明的目的、内容和优点更加清楚,下面结合实施例,对本发明的具体实施方式作进一步详细描述。
本发明SLIP协议解析中保证数据完整性的方法包括以下步骤:
步骤1:统计本次接收到的数据缓存区中0xc0的个数。遍历缓存区中所有数据,与0xc0比较,若相等,则将0xc0个数计数器加1。用count来表示0xc0的个数,用lastc0Index来表示数据缓存区中最后一个0xc0的数组序号,用revlen来表示接收缓存区中数据个数,用revbuf来表示接收缓存区数据起始地址。
步骤2:保存数据缓存区中的最后一个0xc0的数组序号。遍历缓存区中所有数据,与0xc0比较,若相等,则将计数中间变量counttemp加1,并将counttemp与上一步计算得到的0xc0个数计数器count比较,若不一致则继续运行循环,若一致则记录下此时已经比较过的数据个数i值,此值就是最后一个0xc0的数组序号lastc0Index,跳出循环。
步骤3:判断接收缓存区中是否仅有一个数据,且这个数据是0xc0。若是,则认为不是完整的数据帧,需要将这个0xc0保存起来,并将需要保存的数据个数赋值为1。具体方法是,如果revlen为1,且rebuf地址内的数据就是0xc0,那么就把0xc0存储在savebuf指向的地址中,且把存储数据长度savelen赋值为1。
步骤4:如果不满足第三步判断条件,就判断最后一个0xc0是否就是数据缓存区中最后一个数据,若是,则进入第5步处理。若不是,就说明数据缓存区中存在不完整的数据帧,需要存储不完整的数据帧,并记录需要存储的数据个数。判断最后一个0xc0是否就是数据缓存区中最后一个数据的具体方法是比较lastc0Index和revlen的值。如果lastc0Index和revlen-1的值一致,说明最后一个0xc0就是数据缓存区中最后一个数据;若不一致,说明不是。需要记录的数据长度就是revlen-lastc0Index,需要记录的数据就是revbuf+lastc0Index地址往后长度为revlen-lastc0Index的所有数据,存储在savebuf地址开始revlen-lastc0Index长度的内存中。
步骤5:若满足第四步判断,说明最后一个0xc0就是数据缓冲区的最后一个数据,此时还不能认为缓冲区内不存在不完整的数据帧。还存在一种可能性,就是最后的0xc0是下一帧数据的帧头,此时是需要保存这个0xc0的,并将需要保存的数据个数置为1。判断最后一个0xc0是否需要保存的方法是判断这个0xc0之前的数据是否也是0xc0,如果是,则保存;如果不是,则说明数据帧是完整的,没有需要保存的数据。具体判断方法是将revbuf+lastc0Index-1地址指向的数据与0xc0比较,如果相等,那么就把0xc0存储在savebuf指向的地址中,且把存储数据长度savelen赋值为1。如果不相等,需要存储的数据长度savelen置为0。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。

Claims (9)

1.一种SLIP协议解析中保证数据完整性的方法,其特征在于,包括以下步骤:
步骤1:统计本次接收到的数据缓存区中0xc0的个数;
步骤2:保存数据缓存区中的最后一个0xc0的数组序号;
步骤3:判断接收缓存区中是否仅有一个数据,且这个数据是0xc0;若是,则认为不是完整的数据帧,需要将这个0xc0保存起来,并将需要保存的数据个数赋值为1;
步骤4:如果不满足步骤3判断条件,就判断最后一个0xc0是否是数据缓存区中最后一个数据,若是,则进入步骤5处理;若不是,说明数据缓存区中存在不完整的数据帧,需要存储不完整的数据帧,并记录需要存储的数据个数;
步骤5:若满足第四步判断,说明最后一个0xc0是数据缓冲区的最后一个数据,此时不能认为缓冲区内不存在不完整的数据帧,还存在最后的0xc0是下一帧数据的帧头的可能性,此时需要保存下一帧数据的帧头0xc0,并将需要保存的数据个数置为1。
2.如权利要求1所述的SLIP协议解析中保证数据完整性的方法,其特征在于,步骤1中:遍历缓存区中所有数据,与0xc0比较,若相等,则将0xc0个数计数器加1,由此统计0xc0的个数。
3.如权利要求2所述的SLIP协议解析中保证数据完整性的方法,其特征在于,步骤1中:用count来表示0xc0的个数,用lastc0Index来表示数据缓存区中最后一个0xc0的数组序号,用revlen来表示接收缓存区中数据个数,用revbuf来表示接收缓存区数据起始地址。
4.如权利要求3所述的SLIP协议解析中保证数据完整性的方法,其特征在于,步骤2中:遍历缓存区中所有数据,与0xc0比较,若相等,则将计数中间变量counttemp加1,并将counttemp与上一步计算得到的0xc0个数计数器count比较,若不一致则继续运行循环,若一致则记录下此时已经比较过的数据个数i值,此值就是最后一个0xc0的数组序号lastc0Index,跳出循环。
5.如权利要求4所述的SLIP协议解析中保证数据完整性的方法,其特征在于,步骤3中:如果revlen为1,且rebuf地址内的数据是0xc0,那么把0xc0存储在savebuf指向的地址中,且把存储数据长度savelen赋值为1。
6.如权利要求5所述的SLIP协议解析中保证数据完整性的方法,其特征在于,步骤4中:判断最后一个0xc0是否是数据缓存区中最后一个数据的方法是:比较lastc0Index和revlen的值,如果lastc0Index和revlen-1的值一致,说明最后一个0xc0是数据缓存区中最后一个数据;若不一致,说明不是;需要记录的数据长度是revlen-lastc0Index,需要记录的数据是revbuf+lastc0Index地址往后长度为revlen-lastc0Index的所有数据,存储在savebuf地址开始revlen-lastc0Index长度的内存中。
7.如权利要求6所述的SLIP协议解析中保证数据完整性的方法,其特征在于,步骤5中:判断最后一个0xc0是否需要保存的方法是:判断这个0xc0之前的数据是否也是0xc0,如果是,则保存;如果不是,则说明数据帧是完整的,没有需要保存的数据。
8.如权利要求7所述的SLIP协议解析中保证数据完整性的方法,其特征在于,步骤5中:判断方法是将revbuf+lastc0Index-1地址指向的数据与0xc0比较,如果相等,那么就把0xc0存储在savebuf指向的地址中,且把存储数据长度savelen赋值为1;如果不相等,需要存储的数据长度savelen置为0。
9.如权利要求1-8中任一项所述的SLIP协议解析中保证数据完整性的方法在SLIP协议解析技术领域中的应用。
CN202011438329.8A 2020-12-07 2020-12-07 Slip协议解析中保证数据完整性的方法 Withdrawn CN112637141A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011438329.8A CN112637141A (zh) 2020-12-07 2020-12-07 Slip协议解析中保证数据完整性的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011438329.8A CN112637141A (zh) 2020-12-07 2020-12-07 Slip协议解析中保证数据完整性的方法

Publications (1)

Publication Number Publication Date
CN112637141A true CN112637141A (zh) 2021-04-09

Family

ID=75310267

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011438329.8A Withdrawn CN112637141A (zh) 2020-12-07 2020-12-07 Slip协议解析中保证数据完整性的方法

Country Status (1)

Country Link
CN (1) CN112637141A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113726755A (zh) * 2021-08-23 2021-11-30 天津津航计算技术研究所 一种slip协议数据的处理方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030126270A1 (en) * 2001-12-31 2003-07-03 Globespanvirata Incorporated System and method for robust parsing of multiple-frane protocol messages
CN110908949A (zh) * 2019-09-29 2020-03-24 中国人民解放军陆军工程大学 一种基于slip协议的完整数据帧的接收方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030126270A1 (en) * 2001-12-31 2003-07-03 Globespanvirata Incorporated System and method for robust parsing of multiple-frane protocol messages
CN110908949A (zh) * 2019-09-29 2020-03-24 中国人民解放军陆军工程大学 一种基于slip协议的完整数据帧的接收方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
李逸楠等: "一种基于SLIP 协议的串行数据解析方法", 《科技与创新》 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113726755A (zh) * 2021-08-23 2021-11-30 天津津航计算技术研究所 一种slip协议数据的处理方法
CN113726755B (zh) * 2021-08-23 2023-06-02 天津津航计算技术研究所 一种slip协议数据的处理方法

Similar Documents

Publication Publication Date Title
US11805224B2 (en) Image transmission device and method including an image data receiver and a processor
US20110055666A1 (en) Receiver for error-protected packet-based frame
CN112637141A (zh) Slip协议解析中保证数据完整性的方法
CN106788888A (zh) 弱网络环境下提高安卓移动终端通信成功率的方法及系统
CN109918545B (zh) 传感器数据的提取方法及装置
CN109728879B (zh) 串口突发接入应用层slip协议报文同步纠错方法
CN102629235A (zh) 一种提高ddr存储器读写速率的方法
US20020124222A1 (en) Increasing performance with memory compression
US20050002332A1 (en) Method, apparatus and computer program for performing a frame flow control, and method, apparatus and computer program for transmitting a frame
CN113242473B (zh) 一种数据处理方法、系统、数据采集设备及可读存储介质
US20100115387A1 (en) Data receiving apparatus, data receiving method, and computer-readable recording medium
CN113645192B (zh) Rtp数据包处理方法及装置
CN115811516A (zh) 多分帧文件并发上报的方法、装置、设备和介质
US8234524B1 (en) Protocol analysis with event present flags
JPS6174442A (ja) 静止画受信端末のデ−タバッファ方式
WO2020220951A1 (zh) 一种录像数据存储方法及装置
CN112751873B (zh) 蓝牙midi数据转换方法、电路及存储介质
CN113726605A (zh) 一种快速丢弃错误报文的装置及方法
JP2625682B2 (ja) 音声区間の始端検出装置
CN115292029A (zh) 一种基于arm的不定字节串口可靠接收方法
CN115801019A (zh) 并行加速lz77解码方法及其装置、电子设备
CN117978325A (zh) 信号系统间传递数据的有效数据帧侦测方法、设备及介质
CN117555821A (zh) 一种嵌入式高可靠性外部数据处理方法
CN118795194A (zh) 一种基于fpga预处理的数字示波器
CN117560335A (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
WW01 Invention patent application withdrawn after publication
WW01 Invention patent application withdrawn after publication

Application publication date: 20210409