知乎上有知友关于操作者框架中动态启动嵌套操作者的消息有疑惑。
官方帮助文档写的没问题,要想理解发送启动嵌套操作者消息VI的话,这里有个三个关于操作者框架的知识点需要掌握!
第一个知识点:操作者按照任务树组成操作者系统,由操作者系统完成整体程序的任务目标,每个操作者和其嵌套操作者是面向对象中的组合关系。
第二个知识点:每个操作者的消息路由分为三个方向,向上给其调用者的(下图编号3),向自己发送给自己的(下图编号2),向下给其嵌套操作者的(下图编号1)。
第三个知识点:操作者的启动分为静态启动和动态启动两种方式,而使用消息封装启动嵌套操作者就是典型的按需动态启动过程。
注意启动嵌套操作者是主调用者的责任,则必然是自己发送给自己的消息。
综合上述三个知识点:主调用操作者需要在需要时动态生成1个(或者N个)嵌套操作者,而在主调用者中完成该操作,则需要使用Actor Core中的消息循环(MHL),因此也就需要通过消息来封装Launch Actor方法,并且由于主调用者和嵌套操作者的关系是组合关系,必然是由主调用者完成对嵌套操作者的启动,因此消息是发给调用者自己的。
如果你有兴趣可以看看Launch Nested Actor Msg.lvclass类的具体实现,就是对Launch Nested Actor.vi的简单封装。
另外在实际使用的时候,往往还需要在启动后对启动起来的嵌套操作者进行某些状态初始化的设置,通过上述快捷方式启动嵌套操作者,并不能直接获得嵌套操作者的消息队列,往往需要自己进行方法编写后再进行消息的封装。
以上,希望对大家能有帮助,祝各位学习操作者框架顺利!
我是知乎上的李时珍,网络上讲解LabVIEW最啰嗦的大叔,没有之一!