优先状态机框架——极简的使用体验,没有QMH那种复杂连线
labview吧
全部回复
仅看楼主
level 6
侦哲优论 楼主
最近写了个及其好用的VI,Priority Status.vi,不像QMH框架使用队列到处连线
又可以实现线程与线程之间传递消息,控制状态机状态,甚至在子VI和主VI自己传递数据,控制各个线程状态
以下是用Priority Status.vi写的优先状态机的演示VI,大家看看怎么样?
2025年04月29日 16点04分 1
level 6
侦哲优论 楼主
O: 为操作模式,WS,W,R,I四种模式,I为初始化,本质为初始化数组,此时ID就为初始化数组维数;WS为只写入优先状态;W为写入优先状态和变体数据,R为读取优先状态和变体数据;他们都是根据对应ID进行读写的。
ID: 为线程和数据的ID,来确定控制那个线程,读写哪一个数据
IS和OS: 线程状态输入和输出,优先状态优先级高于普通状态,所以会输出优先状态。
PS: 优先状态,将优先状态写入后,会改变对应ID线程的状态
WD和RD: 用于传递线程之间,主VI与子VI之间的数据
IE和OE: 错误输入输出
2025年04月29日 16点04分 2
level 6
侦哲优论 楼主
示例:F操作——线程与线程之间数据传递
如图所示:
1,“F操作“按钮按下触发值改变,执行Priority Status.vi,
2,O操作模式没有连接,默认为WS为只写入优先状态,线程ID0写入F
3,线程0改为F状态,执行将随机数和文本打包成簇写入ID1,同时将状态F也写入ID1,如果没有其它优先状态写入ID0,线程0将会一直执行F,效果是不断生成随机数,并更改变体数据值
4,由于状态F也写入ID1,线程1也不停执行F,线程1就是不断把变体里面数据读取出来显示。
2025年04月29日 17点04分 3
level 1
我之前用lab,现在用Python.。线程传输太简单了。
2025年04月30日 02点04分 4
我啥都用,用vscode的C开发esp32,andriod studio的Java开发手机APP,用STM32Culb的C开发STM32,用Visual Studio的C#开发桌面应用程序,用keil开发过51都是比较好用的
2025年04月30日 03点04分
有些NI的设备,DAQ采集,CAN卡,X-NEXT卡,用别的开发不方便,还得用官方的这个
2025年04月30日 03点04分
ni采集卡我也经常用。lab教程太少了,我只止步于dqmh框架。
2025年04月30日 05点04分
level 5
程式不是自己写的话,要知道别人有多少个线程挺不方便查找的
2025年05月02日 12点05分 5
@侦哲优论 簇不同类型转化不了数组,这种每次改变值都要写一个事件框去触发事件的做法,真的不友好。
2025年05月08日 12点05分
什么意思?
2025年05月03日 07点05分
@侦哲优论 有两三百个控件的值读写有排写,也有排查
2025年05月03日 16点05分
@lesterlai2000 搞成簇在转化成数组,用for循环赋值,就不用连的到处都是线了
2025年05月04日 01点05分
1