荣小菜补钙记第50期:报文合成与解析之统型设计4 同步更新于 WeChat:荣小菜在补钙 欢迎关注 内容更丰富 大家好,我是荣小菜,本期开始讲解Demo中的“ControlCluster”类,展示如何根据Excel加载表的内容生成对应控制项UI。话不多说,先看视频吧。 1. 视频演示 在视频中,我们将逐条讲解ControlCluster.lvclass的关键Vis并详细介绍它们的功能和实现逻辑。 (视频见底部) 2. 补充 这里简单补充一下数值引用的内容。在数据处理时,我们常常会将写一些数据处理Vi,这些Vi一般以数组为输入输出端口。数据量小的时候这样做问题不大,但是当一个数组达到几百MB时,我们写的程序往往会报错,提示内存不足。 随后我们Debug时会发现,一个输入数组500MB,分别经好几个Vi进行数据处理,经过1个,内存就增长500MB,再经过1个,内存再增长500MB。按照这种写法,labview本身可使用的2G肯定不够用,估计再给个20G也不够用。这主要是因为每个Vi都会复制一份数据,而只要程序还在运行,该Vi就算执行完毕,也不会自动释放其复制的内存。 一种方法可以在Vi里使用“请求释放内存”函数,但是数据处理Vi一般是频繁运行的,而频繁请求释放内存会降低运行速度,也可能导致未知错误。 另一种方法是在数据结构上进行优化,使用“数据值引用”,官方帮助文档如下,使用该方法,可以大大减少内存占用,加快执行速度。
最后再介绍一个工具包,在数值引用的基础上,Variant Ring Buffer (或者叫:环形缓存、环形缓冲器、环形队列) 工具包可以帮助我们更好的管理内存,有兴趣的可以去研究一下。
注意:考虑到可能有人没有QControl,我进行了源代码发布,使用时请注意。 分享开源免费,共同学习进步^_^
20211122-204255
|