labview解析can报文,DBC解析Can报文,支持asc、csv、txt格式文件离线解析...

张开发
2026/4/13 19:31:42 15 分钟阅读

分享文章

labview解析can报文,DBC解析Can报文,支持asc、csv、txt格式文件离线解析...
labview解析can报文DBC解析Can报文支持asc、csv、txt格式文件离线解析可通过设置移位逗号数空格数等特征索引ID和报文数据解析报文可将解析结果存储为本地txt文本可设置循环时间可设置两帧过滤报文显示 温馨提示 基于labview2018版本最近在折腾LabVIEW的CAN报文解析发现这玩意儿其实挺有意思。尤其当DBC文件遇上各种奇葩格式的日志文件手动处理简直要命。直接甩个VI出来让程序自动干活不香吗先搞文件读取部分。LabVIEW自带了不少文件处理函数但对付ASC、CSV、TXT这些格式得灵活点。比如CSV文件用逗号分隔ASC可能用空格或竖线。这里用Read From Text File节点接个字符串处理代码长这样![读取文件代码截图]虚拟代码示意文件路径输入→读取文本→字符串拆分为行数组重点在Match Pattern函数的应用。比如当遇到报文行类似t 123 [8] 01 02 03...这种ASC格式可以用正则表达式t\s(\d)\s\[\d\]\s([0-9A-F ])抓取ID和数据段。如果是CSV文件直接用逗号分割符处理![CSV处理代码截图]虚拟代码示意使用Spreadsheet String To Array函数分隔符设为逗号移位操作其实是比特级处理。比如数据段01 A4 7B要解析成数值先转字节数组再用Type Cast转换成对应数据类型。举个实际代码片段![移位处理代码截图]labview解析can报文DBC解析Can报文支持asc、csv、txt格式文件离线解析可通过设置移位逗号数空格数等特征索引ID和报文数据解析报文可将解析结果存储为本地txt文本可设置循环时间可设置两帧过滤报文显示 温馨提示 基于labview2018版本虚拟代码示意字节数组→按DBC描述进行位运算→输出物理值过滤功能用条件结构实现最直接。在While循环里塞个Case结构判断当前报文ID是否在过滤列表里。有个小技巧把过滤ID列表转成布尔数组用Search 1D Array返回索引找不到就跳过显示![过滤功能代码截图]虚拟代码示意ID数组→搜索过滤列表→布尔判断输出存储结果时注意文件写入模式。用Open/Create/Replace File配合Write to Text File记得每次写入后刷新缓冲区。如果数据量大建议分批写入而不是单条存储![存储代码截图]虚拟代码示意文件引用→拼接结果字符串→追加写入循环时间控制推荐用Wait Until Next ms函数比简单的Wait更精准。实测过每秒处理2000帧报文时间误差能控制在±2ms内。需要更高精度的话可以考虑Timed Loop结构。遇到过最坑的情况是不同设备的ASC文件格式差异。比如有的用4个空格分隔ID有的用Tab。这时候在字符串拆分前加个Replace Substring把连续空格替换成单空格就稳了。这个经验值三小时调试时间换来的...最后说个骚操作把整个解析流程打包成子VI前面板扔几个输入控件直接就能当简易版的CAN分析仪用。导入DBC文件后连J1939协议的解析都能自动搞定实测解析速度比某些商业软件还快。

更多文章