為了優化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編程技巧和相關內容感興趣的工程師們,歡迎持續關注、留言和點贊,也可以私信小編各位的技術困惑和技術需求,以獲取參加免費線下培訓和技術交流的機會哦。
-
字符串
+關注
關注
1文章
596瀏覽量
23165 -
文本
+關注
關注
0文章
120瀏覽量
17865 -
JSON
+關注
關注
0文章
128瀏覽量
7781
原文標題:知識分享 | DBC的Signal與JSON文本結合
文章出處:【微信號:華穗科技,微信公眾號:華穗科技】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
求助,為什么在CAN數據庫(.dbc文本文件)中找不到報文?
關于CANdb++ Editor編寫DBC文件時Factor的設置問題求解
JSON是什么?如何去創建一種JSON?
為什么無法訪問HTTPS URL JSON?
如何通過http get和post傳輸json文件來控制聯網的電源插座
什么是JSON劫持 JSON和XML的區別
什么是JSON JSON的語法規則
DBC編輯_文本形式編輯
CAN DBC文件解析
更低內存占用的通用Json庫-RyanJson
如何利用Python和pandas來處理json數據
JSON協議是什么,物聯網中的RTU中如何使用JSON協議和服務器交互
詳解DBC的Signal與JSON文本結合
評論