本发明涉及气象观探测,具体涉及一种气象报文自动分组解析方法。
背景技术:
1、气象观探测系统由硬件系统和软件系统组成。硬件系统包括探测各种气象要素(如温度、湿度、气压、风向、风速、能见度、云高、降水等)的传感器和用于数据处理的终端计算机,传感器与终端计算机通过串行电缆连接,一般采用rs232/rs485/rs422通信接口。一组报文是一段开头、结尾和长度都固定的字符串,每组报文间隔指定时间由传感器发送至终端计算机。终端计算机上的软件根据接口协议解析报文,对获取的气象数据进行计算、显示、存储和分发。
2、实际业务中,串口通信经常遇到3种异常情况:1)一组报文分多次才能完整接收;2)多组报文集中在一次接收;3)报文部分内容丢失。在此3种异常情况下,接收的报文均不能解析。实际上,在前2种情况下只要将报文重新组合拆分,仍然能正常解析,若直接舍弃则会造成有效数据丢失。
3、目前的报文重组拆分方法都是针对特定场景下的特定报文格式提出的,并不适用于气象数据。
技术实现思路
1、有鉴于此,本发明提供了一种气象报文自动分组解析方法,能够对气象报文进行自动分组解析,可对多次接收完成一组报文以及一次接收多组报文的情况进行报文重新组合,形成正确的报文分组,保证有效观测数据不丢失;且本发明对报文的内部格式没有要求,通用性好。
2、本发明的气象报文自动分组解析方法,包括步骤如下:
3、1)申请一段缓冲区用来存储输入的报文,缓冲区为单向循环队列。申请头指针、尾指针、结束指针,将头指针初始化为缓冲区的第一个位置,将尾指针、结束指针初始化为空指针。
4、2)输入报文,存入缓冲区,将结束指针赋值为报文结尾的下一个位置。
5、3)进行长度判定,方法为:判断头指针与结束指针之间的长度是否大于或等于一组合法报文的长度。若长度判定结果为是,则转到步骤4);若否,则转到步骤2),接收新报文。
6、4)将尾指针赋值为头指针位置+一组合法报文长度,再进行开头结尾判定,方法为:判断头指针和尾指针指向的字符是否分别为约定的开始字符和结尾字符。若开头结尾判定结果为是,则转到步骤5);若否,则转到步骤6)。
7、5)将头指针和尾指针之间的一段报文取出并解析,将解析出的数据输出,然后将尾指针的值赋给头指针,进行下一段报文的解析,转到步骤3)。
8、6)从头指针位置向结束指针位置遍历,查找是否有某位置的字符为约定的开始字符。若是,则转到步骤7);若否,则将结束指针赋值给头指针,转到步骤2)。
9、7)将头指针赋值为查找到的约定开始字符位置,转到步骤3)。
10、有益效果:
11、本发明将接收的报文存储在一个单向循环队列的缓冲区,然后利用头指针、尾指针和结束指针,基于报文的长度以及报文的开始、结束符号,对报文进行重组和解析,确保有效观测数据不丢失;且本发明只基于报文的长度和开始结束符号,可用于任意报文格式,通用性好。
1.一种气象报文自动分组解析方法,其特征在于,包括如下步骤: