0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

详解DBC的Signal与JSON文本结合

华穗科技 来源:华穗科技 2026-01-06 10:57 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

为了优化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的数据需求转换的代码逻辑。

89fe3ec4-e524-11f0-8c8f-92fbcf53809c.png

8a55eff2-e524-11f0-8c8f-92fbcf53809c.png

2、UTF-8格式问题

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

8aaf6ee2-e524-11f0-8c8f-92fbcf53809c.png

3、UTF8Encoding

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

8b09dc7e-e524-11f0-8c8f-92fbcf53809c.png

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

8b617646-e524-11f0-8c8f-92fbcf53809c.png

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

8bbb527e-e524-11f0-8c8f-92fbcf53809c.png

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

8c14d880-e524-11f0-8c8f-92fbcf53809c.png

四、示例

1、DBC编辑

将JSON文件中的信息填入Signal的Comment中,如图所示。

8c6f441e-e524-11f0-8c8f-92fbcf53809c.png

2、关键程序

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

8cc5e3dc-e524-11f0-8c8f-92fbcf53809c.png

3、最终效果

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

8d1da662-e524-11f0-8c8f-92fbcf53809c.png

以上就是DBC的Signal与JSON文本结合的全部内容啦。欢迎大家留言讨论,交流分享!更多关于测试系统中的实际软硬件应用知识,可关注本公众号/下方合集。

更多内容,敬请期待!

对LabVIEW编程技巧和相关内容感兴趣的工程师们,欢迎持续关注、留言和点赞,也可以私信小编各位的技术困惑和技术需求,以获取参加免费线下培训和技术交流的机会哦。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 字符串
    +关注

    关注

    1

    文章

    596

    浏览量

    23263
  • 文本
    +关注

    关注

    0

    文章

    120

    浏览量

    17941
  • JSON
    +关注

    关注

    0

    文章

    129

    浏览量

    7834

原文标题:知识分享 | DBC的Signal与JSON文本结合

文章出处:【微信号:华穗科技,微信公众号:华穗科技】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    求助,为什么在CAN数据库(.dbc文本文件)中找不到报文?

    我有CAN数据库(dbc文件)。这是一个文本文件。此文件的扩展名为 dbc。在Vector CANdb++编辑器中打开它时,将填充J1939报文和CAN ID。 但是,在.dbc
    发表于 01-23 06:28

    关于CANdb++ Editor编写DBC文件时Factor的设置问题求解

    求助CANdb++ Editor编写DBC文件时 Factor设置的问题: 编辑DBC文件时,当我设置Signal的Factor时,如果设置了0.0001,DBC就正常解析没问题。但如
    发表于 04-12 07:03

    JSON是什么?如何去创建一种JSON

    1.JSON是一种轻量级的数据交换格式。是一种独立于语言的文本格式。轻量级适合xml相比较。数据交换指的是客户端和服务器之间的数据传递格式。1.1JavaScript中使用JSON创建:JSO
    发表于 07-09 07:06

    如何对基于stm32的json进行解析

    语言的json解析库,可以将包含json文本解析成为C的数据格式。作为初学者的我,在接触到这个库的时候其实完全
    发表于 01-12 08:04

    为什么无法访问HTTPS URL JSON

    我试图访问 HTTPS URL 上的 JSON 文本。不能在 HTTP 上这样做。我使用了 Arduino IDE 文件选项卡 (ESP8266WiFi-HTTPSREQUEST) 示例部分中的模板
    发表于 02-24 06:26

    如何通过http get和post传输json文件来控制联网的电源插座

    显示一个仪表板中的文本字段。在此指令中,文本节点显示电流,电压,型号,固件版本或JSON版本。
    的头像 发表于 10-28 17:50 4489次阅读

    基于Json格式的文本视图验证工具

    基于Json格式的文本视图验证工具
    发表于 09-19 09:15 8次下载

    什么是JSON劫持 JSON和XML的区别

    什么是JSON劫持 单从字面上就可以理解的出来,JSON是一种轻量级的数据交换格式,而劫持就是对数据进行窃取(或者应该称为打劫、拦截比较合适。恶意攻击者通过某些特定的手段,将本应该返回给用户
    的头像 发表于 08-05 10:09 2172次阅读

    什么是JSON JSON的语法规则

    )的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。 JSON
    的头像 发表于 08-25 15:40 3634次阅读

    DBC编辑_文本形式编辑

    1. DBCDBC是Data Base CAN的缩写。DBC文件是用来描述CAN网络通信信号的一种格式文件。ECU之间的通信、信息的交互以及相互之间的关系,都是通过DBC文件来管理的,也就是ECU
    发表于 12-05 20:51 17次下载
    <b class='flag-5'>DBC</b>编辑_<b class='flag-5'>文本</b>形式编辑

    CAN DBC文件解析

    CAN DBC 指的是CAN 报文的数据库。简单地说,通过CAN 总线通信的数据类型可以用DBC 文件来读取和理解。DBC 是一种基于ASCII 的翻译,是在20世纪90年代发展起来的标准文件,现在
    的头像 发表于 08-14 11:35 6046次阅读
    CAN <b class='flag-5'>DBC</b>文件解析

    更低内存占用的通用Json库-RyanJson

    RyanJson是一个小巧的c语言json解析器,包含json文本文件解析 / 生成,专门针对内存占用进行优化,相比cJSON内存占用减少30% - 60%,运行速度和cJSON差不多。
    的头像 发表于 08-24 17:23 3051次阅读
    更低内存占用的通用<b class='flag-5'>Json</b>库-RyanJson

    如何利用Python和pandas来处理json数据

    在实际工作中,尤其是web数据的传输,我们经常会遇到json数据。它不像常见的文本数据、数值数据那样友好,而且它和Python中的字典类型数据又很相像,给很多人造成了困扰。 本文结合具体案例详细介绍
    的头像 发表于 11-01 10:59 3950次阅读
    如何利用Python和pandas来处理<b class='flag-5'>json</b>数据

    什么是JSON数据库

    如何理解JSON数据库?作为NoSQL数据库的一种类型,JSON数据库有哪些优势呢?JSON数据库如何运作,它为应用程序开发者带来了哪些价值呢?文章速览:什么是JSON什么是
    的头像 发表于 12-02 08:04 2026次阅读
    什么是<b class='flag-5'>JSON</b>数据库

    JSON协议是什么,物联网中的RTU中如何使用JSON协议和服务器交互

    一 概述 1.1 什么是 JSON JSON是JavaScript Object Notation的简称,中文含义为“JavaScript 对象表示法”,它是一种数据交换的文本格式,而不是一种编程
    的头像 发表于 09-25 16:14 3207次阅读
    <b class='flag-5'>JSON</b>协议是什么,物联网中的RTU中如何使用<b class='flag-5'>JSON</b>协议和服务器交互