为了优化CAN数据发送与接收的操作流程,更改以前手动输入状态对应数据的模式,采用下拉列表选择内容,但这需要用到超出DBC原有承载能力的信息。因此,将JSON与其结合,采用JSON格式文本写入Signal的Comment属性,将Comment属性的字符串通过JSON文本拓展信息承载能力。
下面请跟随小编一起来学习一下吧!
本文分享:
DBC的Signal与JSON文本结合
一、JSON文本
JSON的全称是JavaScript Object Notation,是一种轻量级的数据交换格式。JSON文本采用纯文本形式,结构清晰,具有严格的语法规则、独立于语言等核心特点,可以在客户端和服务器之间传递数据,同时可以作为配置文件、数据存储等。
1、基本语法规则
数据以键值对(名称/值)的形式存在: "键": 值
键名必须是双引号引起来的字符串。
值类型:
字符串:必须使用双引号。 ("name": "张三")
数字:整数或浮点数。 ("age": 25)
布尔值: true 或 false。
空值: null。
对象: 用花括号 {} 包裹的一组无序的键值对。可以嵌套。
数组: 用方括号 [] 包裹的一组有序的值。
数据之间用逗号分隔。
最后一个元素后不能有逗号。
示例如下:
{
"company": "科技公司",
"year": 2023,
"isPublic": false,
"address": null,
"departments": [
{
"name": "研发部",
"employeeCount": 50
},
{
"name": "市场部",
"employeeCount": 30
}
],
"tags": ["互联网", "创新", "敏捷开发"]
}
二、NI-XNET Database Editor
NI-XNET Database Editor是NI关于车载网络的重要软件,可以实现DBC数据库文件的编辑。它通过直观的图形化界面,将复杂的通信协议——包括报文 ID、信号布局、物理值换算和网络节点关系——转化为可编辑、可验证的工程对象。该工具生成的标准数据库文件,可被NI-XNET驱动程序直接识别与调用,从而使上层的 LabVIEW等应用能够以物理信号为单位便捷地读写CAN总线数据,实现了从协议设计、仿真测试到数据解析的全流程无缝集成。
三、操作步骤
1、LabVIEW中JSON文本转换VI
在程序框图中右击,找到“平化/还原字符串”下的两个VI,如下图所示。这两个VI分别为将簇转为JSON文本、从JSON文本转为簇。使用“从JSON文本转为簇”即可将JSON文本转化为LabVIEW中可以使用的簇,这样就可以免去JSON文本向LabVIEW的数据需求转换的代码逻辑。


2、UTF-8格式问题
由于“从JSON文本转为簇”VI的文本编码仅能为UTF-8,而DBC中读取的Comment仅能为GBK编码,导致转换失败。通过下图所示的“GBK向UTF-8转换”文本编码转换器,可以解决这个问题。

3、UTF8Encoding
图中的“UTF8Encoding”可以通过“互联接口”面板-“.NET”面板-“构造器节点”获得,如下图所示。

在构造器节点里,“程序集”部分选择”mscorlib(4.0.0.0)“,如下图所示。

在“对象”部分双击“System.Text”,如下图所示。

选择“UTF8Encoding”,如下图所示。

四、示例
1、DBC编辑
将JSON文件中的信息填入Signal的Comment中,如图所示。

2、关键程序
在程序中获取Frame中所有Signal的Comment属性,并将Comment通过“GBK向UTF-8转换”VI转化为UTF-8编码,最后使用“从JSON文本转为簇”VI即可将DBC中的所有拓展信息提取出来供LabVIEW程序使用。

3、最终效果
通过下拉列表选择内容,实现CAN数据发送与接收,优化了手动输入状态对应的数据的操作。

以上就是DBC的Signal与JSON文本结合的全部内容啦。欢迎大家留言讨论,交流分享!更多关于测试系统中的实际软硬件应用知识,可关注本公众号/下方合集。
更多内容,敬请期待!
对LabVIEW编程技巧和相关内容感兴趣的工程师们,欢迎持续关注、留言和点赞,也可以私信小编各位的技术困惑和技术需求,以获取参加免费线下培训和技术交流的机会哦。
全部0条评论
快来发表一下你的评论吧 !