基于陆用捷联惯导产品SDCard存储装置的数据解析方法与流程

文档序号:14990490发布日期:2018-07-20 22:07阅读:252来源:国知局

本发明属于sdcard数据存储技术领域,尤其是一种基于陆用捷联惯导产品sdcard存储装置的数据解析方法。



背景技术:

sdcard数据存储装置相比于pc,在进行数据录取时,具有可移动性,不受场地限制,而且相比于pc的windows操作系统具有更高的稳定性,不易出现数据丢失等问题。sdcard数据存储装置能够接收串口数据,并以二进制的格式存储文件,但是对于工程应用,二进制文件不够直观,需要通过数据解析软件将其转换成ascii码数据文件,因此,数据解析软件的设计具有重要的实际意义。一般的sdcard数据存储装置没有相应的数据解析软件,常见的解析软件对于特定数据协议不具有适用性,解析数据速率参差不齐,不能快速解析,且在运行过程中容易产生丢帧;另外,在相邻数据文件衔接之处处理不当,会影响数据的完整性,进而影响整包数据的可用性。



技术实现要素:

本发明的目的在于克服现有技术的不足,提出一种设计合理、快速准确且可用性强的基于陆用捷联惯导产品sdcard存储装置的数据解析方法。

本发明解决其技术问题是采取以下技术方案实现的:

一种基于陆用捷联惯导产品sdcard存储装置的数据解析方法,包括以下步骤:

步骤1、sdcard存储装置通过串口接收数据,并以二进制数据的形式进行文件存储;

步骤2、将sdcard存储装置与安装有数据解析软件的电脑相连接,将sdcard内的数据文件传输给电脑;

步骤3、数据解析软件对读取的sdcard内的数据文件进行解析,具体方法包括以下步骤:

(1)采用冒泡排序法按照文件生成顺序对sdcard内的数据文件进行排序,按顺序打开数据文件;

(2)采用单字节i/o读取的方式找到协议的帧头,再按照协议的长度进行逐条读取并解析;

(3)如果一帧数据包括多个文件,则每读完一个文件,将该文件末尾的数据与下一个文件首部的数据进行整合衔接。

(4)重复执行步骤(2)至步骤(3),直至全部文件解析完成。

所述步骤(1)的具体实现方法为:数据解析软件在读取到当前文件夹下的所有文件后,读取所有文件的名称,通过字符串提取功能将文件名称中代表序号的数字提取出来,再通过冒泡排序法进行排序,按照新的顺序重新设定好文件读取顺序。

所述步骤(2)的具体实现方法为:首先利用单字节i/o操作的方式找到文件的第一帧数据,然后按照帧长为单位的协议块,继续进行i/o操作,在处理过程中,如果出现不符合协议规定的异常数据,则会自动识别并丢弃此帧数据,然后从下一个字节开始重新进行单字节i/o操作,继续按照帧长进行读取和解析。

所述步骤(3)的具体实现方法为:在按帧长进行i/o操作过程中,如果发现在文件末尾读取到的字节数小于帧长,且后续还有文件可读,则将已经读取的字节暂时写入缓存,然后打开新的文件,一次性读取剩余帧长的字节,再与之前的字节合并组成完整帧进行解析,之后继续按照完整帧长进行i/o操作,从而完成文件间的数据衔接。

本发明的优点和积极效果是:

本发明设计合理,能够对sdcard存储装置内的二进制数据文件实现准确无误的读取并解析,在处理过程中,能够一次性读取文件夹内所有二进制文件,在保证数据的有序性和完整性的前提下,快速进行二进制文件至ascii码文件的转换,为后续的数据仿真等工作做好数据储备,本发明具有快速准确、操作简单、可用性强等特点。

附图说明

图1是本发明的解析流程图。

具体实施方式

以下结合附图对本发明实施例做进一步详述。

一种基于陆用捷联惯导产品sdcard存储装置的数据解析方法,如图1所示,包括以下步骤:

步骤1、sdcard存储装置通过串口接收数据,并以二进制数据的形式进行文件存储。

在本步骤中,sdcard存储装置需要独立供电,其内置文件系统,且具备串口接收功能,能将通过串口接收到的数据以二进制的形式写入文件。其具备配置文件功能,可以通过配置文件进行串口设置和定时功能设置(到达指定时间后自动保存一个文件,然后建立一个新文件,以此类推),文件命名规则如:“data0001.txt,data0002.txt…”。

步骤2、将sdcard存储装置与安装有数据解析软件的电脑相连接,将sdcard的数据文件传输给电脑。

在本步骤中,使用电脑读取sdcard存储装置的文件后,统一存放于一个文件夹中,运行电脑内的数据解析软件,通过路径选择找到该文件夹,方便进行文件处理。

步骤3、数据解析软件对读取的sdcard内的数据文件进行解析,具体方法包括以下步骤:

(1)采用冒泡排序法按照文件生成顺序对sdcard内的数据文件进行排序,按顺序打开数据文件。

数据解析软件的运行环境为windows系统,在此系统中,sdcard存储装置内的数据文件并不是按照生成时间排序的。比如有“data0001.txt,data0002.txt,data0003.txt,data0004.txt,data0005.txt,data0006.txt,data0007.txt,data0008.txt,data0009.txt,data0010.txt,data0011.txt,data0012.txt”共12个文件。这些文件当前的排序是按照时间顺序生成的,是正确的顺序。但是在windows系统中,对于文件命名的排序与存储装置不同,其默认的排序变成:“data0001.txt,data0011.txt,data0012.txt,data0002.txt,data0003.txt,data0004.txt,data0005.txt,data0006.txt,data0007.txt,data0008.txt,data0009.txt,data0010.txt”。这是错误的顺序。因此,数据解析软件在读取到当前文件夹下的所有文件后,必须要进行文件排序,读取所有文件的名称,通过字符串提取功能将文件名称中代表序号的数字提取出来,再通过冒泡排序法进行排序,按照新的顺序重新设定好文件读取顺序。

(2)采用单字节i/o读取的方式找到协议的帧头,再按照协议的长度进行逐条读取并解析。

在本步骤中,利用协议实现快速读取功能。对于文件中二进制数据的读取,最简单的方式是逐个字节读取并解析,但是对于windows操作系统而言,i/o操作是十分耗时的,如果每读取一个字节都要进行一次i/o操作,程序的执行效率极低,文件解析速度极慢。考虑到sdcard存储装置接收到的数据是按照预定义的协议编辑的,具有帧头、帧尾、校验和等要素。因此,为了实现快速读取和解析,首先利用单字节i/o操作的方式找到文件的第一帧数据,即找到起点,之后的数据只要不出现异常,都是按照帧长为单位的协议块,因此可以按照帧长继续进行i/o操作。试验证明,此优化方法的解析速率是单字节读取的几十倍。

在本步骤中,还需要对异常数据进行处理。由于串口通讯的过程中可能因为线路或者串口盒的缘故导致异常数据的出现。因此,在按照协议进行解析过程中,若出现不符合协议规定的异常数据,则会自动识别并丢弃此帧数据,之后从下一个字节开始重新进行单字节i/o操作,寻找帧头,再继续按照帧长进行读取和解析。

(3)文件间的数据衔接。每读完一个文件,将文件末尾的数据与下一个文件首部的数据进行整合衔接,确保数据的完整性。

由于sdcard存储装置内的默认设置是每满一段时间(例如一个小时)自动保存一个文件,然后建立一个新文件。因此,由于协议长度的关系,一帧完整数据有可能跨两个文件,此时如果不进行特殊处理,这帧数据将会丢弃。因此,本发明在按帧长进行i/o操作过程中,如果发现在文件末尾读取到的字节数小于帧长,且后续还有文件可读,则将已经读取的字节暂时写入缓存,然后打开新的文件,一次性读取剩余帧长的字节,再与之前的字节合并组成完整帧进行解析,之后继续按照完整帧长进行i/o操作。确保实现文件进行切换时的数据衔接。

(4)重复执行上述解析过程,直至全部文件解析完成。

需要强调的是,本发明所述的实施例是说明性的,而不是限定性的,因此本发明包括并不限于具体实施方式中所述的实施例,凡是由本领域技术人员根据本发明的技术方案得出的其他实施方式,同样属于本发明保护的范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1