LabVIEWwilliam hill官网
直播中

荣琪

8年用户 689经验值
擅长:可编程逻辑 测量仪表 嵌入式技术
私信 关注
[文章]

荣小菜补钙记第41期:基于LabVIEW Actor Framework的连续测量和记录系统5

荣小菜补钙记第41期:基于labview Actor Framework的连续测量和记录系统5
同步更新于 WeChat:荣小菜在补钙
欢迎关注 内容更丰富
大家好,我是荣小菜,上一期讲解了作为框架的Top Actor(调用方),从本期开始将进入具体的Actor讲解(被调用方),建议阅读本期前先回顾一下前面的33~35和40期。
1.     简介-Function Actor
Top Actor算是一个顶层调用框架,而Function Actor就属于被调用方了,它可以对应到各大功能项。当然,FunctionActor还可以继续细分至小功能项及组件。项目树如下图所示,主要有Msg、Parent Function、Function1和Function2共4个部分。其中,Msg类设计是为了将一些通用的消息封装复用,Parent Function继承于Actor类,没有具体功能,主要是为了将Pre Init和Stop的一些通用功能封装复用。而具体的Function X继承于Parent Function,将实现一些更具体的功能。它们最终将被Top Actor调用并展现在UI中。
篇幅有限,本期仅先讲解调用方和被调用方上下通讯的桥梁:Message Trans.class
Function Actor 项目树.JPG
                              
项目树
2.     Message Trans.class:Data
Message Trans class的设计目的是将如已启动、已退出等消息的发送进行封装,使得通用消息能够复用。Msg Class私有数据如下,首先,用户事件Msg不可缺少,第40期中我们的Top Level之所以能够跟随各Actor的启停发生变化,主要就是依赖于它。其次,由于当前地Msg Class仅需支持各Actor启停消息的发送,这里只额外包含Actor的Vi Ref和ID Num。前者不必多说,没有引用啥都白扯;后者是各Actor启动后的唯一标识,在第40期中已经有过讲解。
Msg属性.JPG
Msg数据
3.     Message Trans.class:Loaded Event 和Exited Event Vi
目前Msg的方法仅包含两个,即Loaded和Exited Event Vi。代码如下,功能很简单,就是将已经启动/退出的Actor的信息通过用户事件发送。Sender和Receiver是可以指明消息的来源和响应方。而由于Msg用户事件的数据为变体类型,我们只需将Vi Ref和ID Num作为自定义控件类型管理,就可以尽情写入了。
Msg_Loaded Event.JPG
Loaded/ExitedEvent
4.     Message Trans.class:Vi Name Map
在整个Msg使用时,我们偶尔需要用到字符串类型的操作者名称,由于我们采用的是枚举自定义类型来管理主要操作者的名称,其本质是数值类型。因此我们需要一个映射函数来完成这一转换。Vi Name Map的代码如下,主要功能就是实现枚举数值和对应字符串的互相转换。整个代码比较简单,通过索引搜索操作者名称(枚举类型)的字符串数组,即可实现转换。
Vi Name Map.JPG
Vi NameMap程序
5.     总结
本期讲解了Top Actor和FunctionActor间上下通讯的桥梁:Message Trans.class,目前它的功能比较简单,仅用来传输启动和退出消息,但由于我们为其设计了变体类型的数据结构和发送/接收方,它后续可很容易地扩展新的消息。
其实写完Msg Class就发现已经很多了,没办法,我们后面再讲解Parent Actor及具体的Function Actor吧。
源代码:见第40期
Actor Framework,期望各位大神分享更多实用资料^_^

回帖(1)

efans_776edd

2021-7-29 09:28:33
围观围观 收藏收藏
举报

更多回帖

发帖
×
20
完善资料,
赚取积分