CN111191422B - 一种文件格式转换方法、装置和计算机可读存储介质 - Google Patents
一种文件格式转换方法、装置和计算机可读存储介质 Download PDFInfo
- Publication number
- CN111191422B CN111191422B CN201911412851.6A CN201911412851A CN111191422B CN 111191422 B CN111191422 B CN 111191422B CN 201911412851 A CN201911412851 A CN 201911412851A CN 111191422 B CN111191422 B CN 111191422B
- Authority
- CN
- China
- Prior art keywords
- file
- format
- json
- variables
- library
- 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
Links
Classifications
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
本发明涉及文件格式转换领域,公开了一种文件格式转换方法、装置和计算机可读存储介质,该文件格式转换方法包括:读取第一格式文件;解析第一格式文件,并将解析结果储存在应用程序开发库中;按照第二格式文件协议将应用程序开发库中的变量一一转换为第二格式的变量;输出第二格式的变量并生成第二格式文件。本发明方案中基于应用程序开发库对文件进行格式转换,该应用程序开发库文件可以高效、精准地处理不同格式的变量,极大减少了数据的处理时间,提高了整体的数据转换效率,解决了手动转换文件格式存在的隐患。
Description
技术领域
本发明涉及文件格式转换领域,具体涉及一种文件格式转换方法、装置和计算机可读存储介质。
背景技术
CAN总线协议是ISO国际标准化的一种串行通信协议,其具有极好的抗干扰、差错检测和处理能力,能够满足信息传输实时性的要求,同时具有控制接口结构简单、易于配置的优点,因而在汽车、电子等领域具有日益广泛的应用。随着技术的进步以及人们对驾驶要求的不断提高,汽车网络中的CAN节点不断增加,网络中的数据也越来越庞大,为便于整车的设计和维护,通常采用DBC文件对汽车CAN数据进行解析和管理的技术方案。DBC文件是一种标准的数据库文件,绝大多数汽车生产厂家都有相应的DBC文件数据库。DBC文件解析的过程就是将汽车CAN网络传输的十六进制数据转换成通常熟知的物理量,比如车速、转速、温度等。
JSON,即JavaScript Object Notation,是一种轻量级的数据交换格式,其特点是易于读写,同时也易于机器解析和生成,广泛应用于web端数据网络传输。JSON作为一种比较灵活且直观的数据存储结构,具有良好的兼容性和可扩展性,很适合作为客户端与设备端之间的交互载体,几乎所有的编程语言都有支持JSON协议的库,如Java/EE,Ruby,PHP,C#/.Net等,都可以使用JSON进行数据交互和处理。JSON以字符串的形式进行数据存储,通过对存储的数据加入描述,在设备开发和调试阶段有很好的直观性。具体地,JSON数据通常以数据表的形式存在,JSON数据表主要有key和value两个属性值,key是一个字符串,用于标识键值对的名称,value为对应的数值。在存储大量的配置信息时,JSON首先将数据按照key-value键值对的形式进行序列化,进而为每一个键值对动态申请内存,并把相应的数据通过关系链的形式存放到这段内存中。如果需要存储的数据量很大时,JSON会申请大量的内存并将序列后的数据长时间存放在这片内存中。JSON采用完全独立于编程语言的文本格式来存储和表示数据,它易于人阅读和编写,同时也易于机器解析和生成,已成为在互联网服务中最广泛采用的数据格式。
将DBC文件转换为JSON文件是一种极好的研究方向,目前没有将DBC文件转换为JSON文件的专门技术,基本上是靠技术人员手动转换,手动转换方法效率低,同时还要求技术人员熟悉CAN和JSON两种协议,在需要转换的CAN数据量较大的情况下,技术人员需要花费的时间和精力越多,出错率也随之提高。
发明内容
本发明提供了一种文件格式转换方法、装置和计算机可读存储介质,旨在克服现有技术中手动转换文件格式时效率低且出错率较高的问题,尤其是手动将DBC文件转换为JSON文件的缺陷。
为了实现上述目的,本发明第一方面提供一种文件格式转换方法,包括:
读取第一格式文件;
解析所述第一格式文件,并将解析结果储存在应用程序开发库中;
按照第二格式文件协议将所述应用程序开发库中的变量一一转换为第二格式的变量;
输出所述第二格式的变量并生成第二格式文件。
优选地,所述读取第一格式文件包括:
根据文件路径选择第一格式文件,其中,所述第一格式文件为DBC文件;
选择文件类型,DBC文件类型选择J1939类型;
判断文件是否读取成功,若是,则解析文件,若DBC文件内容为空或文件格式错误导致文件无法识别,则重新读取文件。
优选地,所述解析所述第一格式文件,并将解析结果储存在应用程序开发库中,包括:
解析DBC文件中的所有信号,将包括信号的名称、注释、起始位、位长度、转换因子、偏移值、最小值、最大值、单位和实际值在内的信号信息解析到对应创建的第一结构体中;
解析DBC文件中的所有报文,将包括报文的名称、注释、帧ID、帧类型,以及报文所占字节数、所含信号集合和信号数量在内的报文信息解析到对应创建的第二结构体中;
在Qt库中创建封装数组,所述封装数组的类型被定义为第二结构体类型,并将所述第二结构体中的报文信息动态分配到所述封装数组的地址中;
在Qt库中创建封装容器,并将所述第一结构体中的信号信息动态分配到所述封装容器中,其中,所述封装容器以键值对的形式储存所述信号信息。
优选地,所述按照第二格式文件协议将所述应用程序开发库中的变量一一转换为第二格式的变量,包括:
在Qt库中创建对象封装类;
遍历所述封装数组中的所有变量,将创建第二格式文件所需求的目标变量放入所述对象封装类中,其中,所述第二格式文件为JSON文件;
遍历所述封装容器中的所有键值对,将与所述目标变量对应的帧ID放入所述对象封装类中;
在所述对象封装类中添加创建JSON文件所需要的额外变量,所述额外变量包括循环次数和数据类型;
将所述对象封装类中的对象处理成JSON对象。
优选地,所述输出所述第二格式的变量并生成第二格式文件,包括:
将所述JSON对象中的变量按JSON格式输出,以生成JSON文件。
本发明第二方面提供了一种文件格式转换装置,包括:
读取模块1,用于读取DBC文件;
解析模块2,用于解析所述第一格式文件,并将解析结果储存在应用程序开发库中;
转换模块3,用于按照第二格式文件协议将所述应用程序开发库中的变量一一转换为第二格式变量;
输出模块4,用于输出所述第二格式变量并生成第二格式文件。
优选地,所述读取模块1包括:
路径选择单元10,用于根据文件路径选择第一格式文件,其中,所述第一格式文件为DBC文件;
文件类型选择单元11,用于选择文件类型,DBC文件类型选择J1939类型;
判断单元12,用于判断文件是否读取成功,若是,则解析文件,若DBC文件内容为空或文件格式错误导致文件无法识别,则重新读取文件。
优选地,所述解析模块2包括:
信号解析单元20,用于解析DBC文件中的所有信号,将包括信号的名称、注释、起始位、位长度、转换因子、偏移值、最小值、最大值、单位和实际值在内的信号信息解析到对应创建的第一结构体中;
报文解析单元21,用于解析DBC文件中的所有报文,将包括报文的名称、注释、帧ID、帧类型,以及报文所占字节数、所含信号集合和信号数量在内的报文信息解析到对应创建的第二结构体中;
第一分配单元22,用于在Qt库中创建封装数组,所述封装数组的类型被定义为第二结构体类型,并将所述第二结构体中的报文信息动态分配到所述封装数组的地址中;
第二分配单元23,用于在Qt库中创建封装容器,并将所述第一结构体中的信号信息动态分配到所述封装容器中,其中,所述封装容器以键值对的形式储存所述信号信息。
优选地,所述转换模块3包括:
创建单元30,用于在Qt库中创建对象封装类;
第一填充单元31,用于遍历所述封装数组中的所有变量,将创建第二格式文件所需求的目标变量放入所述对象封装类中,其中,所述第二格式文件为JSON文件;
第二填充单元32,用于遍历所述封装容器中的所有键值对,将与所述目标变量对应的帧ID放入所述对象封装类中;
优化单元33,用于在所述对象封装类中添加创建JSON文件所需要的额外变量,所述额外变量包括循环次数和数据类型;
处理单元34,用于将所述对象封装类中的对象处理成JSON对象。
优选地,所述输出模块4包括:
输出单元40,用于将所述JSON对象中的变量按JSON格式输出,以生成JSON文件。
本发明第三方面提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,所述计算机程序被处理器执行时实现上述文件格式转换方法。
根据本发明提供的文件格式转换方法,利用应用程序开发库对第一格式文件进行解析,其自带的库文件可以对变量进行分类储存和格式转换处理,将转换为第二格式的变量输出为第二格式文件,该文件格式的自动转换方法极大减少了数据的处理时间,提高了转换效率。基于Qt库对DBC文件进行格式转换时,由于Qt库中引入了对JSON数据的支持,其自带的JSON库文件可以高效、精准地处理JSON格式的变量,提高了数据转换效率,解决了手动转换DBC文件为JSON文件存在的隐患。
附图说明
图1是文件格式转换方法的流程图;
图2是DBC文件的解析流程图;
图3是JSON文件的生成流程图;
图4是文件格式转换装置的结构示意图。
具体实施方式
以下结合附图对本发明的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本发明,并不用于限制本发明。
本发明提供了一种文件格式转换方法,如图1所示,所述方法包括以下步骤:
S1、读取第一格式文件;
S2、解析所述第一格式文件,并将解析结果储存在应用程序开发库中;
S3、按照第二格式文件协议将所述应用程序开发库中的变量一一转换为第二格式的变量;
S4、输出所述第二格式的变量并生成第二格式文件。
本发明中通过应用程序开发库对第一格式文件进行解析,并对解析得到的变量分类储存和转换,其自带的库文件可以高效、精准地处理不同格式的变量,将格式转换后的变量输出为第二格式文件,该自动转换方法极大减少了数据的处理时间,提高了数据转换效率。本发明所述的应用程序开发库的功能可以通过Qt库,或者是C、C++实现。
本发明主要基于Qt库对文件进行格式转换,Qt是一个跨平台C++图形用户界面应用程序开发框架,既可以开发GUI程序,也可用于开发非GUI程序,比如控制台工具和服务器。Qt是面向对象的框架,使用特殊的代码生成扩展(称为元对象编译器)以及一些宏,Qt很容易扩展,并且允许真正地组件编程。本发明中基于Qt对第一格式文件进行解析,并将解析结果存储为Qt变量,再按照第二格式文件协议将这些Qt变量一一转换为第二格式的变量,最后将这些第二格式变量输出为第二格式文件。
进一步地,在步骤S1中,读取第一格式文件的步骤包括:
根据文件路径选择第一格式文件;
选择文件类型;
判断文件是否读取成功,若是,则解析文件,若否则重新读取文件。
具体地,本发明所述的第一格式文件为DBC文件,通用DBC文件类型选择J1939类型,DBC文件还可以按需要选择其他类型。根据DBC文件路径、文件类型和文件格式打开DBC文件,并判断所述DBC文件是否读取成功,如果DBC文件读取成功,则对该DBC文件进行解析;若DBC文件内容为空或文件格式错误导致文件无法识别,则重新读取DBC文件。
进一步地,步骤S2中通过编写解析程序解析DBC文件中的所有报文和信号,具体解析DBC文件中的报文和报文中的信号,并将解析得到的报文信息和信号信息对应储存为Qt变量。如图2所示,DBC文件的解析过程具体包括:
S21、解析DBC文件中的所有信号;
S22、解析DBC文件中的所有报文;
S23、将解析得到的报文信息对应储存为Qt变量;
S24、将解析得到的信号信息对应储存为Qt变量。
在本发明方案中,步骤S21具体包括:解析DBC文件中的所有信号,将包括信号的名称、注释、起始位、位长度、转换因子、偏移值、最小值、最大值、单位和实际值在内的信号信息解析到对应创建的第一结构体中。
一般地,DBC文件中的信号的结构为:
SG_信号名:起始位|位长度@0+(精度值,偏移值)[最大|最小]“备注”接收节点;
例如,一条报文下的一个信号描述为:
SG_IPK_EVDTEodometer:7|12@0+(1,0)[0|999]“km”TBOX
在上式中:SG_:DBC文件中信号的标志前缀,即起始标识;
IPK_EVDTEodometer:信号名称;
7:信号起始位;
|:分割符;
12:信号总长度;
@0+:0/1表示数据解析格式,其中,0为Motorola格式,1为Intel格式,+/-表示数据类型,其中,+为有符号数,-为无符号数;
(1,0):精度值,即转换因子为1,偏移值为0;
[0|999]:物理意义上的最小值为0,最大值为999;
“km”:单位;
TBOX:接收此信号的节点名称,不指明时可写为Vector__XXX
CAN总线上报文消息中传递的是信号值,当此信号传递到电子控制单元ECU时,需转换为物理意义的值在输出接口显示,信号值×精度值(转换因子)+偏移值=物理值(实际值)。
例如:SG_TCU_TransOilTemp:7|8@0+(1,-40)[-40|214]“℃”TBOX
若传感器显示16°,则信号值=(实际值-偏移值)/精度值=(16-(-40))/1=56(dec)=0x38,报文呈现为“38,00,00,00,00,00,00,00”(此处00表示未设置信号)。
步骤S22具体包括:解析DBC文件中的所有报文,将包括报文的名称、注释、帧ID、帧类型,以及报文所占字节数、所含信号集合和信号数量在内的报文信息解析到对应创建的第二结构体中。
一般地,DBC文件中的报文的结构为:
BO报文ID报文名称报文长度发送节点;
例如,DBC文件中的一条报文描述为:
BO_1015IPK_ODO_Consump:8Vector__XXX
在上式中,BO_:DBC文件中报文的标志前缀,即起始标识;
1015:十进制的报文ID,只有后29位有效,=0x3f7;
IPK_ODO_Consump:报文名称;
8:报文长度,即报文包含的帧字节数;
Vector__XXX:发送此报文的节点名称,标识为Vector__XXX时未指明具体节点。
根据本发明提供的技术方案,DBC文件中包含多条报文消息,每条报文消息里面有多个报文信号,根据报文消息数据格式和信号信息数据格式对报文和信号分别解读,通过逐行解析所述DBC文件,必要时去除无需解析的行,具体解析所述DBC文件中以“SG_”为标记的行,确定包括信号的名称、注释、起始位、位长度、转换因子、偏移值、最小值、最大值、单位和实际值在内的信号信息,将信号信息保存到对应创建的DBCSignal结构体中;以及,解析DBC文件中以“BO_”为标记的行,确定包括报文的名称、注释、帧ID、帧类型,以及报文所占字节数、所含DBCSignal信号集合和信号数量在内的报文信息,将报文信息保存到对应创建的DBCMessage结构体中。
步骤S23具体包括:在Qt库中创建封装数组,所述封装数组的类型被定义为第二结构体类型,并将所述第二结构体中的报文信息动态分配到所述封装数组的地址中。
根据一个具体的实施方式,在Qt库中创建QVector数组,所述QVector数组的类型被定义为DBCMessage结构体类型,并将所述DBCMessage结构体中的报文信息动态分配到所述QVector数组的地址中。其中,QVector是一种Qt库的类,用来封装Qt中所有的数组。
步骤S24具体包括:在Qt库中创建封装容器,并将所述第一结构体中的信号信息动态分配到所述封装容器中,其中,所述封装容器以键值对的形式储存所述信号信息。
根据一个具体的实施方式,在Qt库中创建QMap容器,并将所述DBCSignal结构体中的信号信息动态分配到所述QMap容器中,所述QMap容器以键值对的形式储存所述信号信息,所述键值对中的键为Qstring字符串类型,值为DBCSignal结构体类型。其中,QMap是一种Qt库里的容器,以“键-值”的方式保存数据。
在本发明方案中,基于Qt对解析得到的变量进行格式转换,通过将Qt变量转换为第二格式的变量后输出,即可生成第二格式文件。本发明所述的第二格式文件为JSON文件,由于Qt库中引入了对JSON数据的支持,可将Qt变量转换为JSON格式变量。
Qt中有关JSON的类包括:
QJsonArray,用于封装JSON数组;QJsonDocument,用于读写JSON文档;QJsonParseError,用于报告JSON处理过程中出现的错误;QJsonObject,用于封装JSON对象;QJsonValue,用JSON封装一个值。
进一步地,在步骤S3中,所述按照第二格式文件协议将所述应用程序开发库中的变量一一转换为第二格式的变量,即按照JSON文件协议将Qt变量一一转换为JSON变量包括以下步骤:
在Qt库中创建对象封装类;
遍历所述封装数组中的所有变量,将创建JSON文件所需求的目标变量放入所述对象封装类中;
遍历所述封装容器中的所有键值对,将与所述目标变量对应的帧ID放入所述对象封装类中;
在所述对象封装类中添加创建JSON文件所需要的额外变量,所述额外变量包括循环次数和数据类型;
将所述对象封装类中的对象处理成JSON对象。
根据一个具体的实施方式,如图3所示,JSON文件的生成流程包括:
S31、在Qt库中创建QJsonObject对象;
QJsonObject类用“key/value”对,即键值对列表的形式封装JSON对象,其中,键是唯一的字符串,值由QJsonValue表示。
S32、遍历所述QVector数组中的所有变量,将创建JSON格式所需求的目标变量放入所述QJsonObject对象中;
S33、遍历所述QMap容器中的所有键值对,将与所述目标变量对应的帧ID放入所述QJsonObject对象中;
S34、在所述QJsonObject对象中添加创建JSON格式文件所需要的额外变量,包括循环次数和数据类型;
S35、利用setObject方法将封装有JSON格式变量的QJsonObject对象处理成QJsonDocument对象;
S36、将所述QJsonDocument对象中的变量按JSON格式输出,以生成JSON文档。
QJsonDocument类是一个包含了完整JSON文档的类,支持以UTF-8编码的文本和Qt自身的二进制格式来读写JSON文档,可以通过QJsonDocument将QJsonObject与JSON文本格式相互转换。
在本发明中,基于Qt对DBC文件进行解析,包括解析DBC文件中的所有报文以及报文中的所有信号,并将解析得到的信息存储为Qt变量,再按照JSON协议格式将这些Qt变量一一转换为JSON格式的变量,最后将这些JSON格式的变量按JSON格式输出,从而生成JSON文件。由于Qt库中引入了对JSON数据的支持,其自带的JSON库文件可以高效、精准地处理JSON格式的变量,极大减少了JSON数据的处理时间,提高了整体的数据转换效率,解决了手动转换DBC文件为JSON文件存在的隐患。
本发明第二方面提供了一种文件格式转换装置,如图4所示,该文件格式转换装置包括:
读取模块1,用于读取DBC文件。
解析模块2,用于解析所述第一格式文件,并将解析结果储存在应用程序开发库中。
转换模块3,用于按照第二格式文件协议将所述应用程序开发库中的变量一一转换为第二格式变量。
输出模块4,用于输出所述第二格式变量并生成第二格式文件。
进一步地,所述读取模块1包括:
路径选择单元10,用于根据文件路径选择第一格式文件。其中,所述第一格式文件为DBC文件。
文件类型选择单元11,用于选择文件类型。所述DBC文件类型选择J1939类型。
判断单元12,用于判断文件是否读取成功。若是,则解析文件,若DBC文件内容为空或文件格式错误导致文件无法识别,则重新读取文件。
进一步地,所述解析模块2包括:
信号解析单元20,用于解析DBC文件中的所有信号,将包括信号的名称、注释、起始位、位长度、转换因子、偏移值、最小值、最大值、单位和实际值在内的信号信息解析到对应创建的第一结构体中。
报文解析单元21,用于解析DBC文件中的所有报文,将包括报文的名称、注释、帧ID、帧类型,以及报文所占字节数、所含信号集合和信号数量在内的报文信息解析到对应创建的第二结构体中。
第一分配单元22,用于在Qt库中创建封装数组,所述封装数组的类型被定义为第二结构体类型,并将所述第二结构体中的报文信息动态分配到所述封装数组的地址中。
第二分配单元23,用于在Qt库中创建封装容器,并将所述第一结构体中的信号信息动态分配到所述封装容器中,其中,所述封装容器以键值对的形式储存所述信号信息。
解析模块2的具体工作原理是:逐行解析DBC文件中以“SG_”为标记的行,确定包括信号的名称、注释、起始位、位长度、转换因子、偏移值、最小值、最大值、单位和实际值在内的信号信息,将信号信息保存到对应创建的DBCSignal结构体中;以及,解析DBC文件中以“BO_”为标记的行,确定包括报文的名称、注释、帧ID、帧类型,以及报文所占字节数、所含DBCSignal信号集合和信号数量在内的报文信息,将报文信息保存到对应创建的DBCMessage结构体中。
并且,通过在Qt库中创建QMap容器,将所述DBCSignal结构体中的信号信息动态分配到所述QMap容器中,所述QMap容器以键值对的形式储存所述信号信息,所述键值对中的键为Qstring字符串类型,值为DBCSignal结构体类型。通过该解析模块2将DBC文件所包含的信息对应储存为Qt变量。
进一步地,所述转换模块3包括:
创建单元30,用于在Qt库中创建对象封装类。
第一填充单元31,用于遍历所述封装数组中的所有变量,将创建第二格式文件所需求的目标变量放入所述对象封装类中,其中,所述第二格式文件为JSON文件。
第二填充单元32,用于遍历所述封装容器中的所有键值对,将与所述目标变量对应的帧ID放入所述对象封装类中。
优化单元33,用于在所述对象封装类中添加创建JSON文件所需要的额外变量,所述额外变量包括循环次数和数据类型。
处理单元34,用于将所述对象封装类中的对象处理成JSON对象。
进一步地,所述输出模块4包括:
输出单元40,用于将所述JSON对象中的变量按JSON格式输出,以生成JSON文件。
所述转换模块3的具体工作原理是:在Qt库中创建QJsonObject对象;遍历所述QVector数组中的所有变量,将创建JSON格式所需求的目标变量放入所述QJsonObject对象中;遍历所述QMap容器中的所有键值对,将与所述目标变量对应的帧ID放入所述QJsonObject对象中;在所述QJsonObject对象中添加创建JSON格式文件所需要的额外变量,包括循环次数和数据类型;再利用setObject方法将封装有JSON格式变量的QJsonObject对象处理成QJsonDocument对象。
所述输出模块4的工作原理是:将所述QJsonDocument对象中的变量按JSON格式输出,从而生成JSON文档。
本发明第三方面提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,所述计算机程序被处理器执行时实现上述文件格式转换方法。
以上详细描述了本发明的优选实施方式,但是,本发明并不限于此。在本发明的技术构思范围内,可以对本发明的技术方案进行多种简单变型,包括各个技术特征以任何其它的合适方式进行组合,这些简单变型和组合同样应当视为本发明所公开的内容,均属于本发明的保护范围。
Claims (7)
1.一种文件格式转换方法,其特征在于,所述文件格式转换方法包括:
读取第一格式文件,其中,所述第一格式文件为DBC文件;
解析所述第一格式文件,并将解析结果储存在应用程序开发库中;
按照第二格式文件协议将所述应用程序开发库中的变量一一转换为第二格式的变量;
输出所述第二格式的变量并生成第二格式文件;
所述解析所述第一格式文件,并将解析结果储存在应用程序开发库中,包括:
解析DBC文件中的所有信号,将包括信号的名称、注释、起始位、位长度、转换因子、偏移值、最小值、最大值、单位和实际值在内的信号信息解析到对应创建的第一结构体中;
解析DBC文件中的所有报文,将包括报文的名称、注释、帧ID、帧类型,以及报文所占字节数、所含信号集合和信号数量在内的报文信息解析到对应创建的第二结构体中;
在Qt库中创建封装数组,所述封装数组的类型被定义为第二结构体类型,并将所述第二结构体中的报文信息动态分配到所述封装数组的地址中;
在Qt库中创建封装容器,并将所述第一结构体中的信号信息动态分配到所述封装容器中,其中,所述封装容器以键值对的形式储存所述信号信息;
所述按照第二格式文件协议将所述应用程序开发库中的变量一一转换为第二格式的变量,包括:
在Qt库中创建对象封装类;
遍历所述封装数组中的所有变量,将创建第二格式文件所需求的目标变量放入所述对象封装类中,其中,所述第二格式文件为JSON文件;
遍历所述封装容器中的所有键值对,将与所述目标变量对应的帧ID放入所述对象封装类中;
在所述对象封装类中添加创建JSON文件所需要的额外变量,所述额外变量包括循环次数和数据类型;
将所述对象封装类中的对象处理成JSON对象。
2.根据权利要求1所述的文件格式转换方法,其特征在于,所述读取第一格式文件包括:
根据文件路径选择第一格式文件;
选择文件类型,DBC文件类型选择J1939类型;
判断文件是否读取成功,若是,则解析文件,若DBC文件内容为空或文件格式错误导致文件无法识别,则重新读取文件。
3.根据权利要求1所述的文件格式转换方法,其特征在于,所述输出所述第二格式的变量并生成第二格式文件,包括:
将所述JSON对象中的变量按JSON格式输出,以生成JSON文件。
4.一种文件格式转换装置,应用于上述权利要求1至3任一项所述的文件格式转换方法中,其特征在于,所述文件格式转换装置包括:
读取模块(1),用于读取第一格式文件,其中,所述第一格式文件为DBC文件;
解析模块(2),用于解析所述第一格式文件,并将解析结果储存在应用程序开发库中;
转换模块(3),用于按照第二格式文件协议将所述应用程序开发库中的变量一一转换为第二格式的变量;
输出模块(4),用于输出所述第二格式的变量并生成第二格式文件;
所述解析模块(2)包括:
信号解析单元(20),用于解析DBC文件中的所有信号,将包括信号的名称、注释、起始位、位长度、转换因子、偏移值、最小值、最大值、单位和实际值在内的信号信息解析到对应创建的第一结构体中;
报文解析单元(21),用于解析DBC文件中的所有报文,将包括报文的名称、注释、帧ID、帧类型,以及报文所占字节数、所含信号集合和信号数量在内的报文信息解析到对应创建的第二结构体中;
第一分配单元(22),用于在Qt库中创建封装数组,所述封装数组的类型被定义为第二结构体类型,并将所述第二结构体中的报文信息动态分配到所述封装数组的地址中;
第二分配单元(23),用于在Qt库中创建封装容器,并将所述第一结构体中的信号信息动态分配到所述封装容器中,其中,所述封装容器以键值对的形式储存所述信号信息;
所述转换模块(3)包括:
创建单元(30),用于在Qt库中创建对象封装类;
第一填充单元(31),用于遍历所述封装数组中的所有变量,将创建第二格式文件所需求的目标变量放入所述对象封装类中,其中,所述第二格式文件为JSON文件;
第二填充单元(32),用于遍历所述封装容器中的所有键值对,将与所述目标变量对应的帧ID放入所述对象封装类中;
优化单元(33),用于在所述对象封装类中添加创建JSON文件所需要的额外变量,所述额外变量包括循环次数和数据类型;
处理单元(34),用于将所述对象封装类中的对象处理成JSON对象。
5.根据权利要求4所述的文件格式转换装置,其特征在于,所述读取模块(1)包括:
路径选择单元(10),用于根据文件路径选择第一格式文件;
文件类型选择单元(11),用于选择文件类型,DBC文件类型选择J1939类型;
判断单元(12),用于判断文件是否读取成功,若是,则解析文件,若DBC文件内容为空或文件格式错误导致文件无法识别,则重新读取文件。
6.根据权利要求4所述的文件格式转换装置,其特征在于,所述输出模块(4)包括:
输出单元(40),用于将所述JSON对象中的变量按JSON格式输出,以生成JSON文件。
7.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1-3任一项所述的文件格式转换方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911412851.6A CN111191422B (zh) | 2019-12-31 | 2019-12-31 | 一种文件格式转换方法、装置和计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911412851.6A CN111191422B (zh) | 2019-12-31 | 2019-12-31 | 一种文件格式转换方法、装置和计算机可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111191422A CN111191422A (zh) | 2020-05-22 |
CN111191422B true CN111191422B (zh) | 2023-09-05 |
Family
ID=70707917
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911412851.6A Active CN111191422B (zh) | 2019-12-31 | 2019-12-31 | 一种文件格式转换方法、装置和计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111191422B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112187713B (zh) * | 2020-08-24 | 2023-04-25 | 苏宁云计算有限公司 | 报文转换的方法、装置、计算机设备和存储介质 |
CN112378420A (zh) * | 2020-10-30 | 2021-02-19 | 北斗星通智联科技有限责任公司 | 用于汽车导航测试的信号模拟方法、系统及电子设备 |
CN112527734A (zh) * | 2020-12-07 | 2021-03-19 | 北京百度网讯科技有限公司 | 一种图形处理方法、装置、电子设备及存储介质 |
CN112291131B (zh) * | 2020-12-28 | 2021-03-30 | 知行汽车科技(苏州)有限公司 | Can信号自动解析装置及设备 |
CN117203637A (zh) * | 2021-10-25 | 2023-12-08 | 华为技术有限公司 | 访问车辆资源的方法、装置和车辆控制器 |
CN117499504B (zh) * | 2023-12-29 | 2024-03-22 | 万联易达物流科技有限公司 | 一种报文格式转换方法和系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106648761A (zh) * | 2016-12-01 | 2017-05-10 | 武汉斗鱼网络科技有限公司 | 在qt程序中自动更新的方法及装置 |
CN108600192A (zh) * | 2018-04-03 | 2018-09-28 | 南京越博动力系统股份有限公司 | 一种基于正则表达式的dbc文件解析及报文分析方法 |
CN110196850A (zh) * | 2019-04-22 | 2019-09-03 | 上海蔚来汽车有限公司 | 车辆数据处理平台 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11269807B2 (en) * | 2018-02-22 | 2022-03-08 | Ford Motor Company | Method and system for deconstructing and searching binary based vehicular data |
-
2019
- 2019-12-31 CN CN201911412851.6A patent/CN111191422B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106648761A (zh) * | 2016-12-01 | 2017-05-10 | 武汉斗鱼网络科技有限公司 | 在qt程序中自动更新的方法及装置 |
CN108600192A (zh) * | 2018-04-03 | 2018-09-28 | 南京越博动力系统股份有限公司 | 一种基于正则表达式的dbc文件解析及报文分析方法 |
CN110196850A (zh) * | 2019-04-22 | 2019-09-03 | 上海蔚来汽车有限公司 | 车辆数据处理平台 |
Also Published As
Publication number | Publication date |
---|---|
CN111191422A (zh) | 2020-05-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111191422B (zh) | 一种文件格式转换方法、装置和计算机可读存储介质 | |
CN108600192B (zh) | 一种基于正则表达式的dbc文件解析及报文分析方法 | |
CN105608088B (zh) | 一种基于配置文件的数据库自动创建与数据动态记录方法 | |
CN107066243B (zh) | 一种通用的机载总线接口控制文档的解析和打包方法 | |
CN105302115B (zh) | 列车网络应用层控制软件自动化测试方法 | |
CN106598581A (zh) | 基于xml的asterix报文解析代码生成方法 | |
CN104750758A (zh) | 一种微小卫星测试数据包的通用解析处理方法和系统 | |
CN108829609A (zh) | 一种蓝牙产品的测试方法及系统 | |
CN110597771B (zh) | 快速导入dbf文件的方法、装置、设备及可读存储介质 | |
CN103297554B (zh) | IPv4和IPv6兼容处理的方法及装置 | |
CN111694561A (zh) | 一种接口管理方法、装置、设备及存储介质 | |
CN111354099A (zh) | 一种数据处理方法、数据处理装置及诊断设备 | |
US6941558B2 (en) | System and method for automatically generating an object-oriented class wrapper | |
CN107092474B (zh) | 程序开发方法、etl处理方法及装置 | |
CN104378362A (zh) | 用于进行报文接口转换的方法及装置 | |
CN116521602A (zh) | 一种总线数据的传输方法和装置及存储介质 | |
CN116074232A (zh) | 一种基于dbc文件解析生成车载网关路由表的处理方法 | |
CN107306256A (zh) | 一种基于字符串类型数据的通讯协议解析方法 | |
KR20090056622A (ko) | 바이너리 데이터 파일 분석 방법 및 장치와 그 방법을수행하기 위한 프로그램이 기록된 기록매체 | |
CN111049813B (zh) | 报文组装方法、解析方法、装置及存储介质 | |
CN113742294A (zh) | 一种asn.1-per信令消息解码方法、系统、装置及介质 | |
CN113949749A (zh) | Xml报文处理方法及装置 | |
CN107562562B (zh) | 一种描述故障事件的额外信息的设置方法及系统 | |
CN112162951A (zh) | 一种信息检索方法、服务器及存储介质 | |
CN114499759B (zh) | 报文生成方法、装置、电子设备及存储介质 |
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 |