CN107135049A - 一种面向离散数据流的可靠异步通信方法 - Google Patents
一种面向离散数据流的可靠异步通信方法 Download PDFInfo
- Publication number
- CN107135049A CN107135049A CN201710256778.2A CN201710256778A CN107135049A CN 107135049 A CN107135049 A CN 107135049A CN 201710256778 A CN201710256778 A CN 201710256778A CN 107135049 A CN107135049 A CN 107135049A
- Authority
- CN
- China
- Prior art keywords
- data
- frame
- postamble
- field
- byte
- 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.)
- Granted
Links
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/0001—Systems modifying transmission characteristics according to link quality, e.g. power backoff
- H04L1/0006—Systems modifying transmission characteristics according to link quality, e.g. power backoff by adapting the transmission format
- H04L1/0007—Systems modifying transmission characteristics according to link quality, e.g. power backoff by adapting the transmission format by modifying the frame length
-
- 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/06—Notations for structuring of protocol data, e.g. abstract syntax notation one [ASN.1]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Quality & Reliability (AREA)
- Computer Security & Cryptography (AREA)
- Communication Control (AREA)
Abstract
一种面向离散数据流的可靠异步通信方法,主要涉及数据结构化,信源发送,信宿接收及信宿数据解析技术。其主要针对瞬时性通信速度大于处理速度,采取临时缓冲队列存储,然后信宿从缓冲队列中依次读取每一帧数据,并对数据帧完整性、结构、内容的正确性进行检查以确保通信数据正常接收。所述方法不涉及层次化协议栈,实现较简单,且可以较好地剔除接收到噪声数据。
Description
技术领域
本发明涉及一种面向离散数据流的结构化及可靠通信方法,用于解决对串行离散数据流的可靠收发问题。
背景技术
总线数据通信是工业控制***和智能监控***设计中不可避免的问题。以太网络的数据传输已有较为成熟的通信协议包括TCP/IP,UDP等,但以字节为单位串行通信总线以及串行数据流通信还没有统一的标准,而其通信的灵活性以及高效性是以太网络无法媲美的,因此在实际***的局部通信经常会涉及到此类通信方式。为了避免通信瞬时的高数据负载,通常此类通信的接收方均配置有缓冲区,更常用的是环形缓冲消息队列。由于通信过程中噪声等因素的影响,会造成通信数据的不可靠。
发明内容
本发明主要面向离散数据流的可靠收发问题,提出了一种数据的结构化打包以及解析方法,能够高可靠性的解决两个通信站点间的离散数据流的收发问题。
本发明的主要技术方案如下:
本发明与现有技术相比的有益效果是:
(1)本发明可以用于串行数据流的异步变长数据流的通信,接收方通过缓冲队列来完成数据流的接收,避免了通信发送方握手等待的计算资源开销和对通信接收方的实时响应的开销;
(2)相对于现有技术接收到错误数据后即将已经接收到的所有数据丢弃,重启通信接收过程而言,本发明的接收方在提取和解析数据帧的过程中可以自动识别误帧,残帧,最大程度的提取缓冲队列中已经接收到的有效数据帧;
(3)本发明从帧尾的识别开始从缓冲队列中提取有效帧数据的方法避免了数据帧的后半部分缺失以及误把后续相邻帧帧尾识别为前帧帧尾,造成误将有效帧作为无效帧丢弃的可能;
(4)相对于现有技术,本发明在帧头帧尾的定义过程中采用组合码的形式,并考虑单字节码距的思路,拥有更好的抗干扰技术,同时也更好的避免了与待传输数据内容的冲突问题,降低了转义字符***的平均概率,提高了通信的效率;
(5)本发明可以实现变长数据帧的通信,不仅允许不同含义的帧数据可以拥有不同长度的帧数据,同时对于同样含义的帧数据,在同一次通信过程中发送方也可以发送不同长度的数据帧。从而增加了数据通信的灵活性。
(6)本发明可以在数据帧提取过程中将噪声数据提出,并且可以自动检测队列中的有效数据帧。其可以被用于RS485,RS422和RS232的串行总线的通信过程以及FIFO交换数据的解析问题。
附图说明
图1为本发明的解析数据帧处理过程示意图;
其中:
ZT表示帧头,Z表示0x5A,T表示0x54;
DATA表示数据区;
SUM表示接收的校验和(由固定的0和接收的数据区算术和组成,在图1中分别用SUM0和SUM1表示);
LEN表示接收的数据长度;
ZW表示帧尾,Z表示0x5A,W表示0xFE。
具体实施方式
下面结合实例及附图1对本发明做详细说明。
(1)定义数据的结构化协议:
帧头 | 数据区 | 校验区 | 数据长度 | 帧尾 |
发送顺序为从帧头到帧尾,其中:帧头至少包含2字节,每个字节至少包含4组以上采用不同数值的相邻位;数据区由1~166个有效字节构成,用于传输需要传输的数据;校验区包含2个字节,前面字节固定且与帧尾第一个字节不同,后面字节为校验码;数据长度由1个字节构成,表示数据区的字节的个数,帧尾至少包含2字节,每个字节至少包含4组以上采用不同数值的相邻位,并保证与帧头不同;
为了将整个数据帧长度限制在256字节的范围内,数据区的长度定义为最少1个字节,最多166字节,增加转义字符后最多可达249字节。即数据区包含的所有数据最多为249字节,但实际的有效数据最多为166字节(剔除转义字符之后);
数据长度包含有效数据和***的转义字符,有效范围为1~249,其中有效数据最多166字节;
例如:帧头由2字节构成,依次为0x5A,0x54(0x5A在前,0x54在后);数据区由1~166有效字节构成,用于传输需要传输的数据;校验区由2个字节,前面字节固定为0,后面字节为数据区所有字节的算术和,溢出位舍去;此字段也可采用其他校验方法,例如CRC;数据长度由1个字节构成,表示数据区的字节的个数;帧尾由2字节构成,用0x5A,0xFE表示(0x5A在前,0xFE在后);
(2)发送方按照上述定义的数据结构化协议对离散的数据流进行组帧,以查询或中断方式将整帧数据发出;
由于数据的结构化协议将帧尾定义为整个数据帧中一个唯一的标识符(其它地方不能出现此标识),并以收到真正的帧尾作为收到一个完整数据帧的一个重要标志(收到真正帧尾和收到一个完整帧是在同一个时刻);为了防止数据区中也出现帧尾的标识符(0x5A,0xFE),数据的结构化协议定义,如果在数据区中出现连续的0x5A,0xFE(0x5A在先,0xFE在后)时,在前面***一个转义字符’\x0’,即用0+0x5A+0xFE替换0x5A+0xFE。由于数据长度肯定大于0,所以在帧数据识别的过程中,真正的帧尾应为:一个非0数+0x5A+0xFE。在数据区引入转义功能后就不可能出现帧尾的特征组合;
因此,具体的组帧步骤如下:
(2.1)根据定义的数据结构化协议确定本次通信过程中的帧头(0x5A,0x54)及帧尾(0x5A,0xFE)以及数据区的有效字节个数(例如4),将离散数据流中的每个数据按顺序依次排列到帧头之后,若数据中出现与帧尾一致的数据,则在该数据前***一个转义字符,直至数据区有效字节排列完毕;
(2.2)根据数据区内的数据确定校验码,填写校验区;
(2.3)根据数据区的有效字节个数、转义字符的个数计算数据长度并占用1个字节;
(2.4)在数据长度之后排列(2.1)中确定的帧尾,得到一个数据帧。
当所发送的数据中不含帧尾数据时,打包数据帧时不需要***转义符,如要求发送4个数据如下:
0x01 | 0x02 | 0x03 | 0x04 |
按照本发明所述数据结构化协议组成发送帧如下:
当所发送的数据中包含帧尾时,打包数据帧时需要***转义符,如要求发送4个数据:
0x1 | 0x5A | 0xFE | 0x4 |
按本协议要求组成发送帧如下:
其中用阴影标识的0x00即为***的转义字符,它并不是有效的数据,接收方在接收后应将其删除,而只保留其它4个数据;长度因为***转义字符,也由4增加到5,实际解析过程中,数据长度应从5中减去***的转义字符个数,即5-1=4。
(3)接收方以查询或中断方式将接收到的数据帧存入缓冲队列中,然后根据数据的结构化协议对缓冲队列中的数据帧进行提取和解析,从而获取数据帧中的有效数据,此过程必须识别一个完整合格帧,识别完整合格帧必须同时具备如下条件:
a)收到合格的帧尾标识;
b)收到帧头标识;
c)校验码正确。
具体的提取和解析步骤如下:
(3.1)从缓冲队列头开始向后,遍历每个元素,直到找到一个数据帧帧尾;
(3.2)从帧尾位置沿队列向前移动一个字节找到数据长度字段以及校验区;
(3.3)根据数据长度计算出帧头所在的位置,并沿队列向前找到帧头位置的队列元素值,校验帧头的正确性,若正确,则转(3.4),否则将帧尾之前的所有数据作为错误数据进行处理,并从缓冲队列中删除,转步骤(3.5);
(3.4)根据帧头的位置获取缓冲队列中紧随其后的数据区的数据,根据数据区的数据计算校验码,并与(3.2)中校验区中的校验码进行校核,若二者一致,则提取数据区内的有效数据及确定有效数据的长度,并将帧头至帧尾所有数据从缓冲队列中删除,完成本数据帧的提取;否则,将帧尾之前的所有数据作为错误数据进行处理,并从缓冲队列中删除,转步骤(3.5);
上述提取数据区内的有效数据,由于引入转义字符后,发送的数据帧与转义前相比可能会出现两个变化,一是数据区里除有效的数据外,还可能存在转义字符’\x0’,因此,要求接收方需对数据区的转义字符进行剔除,即如果在数据区出现“0+0x5A+0xFE”,则用“0x5A+0xFE”代替。
接收方确定有效数据长度时,由于引入转义字符后,数据长度字段的内容是有效数据的个数加上增加转义字符的个数,因此,计算数据有效长度时也应将转义的个数剔除。
(3.5)判断缓冲队列是否为空,若不为空,则转步骤(3.1),否则处理结束。
本发明未详细描述内容为本领域技术人员公知技术。
Claims (6)
1.一种面向离散数据流的可靠异步通信方法,其特征在于通过下述步骤实现:
(1)定义数据的结构化协议:
发送顺序为从帧头到帧尾,其中:帧头至少包含2字节,每个字节至少包含4组以上采用不同数值的相邻位;数据区由1~166个有效字节构成,用于传输需要传输的数据;校验区包含2个字节,前面字节固定且与帧尾第一个字节不同,后面字节为校验码;数据长度由1个字节构成,表示数据区的字节的个数,帧尾至少包含2字节,每个字节至少包含4组以上采用不同数值的相邻位,并保证与帧头不同;
(2)发送方按照上述定义的数据结构化协议对离散的数据流进行组帧,以查询或中断方式将整帧数据发出;
(3)接收方以查询或中断方式将接收到的数据帧存入缓冲队列中,然后根据数据的结构化协议对缓冲队列中的数据帧进行提取和解析,从而获取数据帧中的有效数据。
2.根据权利要求1所述的方法,其特征在于:步骤(2)中的组帧步骤如下:
(2.1)根据定义的数据结构化协议确定本次通信过程中的帧头及帧尾以及数据区的有效字节个数,将离散数据流中的每个数据按顺序依次排列到帧头之后,若数据中出现与帧尾一致的数据,则在该数据前***一个转义字符,直至数据区有效字节排列完毕;
(2.2)根据数据区内的数据确定校验码,填写校验区;
(2.3)根据数据区的有效字节个数、转义字符的个数计算数据长度并占用1个字节;
(2.4)在数据长度之后排列(2.1)中确定的帧尾,得到一个数据帧。
3.根据权利要求1所述的方法,其特征在于:步骤(3)中对缓冲队列中的数据帧进行提取和解析,获取数据帧中的有效数据必须识别一个完整合格帧,识别完整合格帧必须同时具备如下条件:
a)收到合格的帧尾标识;
b)收到帧头标识;
c)校验码正确。
4.根据权利要求1或3所述的方法,其特征在于:提取和解析步骤如下:
(3.1)从缓冲队列头开始向后,遍历每个元素,直到找到一个数据帧帧尾;
(3.2)从帧尾位置沿队列向前移动一个字节找到数据长度字段以及校验区;
(3.3)根据数据长度计算出帧头所在的位置,并沿队列向前找到帧头位置的队列元素值,校验帧头的正确性,若正确,则转(3.4),否则将帧尾之前的所有数据作为错误数据进行处理,并从缓冲队列中删除,转步骤(3.5);
(3.4)根据帧头的位置获取缓冲队列中紧随其后的数据区的数据,根据数据区的数据计算校验码,并与(3.2)中校验区中的校验码进行校核,若二者一致,则提取数据区内的数据并剔除转义字符,并将帧头至帧尾所有数据从缓冲队列中删除,完成本数据帧的提取;否则,将帧尾之前的所有数据作为错误数据进行处理,并从缓冲队列中删除,转步骤(3.5);
(3.5)判断缓冲队列是否为空,若不为空,则转步骤(3.1),否则处理结束。
5.根据权利要求1所述的方法,其特征在于:所述的转义字符为0x00。
6.根据权利要求1所述的方法,其特征在于:数据长度包含有效数据和***的转义字符,有效范围为1~249,其中有效数据最多166字节。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710256778.2A CN107135049B (zh) | 2017-04-19 | 2017-04-19 | 一种面向离散数据流的可靠异步通信方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710256778.2A CN107135049B (zh) | 2017-04-19 | 2017-04-19 | 一种面向离散数据流的可靠异步通信方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107135049A true CN107135049A (zh) | 2017-09-05 |
CN107135049B CN107135049B (zh) | 2020-08-14 |
Family
ID=59715010
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710256778.2A Active CN107135049B (zh) | 2017-04-19 | 2017-04-19 | 一种面向离散数据流的可靠异步通信方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107135049B (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108418820A (zh) * | 2018-02-28 | 2018-08-17 | 北京零壹空间科技有限公司 | 串行数据的接收方法及装置 |
CN108512785A (zh) * | 2018-04-13 | 2018-09-07 | 南京优米亚信息科技有限公司 | 一种数据传输协议方法 |
CN108880746A (zh) * | 2018-05-25 | 2018-11-23 | 共享智能铸造产业创新中心有限公司 | 射频通信数据中正确数据的采集方法及其采集*** |
CN109309676A (zh) * | 2018-09-28 | 2019-02-05 | 中国银行股份有限公司 | 数据传输端、数据接收端、数据处理***及方法 |
CN109639957A (zh) * | 2017-10-05 | 2019-04-16 | 印芯科技股份有限公司 | 图像数据传输***及图像数据传输方法 |
CN110912931A (zh) * | 2019-12-16 | 2020-03-24 | 上海无线电设备研究所 | 一种基于字符转义的数据通信组帧方法 |
CN111314268A (zh) * | 2018-12-11 | 2020-06-19 | 航天信息股份有限公司 | 一种数据包分析方法及装置 |
CN111711609A (zh) * | 2020-05-21 | 2020-09-25 | 重庆川仪自动化股份有限公司 | 一种串口通信中的协议设计方法 |
CN114390116A (zh) * | 2021-12-21 | 2022-04-22 | 中国船舶重工集团公司第七〇五研究所 | 异构通讯方法和多协议混合的异构通讯控制器 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1744068A (zh) * | 2004-09-02 | 2006-03-08 | 北京中星微电子有限公司 | 一种适应于串行***设备接口总线高层协议的帧结构 |
CN101866328A (zh) * | 2010-04-01 | 2010-10-20 | 和记奥普泰通信技术有限公司 | 一种自动访问的串行总线读写控制方法 |
CN102035648A (zh) * | 2010-09-29 | 2011-04-27 | 北京航天自动控制研究所 | 一种飞行器状态信息的安全实时软回收***及方法 |
CN104618208A (zh) * | 2015-01-26 | 2015-05-13 | 国电南瑞科技股份有限公司 | 数据弹***互综合总线*** |
CN104811273A (zh) * | 2015-04-02 | 2015-07-29 | 福州大学 | 一种高速单总线通信的实现方法 |
CN105573958A (zh) * | 2016-01-12 | 2016-05-11 | 西北工业大学 | 一种基于rs-422串行总线技术的数据可靠交互方法 |
CN106406328A (zh) * | 2016-11-05 | 2017-02-15 | 杭州畅动智能科技有限公司 | 一种基于机器人开发平台的运动控制方法 |
-
2017
- 2017-04-19 CN CN201710256778.2A patent/CN107135049B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1744068A (zh) * | 2004-09-02 | 2006-03-08 | 北京中星微电子有限公司 | 一种适应于串行***设备接口总线高层协议的帧结构 |
CN101866328A (zh) * | 2010-04-01 | 2010-10-20 | 和记奥普泰通信技术有限公司 | 一种自动访问的串行总线读写控制方法 |
CN102035648A (zh) * | 2010-09-29 | 2011-04-27 | 北京航天自动控制研究所 | 一种飞行器状态信息的安全实时软回收***及方法 |
CN104618208A (zh) * | 2015-01-26 | 2015-05-13 | 国电南瑞科技股份有限公司 | 数据弹***互综合总线*** |
CN104811273A (zh) * | 2015-04-02 | 2015-07-29 | 福州大学 | 一种高速单总线通信的实现方法 |
CN105573958A (zh) * | 2016-01-12 | 2016-05-11 | 西北工业大学 | 一种基于rs-422串行总线技术的数据可靠交互方法 |
CN106406328A (zh) * | 2016-11-05 | 2017-02-15 | 杭州畅动智能科技有限公司 | 一种基于机器人开发平台的运动控制方法 |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109639957A (zh) * | 2017-10-05 | 2019-04-16 | 印芯科技股份有限公司 | 图像数据传输***及图像数据传输方法 |
CN109639957B (zh) * | 2017-10-05 | 2020-11-13 | 广州印芯半导体技术有限公司 | 图像数据传输***及图像数据传输方法 |
CN108418820A (zh) * | 2018-02-28 | 2018-08-17 | 北京零壹空间科技有限公司 | 串行数据的接收方法及装置 |
CN108512785A (zh) * | 2018-04-13 | 2018-09-07 | 南京优米亚信息科技有限公司 | 一种数据传输协议方法 |
CN108512785B (zh) * | 2018-04-13 | 2020-12-25 | 南京优米亚信息科技有限公司 | 一种数据传输协议方法 |
CN108880746A (zh) * | 2018-05-25 | 2018-11-23 | 共享智能铸造产业创新中心有限公司 | 射频通信数据中正确数据的采集方法及其采集*** |
CN109309676A (zh) * | 2018-09-28 | 2019-02-05 | 中国银行股份有限公司 | 数据传输端、数据接收端、数据处理***及方法 |
CN111314268A (zh) * | 2018-12-11 | 2020-06-19 | 航天信息股份有限公司 | 一种数据包分析方法及装置 |
CN111314268B (zh) * | 2018-12-11 | 2022-06-07 | 航天信息股份有限公司 | 一种数据包分析方法及装置 |
CN110912931A (zh) * | 2019-12-16 | 2020-03-24 | 上海无线电设备研究所 | 一种基于字符转义的数据通信组帧方法 |
CN111711609A (zh) * | 2020-05-21 | 2020-09-25 | 重庆川仪自动化股份有限公司 | 一种串口通信中的协议设计方法 |
CN114390116A (zh) * | 2021-12-21 | 2022-04-22 | 中国船舶重工集团公司第七〇五研究所 | 异构通讯方法和多协议混合的异构通讯控制器 |
Also Published As
Publication number | Publication date |
---|---|
CN107135049B (zh) | 2020-08-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107135049A (zh) | 一种面向离散数据流的可靠异步通信方法 | |
US7684344B2 (en) | Method and system for transparent TCP offload | |
US8166227B2 (en) | Apparatus for processing peripheral component interconnect express protocol | |
WO2016037474A1 (zh) | 定帧方法及装置 | |
CN105791777B (zh) | 基于fpga的千兆以太网视频多路采集传输*** | |
CN105162734B (zh) | 基于Zigbee网络的多源数据传输*** | |
US7571271B2 (en) | Lane merging | |
CN106453129A (zh) | 一种大象流两级识别***及方法 | |
CN110971387A (zh) | 一种数据传输处理方法、发送设备和接收设备 | |
CN113660295B (zh) | 报文处理装置 | |
CN110704356A (zh) | 一种通用的解析串口数据方法 | |
CA2529600A1 (en) | Method and system for efficient flow control for client data frames over gfp across a sonet/sdh transport path | |
CN116506530B (zh) | 一种误码率低的多协议rfid读写器 | |
CN110912841B (zh) | 面向128bit位宽的SRIO协议控制字符与数据包分离*** | |
US8934364B2 (en) | Method and system for aligning each dispatching service in optical transfer networks | |
CN104735551B (zh) | Advb接收容错及处理方法 | |
US9124499B2 (en) | Frame transmission system | |
US9553795B2 (en) | Port switching method, analysis device, and recording medium | |
US10880234B2 (en) | Cut-through switching system | |
CN116561045B (zh) | 一种双处理器核间通信方法、装置、tbox及存储介质 | |
CN115955271B (zh) | 卫星数据传输方法、装置及电子设备 | |
CN112506846B (zh) | 一种芯片内部模块间通信***及方法 | |
JP2655099B2 (ja) | シリアル通信方法 | |
CN104468128B (zh) | 用于嵌入式网络处理器的网络接口类型扩展适配*** | |
CN102098333A (zh) | 一种hdlc数据处理的方法和*** |
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 |