4、LabVIEW面向对象的编程架构:Actor Framework编程
Actor Framework是一个软件类库,用以支持编写有多个VI独立运行且相互间可通讯的应用程序,在该类型应用程序中,每一个VI即表明操做者(Actors)执行独立的系统任务,操做者自己维持着本身的内部状态,并传递消息给其它的操做者,在LabVIEW编程环境中已经有了一些建立此类架构程序的技术存在,而操做者框架则聚焦于容易学习(相对于其它可能强大的工具而言),够下降死锁和竞争条件,并拥有最大限度代码复用的优势。架构
加载ActorFramework4.1.0,能够看到当前框架的基本结构,主要父类有Actor和Message,及Message队列类、出入队列类、优先级操做类。框架
Actor:拥有数据状态的模块。函数
Message:消息在操做者间传递用来触发状态改变。工具
在NI官方资料中,介绍操做者框架(ActorFramework)是在普遍应用的队列驱动状态机(QDSM)的基础上开发而成,但更优于DSDM的框架。学习
如今用官网的QDSM和ActorFramework的程序图作一下比较,可以很直观的看出二者的程序简洁性,以下图所示:编码
能够看到,使用操做者框架后,整个程序很是简洁,队列驱动状态机的簇和相关代码封装成类和方法,消息和条件结构封装为类和动态匹配。当接收到消息时,Actor的方法就自动运行。3d
使用ActorFramework,若是新增长相似功能,只须要继承类后,再进行类方法的修改并重载、新建类的独有方法,而不须要修改主框架,就能够完成新功能的添加。而若是使用QDSM,则须要增长单独队列才能完成。orm
5、范例一对象
下面以消费者来商店购买东西的场景,完成一个ActorFramework的基本开发过程的演示。
(1)新建一个空白项目。
(2)添加一个Actor,CustomerA
(3)添加第二个Actor,ShopAssistant
(4)新建launch.vi,做为调用主程序,添加类启动
(5)新建静态VI,保存为AskMessage,程序增长对话框,而后建立消息
(6)在主程序中添加消息响应函数
(7)运行Launch.vi,当点击按钮时,弹出的对话框。说明成功调用AskMessage.vi。
(8)CustomerA询问啤酒价格,ShopAssistant须要有对应的反馈。在ShopAssistant类里面增长函数ShopAssistant,当调用时,弹出对话框。最后,建立消息。
(9)CustomerA询问的消息须要传递给ShopAssistant,须要修改类私有数据的簇的数据引用类型,添加ShopAssistant的队列引用。
(10)添加数据成员访问函数,将ShopAssistant的消息队列加载进来
(11)修改CustomerA类的函数,增长入队队列,调用ShopAssistant消息响应函数
(12)修改Launch.vi,将ShopAssistant队列传递进去,运行后,弹出两个对话框,即完成了一个Customer与ShopAssistant的对话。
(12)若是CustomerA对ShopAssistant的回复再进行回复,咱们仅仅须要在CustomerA类里面添加方法CustomerAFeedBack,建立消息。而后,在ShopAssistant类里面添加消息响应。
(13)运行Launch.vi,首先弹出两个对话,点击确认时,弹出“很是感谢”,证实程序调用成功。
综上,是一个很是简单的基于ActorFramework编写的购买东西的场景需求。能够看到,在需求增长的过程当中,咱们对主界面程序Launch.vi不多有变更修改,大部分的需求增长,都是修改增长对应类中的函数完成,这在中、大型程序的编写中会有很高的编码生产效率。