荣小菜补钙记第39期:
labview菜单没图标、字太小还不好看怎么办?
那就用簇做一个吧!(SP1升级版)
同步更新于 WeChat:荣小菜在补钙
大家好,我是荣小菜,也可以叫我Richie,本期对Cluster Menu做一个升级,增加等待前面板打开功能,并增强其可重入能力,为将来融入AF架构打好基础。
另外,基于LabVIEW Actor Framework的连续测量和记录系统系列还在酝酿,大的框架已经完成了,在本期最后给大家做一个简单展示。其实这几期讲的内容也可以算是其中的一小部分。
1. 简介
上一期我们讲到了Cluster Menu在使用中的一些缺陷并给出一些解决思路,其实还有一些缺陷没有讲到。
首先,就是它不具备完整的可重入能力。具体表现为当同时调用多个菜单时,各个菜单在用户单击后的返回值互相覆盖,导致功能失效。
此外,当采用子面板形式时,Cluster Menu可能会因为其调用Vi的前面板延迟插入产生注册事件错误,最终导致Menu Core运行错误。
2. 升级1-可重入能力
完善其可重入能力主要更改的地方有两个。
第一个是修改Run.vi中的打开VI引用参数,如下图所示,将其从0x80修改为0xC0,该参数相当于采用0x40和0x80两参数对应的功能,具体可查看帮助文档。
此外,另一处需要修改的地方就是Select MenuItem Queue,本来我们采用的是字符串队列的方式,现在将其改为数值引用方式。因为原先的方式会导致多个Cluster Menu共用同一个队列,数据冲突。
如下图所示,我们分别修改了Init.vi,Clear.vi和Menu Core.vi。
Init.vi修改
Clear.vi修改
MenuCore.vi修改
当然,Menu Core.vi还有其它Property中含有的Vi也要改成可重入的。
注意,改动后Read MenuItem就没有超时了,Set Read
timeout可以不用了。
3. 升级2-等待前面板打开功能
在QControl中为了具备更好的兼容性,使用了多用户事件来实现该功能。我这里的实现方式类似,不过只使用了Stop用户事件。
代码如下图所示,在超时事件中不乱尝试注册事件直到无错误注册成功(相当于等待前面板打开),同时,Stop用户事件也能终止轮询(我们可以随时调用Clear.vi停止),当该事件触发时,将向外传递一个错误作为警示。
WaitFP Open.vi 超时
WaitFP Open.vi Stop
最后我们修改Menu Core.vi,将Wait FP Open加入,代码如下。
MenuCore.vi 加入Wait FP功能
4. 总结
本期我们讲解了Cluster Menu SP1升级版,期望对大家有所帮助哈。
预告一下我们” 基于LabVIEWActor Framework的连续测量和记录系统系列”的TOPLEVEL,其中涉及的东西比较多,后面会慢慢讲解。
欢迎大家多多分享,共同进步^_^