LabVIEWwilliam hill官网
直播中

荣琪

8年用户 689经验值
擅长:可编程逻辑 测量仪表 嵌入式技术
私信 关注
[文章]

荣小菜补钙记第46期:报文合成与解析之平化至字符串

荣小菜补钙记第46期:报文合成与解析之平化至字符串
同步更新于 WeChat:荣小菜在补钙
欢迎关注 内容更丰富
大家好,我是荣小菜,本期将讲解labview中平化至字符串的一些小技巧,这对于报文的合成有不小的帮助,
1.     平化至字符串函数简介
在45期中,我们使用了从字符串还原函数来帮助我们实现字符串的映射。那么与之相对的就是平化至字符串函数了,合理使用该函数可以十分方便的帮我们处理报文数据。尤其是将复杂的层次结构数据转换为字符串报文。
       该函数的介绍如下,需要注意的是,我们一般不希望转换后的数据包含“大小”信息,因此“预置数组或字符串大小”一般设为False。而更值得注意的是(高亮处),“在层次结构数据类型中的数组和字符串始终包括大小信息”,这意味着在簇中只要含有字符串不论设True还是False都不管用了,都会包含大小信息。
平化字符串介绍.JPG
                              
2.     层级数据结构转换_方法1
考虑到使用自定义簇控件来管理报文格式是一种比较好的方式。我们这里就直接以这种层级数据结构为例。Demo如下所示,假设Msg In簇控件包含“起始码”、”检验码”、“终止码”等数值,甚至嵌套包含一个“数据流”簇。可见这个层级结构算是比较复杂了,有不同位宽的数值还有不定长的字符串。
方法1.JPG
方法1前面板
而将该层级Msg In结构转换为需要的字符串报文,我们一般会考虑使用拆分、转换、合并的方式。如下图所示,我们将簇层层拆分,提起数据并分别转换,最后进行一个字符串连接。可想而知,若是层级结构再复杂一些,代码量是多么大,效率是多么低。
方法1后面板.JPG
方法1后面板
3.     层级数据结构转换_方法2
而使用“平化至字符串”函数则明显方便许多,Demo如下,可以看到,该函数直接取代了方法1中一大堆的代码,省时省力。
平化至字符串编写.gif
方法1、2后面板对比
不过需要注意的是,由于层级数据结构中的字符串转换后会包含额外4个字节用来表示大小信息(见第1节),如下图中的“0000 0002”就表示“消息载荷“ABCD”长度为2。这样最终生成的报文长度就会多4个字节。
字节长度不同.png
方法1、2前面板对比
因此我们就需要将这类表示大小信息的字节删除,对于本Demo,前面的格式固定,因此直接根据偏移量删除即可。而对于更加复杂的层级结构,其实总能找到删除的位置,多删几次的代码量也远远小于方法1。
删除多余字节.png
方法2 删除多余表大小信息的字节
4.     总结
算一算有30天没更新了,最近补了一大堆的钙,杨高科的LabVIEW图像处理、matlab,MySQL。最后又借了本Python的书,想看看它凭什么年年排一(听说不少大厂自动测试也都转用Python)。
话说我这边的图书馆很懂行啊,网上下订单,借的Python书可能太高级,结果人家可能感觉我是小白(感觉的很对~),直接给我换了一本看起来超适合入门的,有高人啊~
大家要是有知道比较好的学习Python的网络资源也可以推荐给我哈。
源代码:
DemoProj2016.rar (10.55 KB)
(下载次数: 19, 2021-10-10 20:50 上传)
分享开源免费,共同学习进步^_^

回帖(1)

poptop

2021-10-20 13:43:16
谢谢分享                                                                                                
举报

更多回帖

发帖
×
20
完善资料,
赚取积分