CN110704356A - 一种通用的解析串口数据方法 - Google Patents
一种通用的解析串口数据方法 Download PDFInfo
- Publication number
- CN110704356A CN110704356A CN201910909133.3A CN201910909133A CN110704356A CN 110704356 A CN110704356 A CN 110704356A CN 201910909133 A CN201910909133 A CN 201910909133A CN 110704356 A CN110704356 A CN 110704356A
- Authority
- CN
- China
- Prior art keywords
- data
- array
- data frame
- content
- 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.)
- Pending
Links
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
-
- 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/22—Parsing or analysis of headers
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Communication Control (AREA)
- Detection And Prevention Of Errors In Transmission (AREA)
Abstract
本发明涉及一种通用的解析串口数据方法,涉及串口通讯技术领域。本发明通过移动数据帧字节,能够根据每一帧串口数据的数据帧头和数据帧尾或数据校验和,解析出完整的串口有效数据段。该方法适用于所有带数据帧头、数据帧尾或数据校验和的串口数据帧的解析,采用通用的串口数据解析架构,对串口传输过程中出现的误码或是任意组合的串口数据均能够有效的实现串口数据的解析。该方法极大地提高了串口通讯的容错能力,不同格式的串口数据只需修改串口数据的长度、数据帧头和数据帧尾或数据校验和字段就能实现该串口数据的解析功能。
Description
技术领域
本发明涉及串口通讯技术领域,具体涉及一种通用的解析串口数据方法。
背景技术
为了提高串口接收程序的可靠性,目前最常见的做法是在制定串口协议报文时,在发送的有效串口数据内容前增加数据帧头,在发送的有效串口数据内容后增加数据帧尾或数据校验和。在串口通讯的过程中,串口数据的接收方必须对接收到的串口数据进行解析,即从接收到的串口数据中找到数据帧头和数据帧尾,并计算数据校验和,最后提取每一帧有效的串口数据内容。
目前对接收到的串口数据的解析方法有很多种,有的方法和串口通讯协议耦合的比较紧,一旦协议发生改变,串口数据的解析处理就会发生较大的改动,该方法无法形成一种通用的数据解析框架;有的方法软件可靠性不高,数据容错机制不完备,在遇到串口有效数据内容中出现帧头数据或者帧尾数据时,串口数据解析处理有可能存在缺陷,导致无法解析出正确的串口数据。
为了解决串口数据解析方法中存在的不足,提高串口数据解析的可靠性和串口数据的容错能力,需要提出一种通用的解析串口数据方法。
发明内容
(一)要解决的技术问题
本发明要解决的技术问题是:如何实现一种通用的解析串口数据方法,有效地保证串口数据解析的正确性和可靠性,提高串口通讯的容错能力。
(二)技术方案
为了解决上述技术问题,本发明提供了一种通用的解析串口数据方法,该方法中通过移动数据帧字节的方法找到数据帧头和数据帧尾。
优选地,该方法中,先按照字节先找到该串口数据帧的帧头,再找到该串口数据帧的帧尾或数据校验和,解析出正确的串口有效数据段内容;如果找不到该串口数据帧的帧头,或者找不到该串口数据帧的帧尾,或者该串口数据帧的数据校验和错误,则通过移动数据帧字节的方法重新寻找该串口数据帧的帧头、帧尾或数据校验和。
优选地,该方法包括以下步骤:
(1)设接收到的串口数据的长度为N,串口数据中每一帧的数据帧头的长度为L1个字节,每一帧的有效数据长度为L2个字节,数据帧尾或数据校验和的长度为L3个字节,其中,每一帧串口数据的长度L=数据帧头长度L1+有效数据长度L2+数据帧尾或数据校验和的长度L3;
(2)在接收到的串口数据中,从头开始按字节查找数据帧头,直到N个字节的串口数据全部查找完毕;
(3)从接收到的串口数据的当前位置每处理一个字节数据,将处理计数加一,并将该字节数据内容保存在以处理计数减一为下标的数组A里;
(4)如果当前处理计数值等于数据帧头的长度,判断数组A中的数据内容是否与数据帧头相同,若相同,表明找到数据帧头,则执行步骤(5)的操作;否则,表明没有找到数据帧头,将处理计数值设置为1,将数组A中的第二个字节内容作为数组A的第一个字节内容,将数组A中的第三个字节内容作为数组A的第二个字节内容,以此类推,然后返回重新判断数组A中的数据内容是否与数据帧头相同;
(5)如果当前处理计数值等于该帧串口数据的长度L时,判断数组A中的数据帧头内容是否与协议中数据帧头相同,且数组A中的数据帧尾或数据校验和内容是否与协议中数据帧尾或数据校验和相同,若相同,表明找到数据帧尾或数据校验和正确,此时在数组A中除去数据帧头和数据帧尾部分的串口数据内容即为接收到的有效串口数据,或者在数组A中除去数据帧头和或数据校验和部分的串口数据内容即为接收到的有效串口数据,并将处理计数值设置为0;若不相同,则执行步骤(6)的操作;
(6)若没有找到数据帧尾或者数据校验和错误,先将“找到帧头成功”标志清零,然后从数组A中的第二个字节开始重新找数据帧头,并设置处理计数值为数组A的总长度L减去数组A的当前下标值,如果在数组A中找到了数据帧头,则将“找到帧头成功”标志设置为1,同时将数组A中当前下标的内容作为数组A的第一个字节内容,将数组A中当前下标加一的内容作为数组A的第二个字节内容,以此类推,得到新的数组A,然后准备查找数据帧尾或者比较数据校验和,执行步骤(5)的操作;如果在数组A中没有找到数据帧头,则将数组A的最后(L1-1)个长度的字节按照字节顺序依次存放在数组A的前(L1-1)个长度的字节位置中,并将处理计数值设置为(L1-1),然后返回步骤(4)重新判断数组A中的数据内容是否与数据帧头相同。
(三)有益效果
本发明通过移动数据帧字节,能够根据每一帧串口数据的数据帧头和数据帧尾或数据校验和,解析出完整的串口有效数据段。该方法适用于所有带数据帧头、数据帧尾或数据校验和的串口数据帧的解析,采用通用的串口数据解析架构,对串口传输过程中出现的误码或是任意组合的串口数据(串口的有效数据段中含有数据帧头、数据帧尾或数据校验和)均能够有效的实现串口数据的解析。该方法极大地提高了串口通讯的容错能力,不同格式的串口数据只需修改串口数据的长度、数据帧头和数据帧尾或数据校验和字段就能实现该串口数据的解析功能。
附图说明
图1为本发明的方法流程图。
具体实施方式
为使本发明的目的、内容、和优点更加清楚,下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。
为了能够有效的保证串口数据解析的正确性和可靠性,本发明提出了一种通用的解析串口数据方法,如图1所示,包括以下步骤:
(1)设接收到的串口数据的长度为N(N>0),串口数据中每一帧的数据帧头的长度为L1(0<L1<N)个字节,每一帧的有效数据长度为L2(0<L2<N)个字节,数据帧尾或数据校验和的长度为L3(0<L3<N)个字节,其中,每一帧串口数据的长度L=数据帧头长度L1+有效数据长度L2+数据帧尾或数据校验和的长度L3;
(2)在接收到的串口数据中,从头开始按字节查找数据帧头,直到N个字节的串口数据全部查找完毕;
(3)从接收到的串口数据的当前位置每处理一个字节数据,将处理计数加一,并将该字节数据内容保存在以处理计数减一为下标的数组A里;
(4)如果当前处理计数值等于数据帧头的长度,判断数组A中的数据内容是否与数据帧头相同,若相同,表明找到数据帧头,则执行步骤(5)的操作;否则,表明没有找到数据帧头,将处理计数值设置为1,将数组A中的第二个字节内容作为数组A的第一个字节内容,将数组A中的第三个字节内容作为数组A的第二个字节内容,…,以此类推,然后返回重新判断数组A中的数据内容是否与数据帧头相同;
(5)如果当前处理计数值等于该帧串口数据的长度L时,判断数组A中的数据帧头内容是否与协议中数据帧头相同,且数组A中的数据帧尾或数据校验和内容是否与协议中数据帧尾或数据校验和相同,若相同,表明找到数据帧尾或数据校验和正确,此时在数组A中除去数据帧头和数据帧尾(或数据校验和)部分的串口数据内容即为接收到的有效串口数据,并将处理计数值设置为0;若不相同,则执行步骤(6)的操作;
(6)若没有找到数据帧尾或者数据校验和错误,先将“找到帧头成功”标志清零,然后从数组A中的第二个字节开始重新找数据帧头,并设置处理计数值为数组A的总长度L减去数组A的当前下标值,如果在数组A中找到了数据帧头,则将“找到帧头成功”标志设置为1,同时将数组A中当前下标的内容作为数组A的第一个字节内容,将数组A中当前下标加一的内容作为数组A的第二个字节内容,以此类推,得到新的数组A,然后准备查找数据帧尾或者比较数据校验和,执行步骤(5)的操作;如果在数组A中没有找到数据帧头,则将数组A的最后(L1-1)个长度的字节按照字节顺序依次存放在数组A的前(L1-1)个长度的字节位置中,并将处理计数值设置为(L1-1),然后返回步骤步骤(4)重新判断数组A中的数据内容是否与数据帧头相同。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。
Claims (7)
1.一种通用的解析串口数据方法,其特征在于,该方法中通过移动数据帧字节的方法找到数据帧头和数据帧尾。
2.如权利要求1所述的方法,其特征在于,该方法中,先按照字节先找到该串口数据帧的帧头,再找到该串口数据帧的帧尾或数据校验和,解析出正确的串口有效数据段内容;如果找不到该串口数据帧的帧头,或者找不到该串口数据帧的帧尾,或者该串口数据帧的数据校验和错误,则通过移动数据帧字节的方法重新寻找该串口数据帧的帧头、帧尾或数据校验和。
3.如权利要求2所述的方法,其特征在于,该方法包括以下步骤:
(1)设接收到的串口数据的长度为N,串口数据中每一帧的数据帧头的长度为L1个字节,每一帧的有效数据长度为L2个字节,数据帧尾或数据校验和的长度为L3个字节,其中,每一帧串口数据的长度L=数据帧头长度L1+有效数据长度L2+数据帧尾或数据校验和的长度L3;
(2)在接收到的串口数据中,从头开始按字节查找数据帧头,直到N个字节的串口数据全部查找完毕;
(3)从接收到的串口数据的当前位置每处理一个字节数据,将处理计数加一,并将该字节数据内容保存在以处理计数减一为下标的数组A里;
(4)如果当前处理计数值等于数据帧头的长度,判断数组A中的数据内容是否与数据帧头相同,若相同,表明找到数据帧头,则执行步骤(5)的操作;否则,表明没有找到数据帧头,将处理计数值设置为1,将数组A中的第二个字节内容作为数组A的第一个字节内容,将数组A中的第三个字节内容作为数组A的第二个字节内容,以此类推,然后返回重新判断数组A中的数据内容是否与数据帧头相同;
(5)如果当前处理计数值等于该帧串口数据的长度L时,判断数组A中的数据帧头内容是否与协议中数据帧头相同,且数组A中的数据帧尾或数据校验和内容是否与协议中数据帧尾或数据校验和相同,若相同,表明找到数据帧尾或数据校验和正确,此时在数组A中除去数据帧头和数据帧尾部分的串口数据内容即为接收到的有效串口数据,或者在数组A中除去数据帧头和或数据校验和部分的串口数据内容即为接收到的有效串口数据,并将处理计数值设置为0;若不相同,则执行步骤(6)的操作;
(6)若没有找到数据帧尾或者数据校验和错误,先将“找到帧头成功”标志清零,然后从数组A中的第二个字节开始重新找数据帧头,并设置处理计数值为数组A的总长度L减去数组A的当前下标值,如果在数组A中找到了数据帧头,则将“找到帧头成功”标志设置为1,同时将数组A中当前下标的内容作为数组A的第一个字节内容,将数组A中当前下标加一的内容作为数组A的第二个字节内容,以此类推,得到新的数组A,然后准备查找数据帧尾或者比较数据校验和,执行步骤(5)的操作;如果在数组A中没有找到数据帧头,则将数组A的最后(L1-1)个长度的字节按照字节顺序依次存放在数组A的前(L1-1)个长度的字节位置中,并将处理计数值设置为(L1-1),然后返回步骤(4)重新判断数组A中的数据内容是否与数据帧头相同。
4.如权利要求3所述的方法,其特征在于,N>0。
5.如权利要求3所述的方法,其特征在于,0<L1<N。
6.如权利要求3所述的方法,其特征在于,0<L2<N。
7.如权利要求3所述的方法,其特征在于,0<L3<N。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910909133.3A CN110704356A (zh) | 2019-09-25 | 2019-09-25 | 一种通用的解析串口数据方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910909133.3A CN110704356A (zh) | 2019-09-25 | 2019-09-25 | 一种通用的解析串口数据方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110704356A true CN110704356A (zh) | 2020-01-17 |
Family
ID=69197134
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910909133.3A Pending CN110704356A (zh) | 2019-09-25 | 2019-09-25 | 一种通用的解析串口数据方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110704356A (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111339020A (zh) * | 2020-02-25 | 2020-06-26 | 东莞市峰谷科技有限公司 | 一种串口数据的收发方法 |
CN111711609A (zh) * | 2020-05-21 | 2020-09-25 | 重庆川仪自动化股份有限公司 | 一种串口通信中的协议设计方法 |
CN111858447A (zh) * | 2020-07-13 | 2020-10-30 | 深圳市集贤科技有限公司 | 一种从串口接收数据、处理数据帧的方法 |
CN113259055A (zh) * | 2021-05-19 | 2021-08-13 | 金华卓远实业有限公司 | 一种单线uart高效通讯方法 |
CN113824731A (zh) * | 2021-09-30 | 2021-12-21 | 深圳市卓翼科技股份有限公司 | 一种串口协议帧解析方法、设备及计算机可读存储介质 |
CN113886314A (zh) * | 2021-09-08 | 2022-01-04 | 江苏徐工工程机械研究院有限公司 | 一种串口gps报文数据的接收及解析方法、系统 |
CN114337915A (zh) * | 2021-12-02 | 2022-04-12 | 华人运通(江苏)技术有限公司 | 基于串行通讯的私有协议容错处理方法、装置及存储介质 |
CN114979307A (zh) * | 2022-04-19 | 2022-08-30 | 杭州涂鸦信息技术有限公司 | 通信协议的解析方法、智能终端及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2010012242A1 (zh) * | 2008-07-31 | 2010-02-04 | 中兴通讯股份有限公司 | 一种移动多媒体广播终端的解复用装置及方法 |
CN102098131A (zh) * | 2009-12-15 | 2011-06-15 | 航天科工惯性技术有限公司 | 一种基于动态参数配置的串口数据帧通用组帧解帧方法 |
CN102510323A (zh) * | 2011-09-22 | 2012-06-20 | 航天科工惯性技术有限公司 | 一种串口数据的帧识别方法 |
CN104780140A (zh) * | 2014-01-12 | 2015-07-15 | 盛吉高科(北京)科技有限公司 | 一种可配置的通信协议识别与解析处理系统 |
-
2019
- 2019-09-25 CN CN201910909133.3A patent/CN110704356A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2010012242A1 (zh) * | 2008-07-31 | 2010-02-04 | 中兴通讯股份有限公司 | 一种移动多媒体广播终端的解复用装置及方法 |
CN102098131A (zh) * | 2009-12-15 | 2011-06-15 | 航天科工惯性技术有限公司 | 一种基于动态参数配置的串口数据帧通用组帧解帧方法 |
CN102510323A (zh) * | 2011-09-22 | 2012-06-20 | 航天科工惯性技术有限公司 | 一种串口数据的帧识别方法 |
CN104780140A (zh) * | 2014-01-12 | 2015-07-15 | 盛吉高科(北京)科技有限公司 | 一种可配置的通信协议识别与解析处理系统 |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111339020A (zh) * | 2020-02-25 | 2020-06-26 | 东莞市峰谷科技有限公司 | 一种串口数据的收发方法 |
CN111711609A (zh) * | 2020-05-21 | 2020-09-25 | 重庆川仪自动化股份有限公司 | 一种串口通信中的协议设计方法 |
CN111858447A (zh) * | 2020-07-13 | 2020-10-30 | 深圳市集贤科技有限公司 | 一种从串口接收数据、处理数据帧的方法 |
CN113259055A (zh) * | 2021-05-19 | 2021-08-13 | 金华卓远实业有限公司 | 一种单线uart高效通讯方法 |
CN113886314A (zh) * | 2021-09-08 | 2022-01-04 | 江苏徐工工程机械研究院有限公司 | 一种串口gps报文数据的接收及解析方法、系统 |
CN113824731A (zh) * | 2021-09-30 | 2021-12-21 | 深圳市卓翼科技股份有限公司 | 一种串口协议帧解析方法、设备及计算机可读存储介质 |
CN114337915A (zh) * | 2021-12-02 | 2022-04-12 | 华人运通(江苏)技术有限公司 | 基于串行通讯的私有协议容错处理方法、装置及存储介质 |
CN114979307A (zh) * | 2022-04-19 | 2022-08-30 | 杭州涂鸦信息技术有限公司 | 通信协议的解析方法、智能终端及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110704356A (zh) | 一种通用的解析串口数据方法 | |
CN111010253B (zh) | 一种基于hinoc协议的himac拆帧系统、方法 | |
US20090271685A1 (en) | Method for Processing Packets, an Apparatus for Transmitting Packets, and an Apparatus for Receiving Packets | |
CN113392060A (zh) | 一种通用的串口数据接收处理方法 | |
CN111711609A (zh) | 一种串口通信中的协议设计方法 | |
CN114710224A (zh) | 帧同步方法及装置、计算机可读介质、电子设备 | |
CN113824731B (zh) | 一种串口协议帧解析方法、设备及计算机可读存储介质 | |
CN110912931A (zh) | 一种基于字符转义的数据通信组帧方法 | |
WO2014135038A1 (zh) | 基于pcie总线的报文传输方法与装置 | |
CN109728879B (zh) | 串口突发接入应用层slip协议报文同步纠错方法 | |
CN112436998A (zh) | 一种数据传输方法及电子设备 | |
EP3065323B1 (en) | Transmission method and device based on management data input/output multi-source agreements | |
CN104717203B (zh) | 总线通信协议识别方法 | |
CN115695576B (zh) | 一种兼容tsn帧抢占协议的数据帧转换方法及装置 | |
CN115801927A (zh) | 报文解析方法及装置 | |
CN114979307A (zh) | 通信协议的解析方法、智能终端及存储介质 | |
CN111814161A (zh) | 一种数据传输方法及系统 | |
CN117271202B (zh) | 多遍重发数据最优提取方法 | |
CN117131091A (zh) | 一种通用的串口数据滑窗方法 | |
CN115955271B (zh) | 卫星数据传输方法、装置及电子设备 | |
CN117978325A (zh) | 信号系统间传递数据的有效数据帧侦测方法、设备及介质 | |
US20030214973A1 (en) | Method and apparatus for separating data packets in a memory buffer | |
CN112286891A (zh) | 一种的嵌入式以太网数据采集方法 | |
CN114915548B (zh) | 一种基于单片机can协议可视化配置和自动解析方法 | |
CN109361748B (zh) | Binlog文件下载方法、装置、设备及可读存储介质 |
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: 20200117 |
|
WD01 | Invention patent application deemed withdrawn after publication |