CN115037798B - 一种时统报文数据包分发方法 - Google Patents

一种时统报文数据包分发方法 Download PDF

Info

Publication number
CN115037798B
CN115037798B CN202210958004.5A CN202210958004A CN115037798B CN 115037798 B CN115037798 B CN 115037798B CN 202210958004 A CN202210958004 A CN 202210958004A CN 115037798 B CN115037798 B CN 115037798B
Authority
CN
China
Prior art keywords
data
buffer area
temporary buffer
sentence
serial
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.)
Active
Application number
CN202210958004.5A
Other languages
English (en)
Other versions
CN115037798A (zh
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.)
Chengdu Jinnuoxin High Tech Co ltd
Original Assignee
Chengdu Jinnuoxin High Tech Co ltd
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 Chengdu Jinnuoxin High Tech Co ltd filed Critical Chengdu Jinnuoxin High Tech Co ltd
Priority to CN202210958004.5A priority Critical patent/CN115037798B/zh
Publication of CN115037798A publication Critical patent/CN115037798A/zh
Application granted granted Critical
Publication of CN115037798B publication Critical patent/CN115037798B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D30/00Reducing energy consumption in communication networks
    • Y02D30/50Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明公开了一种时统报文数据包分发方法,应用于数据包分发装置,所述数据包分发装置包括处理器和串行字符设备,所述串行字符设备的输出端与处理器连接。所述时统报文数据包分发方法包括:根据待接收语句的类型和长度设置多个临时缓冲区;将串行字符设备的数据接收模式设置为中断模式;处理器在串行字符设备接收到串行数据后,将该串行数据存储在缓存寄存器中;处理器在检测到中断信号后读取所述缓存寄存器中的串行数据;处理器根据所述串行数据的内容确定该串行数据对应的临时缓冲区;处理器将所述串行数据存储至其对应的临时缓冲区。本发明的方法节约了***的内存资源。

Description

一种时统报文数据包分发方法
技术领域
本发明属于导航定位技术领域,特别是涉及一种时统报文数据包分发方法。
背景技术
在定位领域,接收机出的报文是标准的0183格式协议。通常情况下多条报文是连续发出来的,需要对这些报文逐一解析或者转发。目前针对这种场景的处理方法是通过开辟缓冲区全部收下来,然后再从缓冲区读出数据,逐一解析。如图1所示,这种方法存在如下弊端:第一,需要开辟双份缓存空间(如图1中的接收缓存区和处理缓存区),对MCU(微控制单元)这种SDRAM较小的处理器压力较大;第二,对于一个缓冲区,一边是接收到数据往其中填写,一边又需要适时把数据读出来进行分析处理,如果报文发送周期不严格,在将数据拷贝出缓冲区时,容易出现截断一帧数据的情形,如果为了避免截断,又需要考虑两个缓冲区的内容连续性问题。
发明内容
本发明的目的在于克服现有技术的不足,提供一种时统报文数据包分发方法。
本发明的目的是通过以下技术方案来实现的:一种时统报文数据包分发方法,应用于数据包分发装置,所述数据包分发装置包括处理器和串行字符设备,所述串行字符设备的输出端与处理器连接。所述时统报文数据包分发方法包括:
根据待接收语句的类型和长度设置多个临时缓冲区;
将串行字符设备的数据接收模式设置为中断模式;
处理器在串行字符设备接收到串行数据后,将该串行数据存储在缓存寄存器中;
处理器在检测到中断信号后读取所述缓存寄存器中的串行数据;
处理器根据所述串行数据的内容确定该串行数据对应的临时缓冲区;
处理器将所述串行数据存储至其对应的临时缓冲区。
进一步地,根据待接收语句的类型和长度设置多个临时缓冲区,包括:
分别为每种类型的第一语句设置一个对应的临时缓冲区;
根据第一语句的长度设置对应的临时缓冲区的大小;
根据预设值设置特殊缓冲区的大小;
其中,所述第一语句为所述待接收语句中已知语句头和语句尾的语句,所述第二语句为所述待接收语句中除第一语句以外的其余语句。
进一步地,处理器根据所述串行数据的内容确定该串行数据对应的临时缓冲区,包括:
判断在第一数据之前是否接收到过串行数据,所述第一数据为当前接收到的串行数据;
若在第一数据之前未接收到过串行数据,则判断所述第一数据是否为语句头:若所述第一数据为语句头,则根据第一数据的语句类型确定对应的临时缓冲区,并将该临时缓冲区设置为当前缓冲区;若所述第一数据不是语句头,则第一数据对应的临时缓冲区为特殊缓冲区;
若在第一数据之前接收到过串行数据,则判断第一数据之前是否存在语句尾;
若所述第一数据之前不存在语句尾,则判断第一数据是否为语句头:若第一数据为语句头,则根据第一数据的语句类型确定对应的临时缓冲区,并将该临时缓冲区作为当前缓冲区;若第一数据不是语句头,则第一数据对应的临时缓冲区为特殊缓冲区;
若所述第一数据之前存在语句尾,则判断第一数据和距第一数据最近的语句尾之间是否存在语句头;
若第一数据和距第一数据最近的语句尾之间存在语句头,则第一数据对应的临时缓冲区为当前缓冲区;
若第一数据和距第一数据最近的语句尾之间不存在语句头,则判断所述第一数据是否为语句头:若所述第一数据为语句头,则根据第一数据的语句类型确定对应的临时缓冲区,并将该临时缓冲区作为当前缓冲区;若所述第一数据不是语句头,则第一数据对应的临时缓冲区为特殊缓冲区。
进一步地,根据第一数据的语句类型确定对应的临时缓冲区,包括:
确定所述第一数据对应的语句类型;
获取所述第一数据对应的语句类型对应的临时缓冲区,并将该临时缓冲区作为第一数据对应的临时缓冲区。
进一步地,所述时统报文数据包分发方法还包括:
处理器循环查询每个临时缓冲区的串行数据是否有语句尾;
若临时缓冲区的串行数据有语句尾,则对该临时缓冲区中的串行数据进行处理。
优选的,对该临时缓冲区中的串行数据进行处理,包括:
对该临时缓冲区中的串行数据进行转发;或者,
对该临时缓冲区中的串行数据进行解析。
进一步地,所述处理器为MCU。
进一步地,所述MCU的串口波特率为115200,所述MCU的时钟频率大于等于100MHz。
进一步地,所述MCU的时钟频率为100MHz,所述MCU的串口波特率小于等于115200。
本发明的有益效果是:
(1)本发明中临时缓冲区大小的总和等于传统方法中接收缓存区的大小,减少了传统方法中处理缓存区占用的空间,从而节约了内存资源,适合内存资源相对紧张的设备(如MCU这种SDRAM较小的处理器);
(2)本发明的方法相较于传统方法更加简便、可靠;具体的,本发明的方法只需要在接收串行数据时判断存放位置即可,接收到的串行数据在临时缓冲区放好后,只需要将串行数据读出进行处理即可,无需考虑什么时候将数据从接收缓存区拷贝到处理缓存区,也不需要考虑拷贝数据的过程中还在接收数据怎么办。
附图说明
图1为现有技术中数据包分发的一种示意图;
图2为本发明中数据包分发的一种示意图;
图3为本发明中数据包分发的一种流程图;
图4为本发明中确定串行数据对应的临时缓冲区的一种流程图。
具体实施方式
下面将结合实施例,对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有付出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
参阅图2-图4,本实施例提供了一种时统报文数据包分发方法:
一种时统报文数据包分发方法,应用于数据包分发装置,所述数据包分发装置包括处理器和串行字符设备(字符设备为在输入输出传输过程中以字符为单位进行传输的设备,例如所述字符设备按照单字节发送数据),所述串行字符设备的输出端与处理器连接。
如图2和图3所示,所述时统报文数据包分发方法包括:
S100.根据待接收语句的类型和长度设置多个临时缓冲区。
所述待接收语句包括已知头尾的语句,或者,所述待接收语句包括已知头尾的语句和头尾不确定的语句。所述已知头尾的语句指已知语句头和语句尾的语句,所述头尾不确定语句指语句头和语句尾不确定的语句。
在一个实施例中,根据待接收语句的类型和长度设置多个临时缓冲区,包括:分别为每种类型的第一语句设置一个对应的临时缓冲区,所述第一语句为所述待接收语句中已知语句头和语句尾的语句;设置一个用于存放第二语句的临时缓冲区,并将该临时缓冲区记为特殊缓冲区,所述第二语句为所述待接收语句中除第一语句以外的其余语句;根据第一语句的长度设置对应的临时缓冲区的大小;根据预设值设置特殊缓冲区的大小。除特殊缓冲区之外的每个临时缓冲区的大小确保可以存入一条对应的语句;在一个实施例中,特殊缓冲区的大小也可以根据已知的第二语句的长度确定,当特殊缓冲区存满后,再接收到第二语句,则覆盖先前的数据。
例如,将MCU的串口(例如UART,IIC,SPI等接口)与接收机(接收机支持输出0183语句)连接,例如,接收机输出四种类型的语句(如GGA,ZDA,RMC,HEADING等四种语句),则设置五个临时缓冲区,其中四个临时缓冲区与四种语句一一对应,剩余的一个临时缓冲区作为特殊缓冲区。
S200.将串行字符设备的数据接收模式设置为中断模式。
S300. 处理器在串行字符设备接收到串行数据后,将该串行数据存储在缓存寄存器中。
例如,MCU的串口接收到一个数据以后,将该数据存在串口的缓存寄存器中。
S400. 处理器在检测到中断信号后读取所述缓存寄存器中的串行数据。
S500. 处理器根据所述串行数据的内容确定该串行数据对应的临时缓冲区。
如图4所示,在一个实施例中,处理器根据所述串行数据的内容确定该串行数据对应的临时缓冲区,包括:
S510.判断在第一数据之前是否接收到过串行数据,所述第一数据为当前接收到的串行数据,若在第一数据之前未接收到过串行数据,则执行S520,若在第一数据之前接收到过串行数据,则执行S550。
S520. 判断所述第一数据是否为语句头,若所述第一数据为语句头,则执行S530,若所述第一数据不是语句头,则执行S540。
S530. 根据第一数据的语句类型确定对应的临时缓冲区,并将该临时缓冲区设置为当前缓冲区。
具体的,根据第一数据的语句类型确定对应的临时缓冲区,包括:确定所述第一数据对应的语句类型;获取所述第一数据对应的语句类型对应的临时缓冲区,并将该临时缓冲区作为第一数据对应的临时缓冲区。
S540.第一数据对应的临时缓冲区为特殊缓冲区。
S550. 判断第一数据之前是否存在语句尾,若所述第一数据之前不存在语句尾,则执行S560,若所述第一数据之前存在语句尾,则执行S570。
S560. 判断第一数据是否为语句头,若第一数据为语句头,则执行S530,若第一数据不是语句头,则执行S540;
S570. 判断第一数据和距第一数据最近的语句尾之间是否存在语句头,若第一数据和距第一数据最近的语句尾之间存在语句头,则第一数据对应的临时缓冲区为当前缓冲区,若第一数据和距第一数据最近的语句尾之间不存在语句头,则执行S580;
S580. 判断所述第一数据是否为语句头,若第一数据为语句头,则执行S530,若第一数据不是语句头,则执行S540。
S600.MCU将所述串行数据存储至其对应的临时缓冲区。
即,MCU将所述串行数据存储至该串行数据对应的临时缓冲区中。
在一个实施例中,所述时统报文数据包分发方法还包括:处理器循环查询每个临时缓冲区的串行数据是否有语句尾;若临时缓冲区的串行数据有语句尾,则对该临时缓冲区中的串行数据进行处理。
例如,MCU循环查询每个临时缓冲区的串行数据是否有语句尾;若临时缓冲区的串行数据有语句尾,则对所述临时缓冲区中的串行数据进行转发;或者,若临时缓冲区的串行数据有语句尾,则对所述临时缓冲区中的串行数据进行解析。
在一个实施例中,所述处理器为MCU,所述MCU的串口波特率为115200,所述MCU的时钟频率大于等于100MHz;或者,所述MCU的时钟频率为100MHz,所述MCU的串口波特率小于等于115200。MCU执行S400-S600的时间(即MCU完成响应中断、读取数据、寻找位置和存储数据的时间)小于字符设备发送两个字节之间的时间差(第一个字节结束到第二个字节开始)。
以上所述仅是本发明的优选实施方式,应当理解本发明并非局限于本文所披露的形式,不应看作是对其他实施例的排除,而可用于各种其他组合、修改和环境,并能够在本文所述构想范围内,通过上述教导或相关领域的技术或知识进行改动。而本领域人员所进行的改动和变化不脱离本发明的精神和范围,则都应在本发明所附权利要求的保护范围内。

Claims (7)

1.一种时统报文数据包分发方法,应用于数据包分发装置,所述数据包分发装置包括处理器和串行字符设备,所述串行字符设备的输出端与处理器连接,其特征在于,所述时统报文数据包分发方法包括:
根据待接收语句的类型和长度设置多个临时缓冲区;
将串行字符设备的数据接收模式设置为中断模式;
处理器在串行字符设备接收到串行数据后,将该串行数据存储在缓存寄存器中;
处理器在检测到中断信号后读取所述缓存寄存器中的串行数据;
处理器根据所述串行数据的内容确定该串行数据对应的临时缓冲区;
处理器将所述串行数据存储至其对应的临时缓冲区;
根据待接收语句的类型和长度设置多个临时缓冲区,包括:
分别为每种类型的第一语句设置一个对应的临时缓冲区;
设置一个用于存放第二语句的临时缓冲区,并将该临时缓冲区记为特殊缓冲区;
根据第一语句的长度设置对应的临时缓冲区的大小;
根据预设值设置特殊缓冲区的大小;
其中,所述第一语句为所述待接收语句中已知语句头和语句尾的语句,所述第二语句为所述待接收语句中除第一语句以外的其余语句;
处理器根据所述串行数据的内容确定该串行数据对应的临时缓冲区,包括:
判断在第一数据之前是否接收到过串行数据,所述第一数据为当前接收到的串行数据;
若在第一数据之前未接收到过串行数据,则判断所述第一数据是否为语句头:若所述第一数据为语句头,则根据第一数据的语句类型确定对应的临时缓冲区,并将该临时缓冲区设置为当前缓冲区;若所述第一数据不是语句头,则第一数据对应的临时缓冲区为特殊缓冲区;
若在第一数据之前接收到过串行数据,则判断第一数据之前是否存在语句尾;
若所述第一数据之前不存在语句尾,则判断第一数据是否为语句头:若第一数据为语句头,则根据第一数据的语句类型确定对应的临时缓冲区,并将该临时缓冲区作为当前缓冲区;若第一数据不是语句头,则第一数据对应的临时缓冲区为特殊缓冲区;
若所述第一数据之前存在语句尾,则判断第一数据和距第一数据最近的语句尾之间是否存在语句头;
若第一数据和距第一数据最近的语句尾之间存在语句头,则第一数据对应的临时缓冲区为当前缓冲区;
若第一数据和距第一数据最近的语句尾之间不存在语句头,则判断所述第一数据是否为语句头:若所述第一数据为语句头,则根据第一数据的语句类型确定对应的临时缓冲区,并将该临时缓冲区作为当前缓冲区;若所述第一数据不是语句头,则第一数据对应的临时缓冲区为特殊缓冲区。
2.根据权利要求1所述的一种时统报文数据包分发方法,其特征在于,根据第一数据的语句类型确定对应的临时缓冲区,包括:
确定所述第一数据对应的语句类型;
获取所述第一数据对应的语句类型对应的临时缓冲区,并将该临时缓冲区作为第一数据对应的临时缓冲区。
3.根据权利要求1所述的一种时统报文数据包分发方法,其特征在于,所述时统报文数据包分发方法还包括:
处理器循环查询每个临时缓冲区的串行数据是否有语句尾;
若临时缓冲区的串行数据有语句尾,则对该临时缓冲区中的串行数据进行处理。
4.根据权利要求3所述的一种时统报文数据包分发方法,其特征在于,对该临时缓冲区中的串行数据进行处理,包括:
对该临时缓冲区中的串行数据进行转发;或者,
对该临时缓冲区中的串行数据进行解析。
5.根据权利要求1所述的一种时统报文数据包分发方法,其特征在于,所述处理器为MCU。
6.根据权利要求5所述的一种时统报文数据包分发方法,其特征在于,所述MCU的串口波特率为115200,所述MCU的时钟频率大于等于100MHz。
7.根据权利要求5所述的一种时统报文数据包分发方法,其特征在于,所述MCU的时钟频率为100MHz,所述MCU的串口波特率小于等于115200。
CN202210958004.5A 2022-08-11 2022-08-11 一种时统报文数据包分发方法 Active CN115037798B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210958004.5A CN115037798B (zh) 2022-08-11 2022-08-11 一种时统报文数据包分发方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210958004.5A CN115037798B (zh) 2022-08-11 2022-08-11 一种时统报文数据包分发方法

Publications (2)

Publication Number Publication Date
CN115037798A CN115037798A (zh) 2022-09-09
CN115037798B true CN115037798B (zh) 2022-12-27

Family

ID=83130508

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210958004.5A Active CN115037798B (zh) 2022-08-11 2022-08-11 一种时统报文数据包分发方法

Country Status (1)

Country Link
CN (1) CN115037798B (zh)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3599160A (en) * 1969-03-06 1971-08-10 Interdata Inc Time division multiplexing
CN1542587A (zh) * 2003-11-05 2004-11-03 中兴通讯股份有限公司 一种奔腾ii处理器***的引导方法
CN103577378A (zh) * 2013-11-15 2014-02-12 哈尔滨工业大学深圳研究生院 一种全双工异步串行通信方法
CN105207816A (zh) * 2015-09-16 2015-12-30 国网智能电网研究院 一种多缓冲并行加密的软件调度方法
CN112131156A (zh) * 2020-09-03 2020-12-25 山东云海国创云计算装备产业创新中心有限公司 一种数据传输方法、***及电子设备和存储介质
CN114513545A (zh) * 2022-04-19 2022-05-17 苏州浪潮智能科技有限公司 请求处理方法、装置、设备及介质

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106330776A (zh) * 2015-06-30 2017-01-11 中兴通讯股份有限公司 报文处理方法及装置
CN107688589B (zh) * 2017-02-20 2019-02-26 平安科技(深圳)有限公司 数据库***优化的方法及装置
CN112019450A (zh) * 2019-05-31 2020-12-01 微软技术许可有限责任公司 设备间流式通信
CN113890904B (zh) * 2021-09-27 2023-10-27 新华三信息安全技术有限公司 一种报文解析的方法、装置、计算机设备及存储介质

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3599160A (en) * 1969-03-06 1971-08-10 Interdata Inc Time division multiplexing
CN1542587A (zh) * 2003-11-05 2004-11-03 中兴通讯股份有限公司 一种奔腾ii处理器***的引导方法
CN103577378A (zh) * 2013-11-15 2014-02-12 哈尔滨工业大学深圳研究生院 一种全双工异步串行通信方法
CN105207816A (zh) * 2015-09-16 2015-12-30 国网智能电网研究院 一种多缓冲并行加密的软件调度方法
CN112131156A (zh) * 2020-09-03 2020-12-25 山东云海国创云计算装备产业创新中心有限公司 一种数据传输方法、***及电子设备和存储介质
CN114513545A (zh) * 2022-04-19 2022-05-17 苏州浪潮智能科技有限公司 请求处理方法、装置、设备及介质

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
"Android平台下虚拟多串口并发通信的研究与实现";冉德纲;《CNKI优秀硕士学位论文全文库》;20190601;全文 *
"卫星控制仿真平台智能通信设备研制";付鹏飞;《CNKI优秀硕士学位论文全文库》;20060601;全文 *
USB2.0中管道与数据传输类型详解;张红兵等;《现代计算机》;20020430(第04期);全文 *
基于FPGA的GPS时统设计;龚鑫;《科技致富向导》;20131220(第35期);全文 *

Also Published As

Publication number Publication date
CN115037798A (zh) 2022-09-09

Similar Documents

Publication Publication Date Title
CN108492827B (zh) 应用程序的唤醒处理方法、装置及存储介质
TW571229B (en) Image display system, image data transmission apparatus, image display device, displayed image data transmission method, delta transmission method, and program and storage medium therefor
TWI321419B (en) Atomic message division
WO2019148884A1 (zh) 报文传输方法、存储介质及计算机设备
US6931459B2 (en) Duplicator for recording medium and method for duplicating recording medium
US20020164079A1 (en) Systems and methods for rendering image-based data
US20060271721A1 (en) Apparatus and method for efficient transmission of unaligned data
EP1447947A2 (en) Frame alteration logic for network processors
CN110865783A (zh) 投屏方法、设备、***和存储介质
CN112988916B (zh) 针对Clickhouse的全量和增量同步方法、设备和存储介质
US6009471A (en) Server system and methods for conforming to different protocols
CN115037798B (zh) 一种时统报文数据包分发方法
US6381620B1 (en) Rich text medium displaying method and picture information providing system using calculated average reformatting time for multimedia objects
US5367674A (en) Data stream optimizer utilizing difference coding between a current state buffer and a next state buffer
JP2003196269A (ja) マークアップ言語で表わされた文書の解析方法
CN107562397B (zh) 一种动态调频的方法及装置
CN101410788A (zh) 使用装置打印全图像的方法和***
JP2739830B2 (ja) マルチプロセッサシステム用データ通信装置
CN114003089B (zh) 一种bmc和操作***时间同步的方法、***及装置
JP2000155701A (ja) デバッグ回路
JPH11298458A (ja) 同期確立装置
JPH07244470A (ja) 図形表示装置
WO2022188598A1 (zh) 广播信息传输方法、装置、电子设备及存储介质
CN116546116A (zh) 一种数据解析方法及装置
JP3264336B2 (ja) 画像変換処理装置

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