CN110908949A - 一种基于slip协议的完整数据帧的接收方法 - Google Patents

一种基于slip协议的完整数据帧的接收方法 Download PDF

Info

Publication number
CN110908949A
CN110908949A CN201910934286.3A CN201910934286A CN110908949A CN 110908949 A CN110908949 A CN 110908949A CN 201910934286 A CN201910934286 A CN 201910934286A CN 110908949 A CN110908949 A CN 110908949A
Authority
CN
China
Prior art keywords
frame
data frame
tail
data
receiving
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.)
Pending
Application number
CN201910934286.3A
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.)
Army Engineering University of PLA
Original Assignee
Army Engineering University of PLA
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 Army Engineering University of PLA filed Critical Army Engineering University of PLA
Priority to CN201910934286.3A priority Critical patent/CN110908949A/zh
Publication of CN110908949A publication Critical patent/CN110908949A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0002Serial port, e.g. RS232C

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Communication Control (AREA)

Abstract

本发明公开了一种基于SLIP协议的完整数据帧的接收方法,它包括以下步骤:1、变量赋值;2、从串口接收缓存区中读取出新的数据帧;3、从读取出的数据帧中找出帧头、帧尾;4、将帧头至帧尾之间的数据保存为一个完整的数据帧。与现有技术相比,本发明具有以下优点:实现了准确地接收以0xc0为帧头、0xc0为帧尾的完整数据帧,保证了基于SLIP协议串行数据通信的接收可靠性。

Description

一种基于SLIP协议的完整数据帧的接收方法
技术领域
本发明属于串口通信技术领域,具体涉及一种基于SLIP协议的完整数据帧的接收方法。
背景技术
串口通信是指串口按位(bit)发送和接收字节,尽管通信速率较慢,但是能在使用一根线发送数据的同时使用另一根线接收数据,简单实用,并且能够实现远距离通信。因此,在嵌入式系统内部,经常采用RS232串口通信作为各分系统之间的通信方式,并且通常在链路层采用SLIP协议(Serial Line Internet Protocol,串行线路网际协议)来保证发送方与接收方数据的一致性。
文献“一种基于SLIP协议的串行数据解析方法”,李逸楠、孙丽君、王欣、所玉君,科技与创新,2019年第4期,第25~28页和第30页,提出了一种基于C语言设计的串行数据解析方法。该方法将原始数据从内存中取出,按SLIP协议解析出帧头(0xc0)、帧尾(0xc0),最后按上层通信协议解析出有效数据内容。进行串口通信时,数据接收方每次接收到的数据帧可能是一个不完整的数据帧,此时就需要对接收到的数据帧的完整性进行判断,对不完整的数据帧进行存储与拼接,从而获得一个完整的数据帧。该文献中的完整数据帧的接收方法为:
判断接收到的数据帧中最后一个0xc0是否就是本次接收到的数据帧的最后一个字节,如果是,说明本次接收到了一个完整的数据帧;如果不是,则说明本次接收到了一个不完整的数据帧,需要将最后一个0xc0之后的数据保存起来,拼接在下一周期接收到的数据帧之前。
该完整数据帧的接收方法存在明显的缺陷:由于一个完整的SLIP数据帧是以0xc0为帧头、0xc0为帧尾,即使接收到的数据帧中最后一个0xc0就是本次接收到的数据帧的最后一个字节,也只能证明最后一个0xc0是帧尾,而无法证明接收到的数据帧中是否含有帧头,进而不能确保接收到的数据帧是一个完整的数据帧。
发明内容
针对现有技术存在的问题,本发明所要解决的技术问题就是提供一种基于SLIP协议的完整数据帧的接收方法,它能够准确无误地接收以0xc0为帧头、0xc0为帧尾的完整数据帧,保证基于SLIP协议串行数据通信的接收可靠性。
本发明所要解决的技术问题是通过这样的技术方案实现的,它包括以下步骤:
步骤1、变量赋值;
步骤2、从串口接收缓存区中读取出新的数据帧;
步骤3、从读取出的数据帧中找出帧头和帧尾;
步骤4、将帧头至帧尾之间的数据保存为一个完整的数据帧。
由于通过步骤3确保从接收到的数据帧中找出帧头、帧尾,然后由步骤4将帧头至帧尾之间的数据保存为一个完整的数据帧,这样,接收的数据帧含有帧头和帧尾,符合完整SLIP数据帧的要求。
与现有技术相比,本发明的优点是:实现了准确接收以0xc0为帧头、0xc0为帧尾的完整数据帧,保证了基于SLIP协议串行数据通信的接收可靠性。
附图说明
本发明的附图说明如下:
图1为本发明的流程图。
具体实施方式
下面结合附图和实施例对本发明作进一步说明:
为便于叙述,变量定义见表1:
表1变量定义
序号 变量 描述
1 int single=0; 每个周期内读取出的数据帧的长度
2 int total=0; 合并后的数据帧的长度
3 char flag_head=0; 指示数据帧中是否包含帧头,0:不含,1:含
4 char flag_tail=0; 指示数据帧中是否包含帧尾,0:不含,1:含
5 uchar buffer[65535]={0x00}; 储存合并后的数据帧
如图1所示,本发明包括以下步骤:
步骤1、变量赋值
对total、flag_head、flag_tail和single变量赋值,即令:
Figure BDA0002221113050000021
flag_head=0、flag_tail=0、single=0。
步骤2、从串口接收缓存区中读取出新的数据帧
数据接收方周期性地从串口接收缓存区中读取出新的数据帧,将当前周期内读取出的串口数据帧的长度赋值给single,显然,每个周期内读取出的数据帧的长度一般是不相等的,因此,single的取值将随着每个周期内读取出的数据帧的长度的变化而变化。
步骤3、从读取出的数据帧中找出帧头和帧尾
在S31,若single>0,则执行S32;否则,返回执行步骤2;
在S32,将读取出的串口数据帧,从数组buffer第total个字节所在位置起,按序存入数组buffer,且令total=total+single;
在S33,若flag_head=0,执行S34,否则,执行S37;
在S34,从数组buffer第1至第total个字节的数据中寻找帧头(即第一个0xc0);
在数组buffer第1至第total个字节的范围内,从第1字节起,依次判断当前字节的数据是否等于0xc0,只要当前字节的数据等于0xc0,则立即停止寻找帧头。
在S35,若找到帧头,执行S36;若没有找到帧头,则返回执行步骤2;
在S36,记录帧头在数组buffer中的位置为x,令flag_head=1,然后执行S37;
在S37,从数组buffer第x+1至第total个字节的数据中寻找帧尾(即第二个0xc0);
在数组buffer第x+1至第total个字节的范围内,从第x+1字节起,依次判断当前字节的数据是否等于0xc0,只要当前字节的数据等于0xc0,则立即停止寻找帧尾。
在S38,若找到帧尾,执行S39,若没有找到帧尾,则返回执行步骤2;
在S39,记录帧尾在数组buffer中的位置为y,令flag_tail=1,执行步骤4;
步骤4,将帧头至帧尾之间的数据保存为一个完整的数据帧
将数组buffer中第x至第y个字节之间的数据保存为一个完整的数据帧,然后返回执行步骤1。

Claims (5)

1.一种基于SLIP协议的完整数据帧的接收方法,其特征是,包括以下步骤:
步骤1、变量赋值;
步骤2、从串口接收缓存区中读取出新的数据帧;
步骤3、从读取出的数据帧中找出帧头和帧尾;
步骤4、将帧头至帧尾之间的数据保存为一个完整的数据帧。
2.根据权利要求1所述的基于SLIP协议的完整数据帧的接收方法,其特征是,在步骤1中,对合并后的数据帧的长度total、数据帧含有帧头的变量flag_head、数据帧含有帧尾的变量flag_tail、每个周期内读取出的串口数据帧的长度single赋值0。
3.根据权利要求2所述的基于SLIP协议的完整数据帧的接收方法,其特征是,在步骤2中,将当前周期内读取出的串口数据帧的长度赋值给single。
4.根据权利要求3所述的基于SLIP协议的完整数据帧的接收方法,其特征是,步骤3中,在读取出的数据帧中找出帧头和帧尾的步骤如下:
步骤1)、将读取出的串口数据帧,从数组buffer第total个字节所在位置起,按序存入数组buffer,且令total=total+single;
步骤2)、在flag_head=0时,从数组buffer第1至第total个字节的数据中寻找帧头;在flag_head=1时,进入步骤4)寻找帧尾;
步骤3)、若找到帧头,记录帧头在数组buffer中的位置为x,令flag_head=1,若没有找到帧头,则返回步骤2,从串口接收缓存区中读取出新的数据帧,继续寻找帧头;
步骤4)、从数组buffer第x+1至第total个字节的数据中寻找帧尾,若找到帧尾,记录帧尾在数组buffer中的位置为y,令flag_tail=1;
若没有找到帧尾,则返回步骤2,从串口接收缓存区中读取出新的数据帧,继续寻找帧尾。
5.根据权利要求4所述的基于SLIP协议的完整数据帧的接收方法,其特征是,步骤4中,将数组buffer中第x至第y个字节之间的数据保存为一个完整的数据帧。
CN201910934286.3A 2019-09-29 2019-09-29 一种基于slip协议的完整数据帧的接收方法 Pending CN110908949A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910934286.3A CN110908949A (zh) 2019-09-29 2019-09-29 一种基于slip协议的完整数据帧的接收方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910934286.3A CN110908949A (zh) 2019-09-29 2019-09-29 一种基于slip协议的完整数据帧的接收方法

Publications (1)

Publication Number Publication Date
CN110908949A true CN110908949A (zh) 2020-03-24

Family

ID=69815266

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910934286.3A Pending CN110908949A (zh) 2019-09-29 2019-09-29 一种基于slip协议的完整数据帧的接收方法

Country Status (1)

Country Link
CN (1) CN110908949A (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112637141A (zh) * 2020-12-07 2021-04-09 天津津航计算技术研究所 Slip协议解析中保证数据完整性的方法
CN113726755A (zh) * 2021-08-23 2021-11-30 天津津航计算技术研究所 一种slip协议数据的处理方法
CN113886314A (zh) * 2021-09-08 2022-01-04 江苏徐工工程机械研究院有限公司 一种串口gps报文数据的接收及解析方法、系统
CN114509966A (zh) * 2021-12-30 2022-05-17 北京无线电测量研究所 一种非同步高速串口实时连续数据采集系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102510323A (zh) * 2011-09-22 2012-06-20 航天科工惯性技术有限公司 一种串口数据的帧识别方法
CN105760134A (zh) * 2016-02-03 2016-07-13 四川九洲电器集团有限责任公司 一种数据处理方法及电子设备
CN109218154A (zh) * 2018-09-07 2019-01-15 深圳市常茂信科技开发有限公司 一种基于fpga的千兆以太网到slip的转换系统

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102510323A (zh) * 2011-09-22 2012-06-20 航天科工惯性技术有限公司 一种串口数据的帧识别方法
CN105760134A (zh) * 2016-02-03 2016-07-13 四川九洲电器集团有限责任公司 一种数据处理方法及电子设备
CN109218154A (zh) * 2018-09-07 2019-01-15 深圳市常茂信科技开发有限公司 一种基于fpga的千兆以太网到slip的转换系统

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112637141A (zh) * 2020-12-07 2021-04-09 天津津航计算技术研究所 Slip协议解析中保证数据完整性的方法
CN113726755A (zh) * 2021-08-23 2021-11-30 天津津航计算技术研究所 一种slip协议数据的处理方法
CN113726755B (zh) * 2021-08-23 2023-06-02 天津津航计算技术研究所 一种slip协议数据的处理方法
CN113886314A (zh) * 2021-09-08 2022-01-04 江苏徐工工程机械研究院有限公司 一种串口gps报文数据的接收及解析方法、系统
CN114509966A (zh) * 2021-12-30 2022-05-17 北京无线电测量研究所 一种非同步高速串口实时连续数据采集系统
CN114509966B (zh) * 2021-12-30 2023-11-03 北京无线电测量研究所 一种非同步高速串口实时连续数据采集系统

Similar Documents

Publication Publication Date Title
CN110908949A (zh) 一种基于slip协议的完整数据帧的接收方法
CN104915383B (zh) 一种通用数据库访问中自动适配对象的方法
CN106657213A (zh) 文件传输方法和装置
CN102546836A (zh) 一种上传文件的方法、终端、服务器及系统
CN104462141B (zh) 一种数据存储与查询的方法、系统及存储引擎装置
CN105183557B (zh) 一种基于硬件的可配置的数据压缩系统
CN112765175B (zh) 一种接口数据的处理方法、装置、计算机设备及介质
CN102253898B (zh) 一种图像数据的内存管理方法及装置
CN107947965B (zh) 服务链编译器
US20060227606A1 (en) Electronic control apparatus having first microcomputer which forwards externally supplied updating data to a second microcomputer having a lower data receiving performance than the first microcomputer
CN113225320A (zh) 一种用户可配置报文格式保密的网络报文解析方法
WO2014135038A1 (zh) 基于pcie总线的报文传输方法与装置
CN107248939B (zh) 基于hash存储器的网络流高速关联方法
CN101515945A (zh) 一种p2p资源文件的在线应用方法和系统
US10862809B2 (en) Modifying carrier packets based on information in tunneled packets
CN103825945A (zh) 一种分片存储方法及用户终端
CN114968102A (zh) 一种数据缓存方法、装置、系统、计算机设备及存储介质
US9465544B2 (en) Method of processing data and system using the same
CN110362361A (zh) 文件制作的方法及装置
CN101651678A (zh) 网络中动态合并及分别执行合并pe文件的方法及其系统
CN116400931A (zh) 一种s19文件流式刷写方法和装置
CN100578980C (zh) 一种移动多媒体广播系统的文件接收方法
CN106649451A (zh) 数据更新方法及装置
CN109656588A (zh) 一种远程快速实现用电信息采集终端软件更新的方法及系统
CN111752941A (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
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20200324

WD01 Invention patent application deemed withdrawn after publication