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