CN110908949A - 一种基于slip协议的完整数据帧的接收方法 - Google Patents
一种基于slip协议的完整数据帧的接收方法 Download PDFInfo
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 18
- 241001486692 Semaprochilodus insignis Species 0.000 claims description 6
- 238000007405 data analysis Methods 0.000 description 2
- 230000007547 defect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0002—Serial 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协议的完整数据帧的接收方法。
背景技术
串口通信是指串口按位(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、变量赋值
步骤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个字节之间的数据保存为一个完整的数据帧。
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)
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)
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的转换系统 |
-
2019
- 2019-09-29 CN CN201910934286.3A patent/CN110908949A/zh active Pending
Patent Citations (3)
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)
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 |