[LabVIEW架构]ActorFramework

前言

在上一个文章中,我们介绍了一下LabVIEW中AF的基本概念,本讲将以上一次的例子来讲解LabVIEW中的实现

正文

范例说明

假定两个人,一个作为老师,一个作为学生。学生每天早上给老师发送一封邮件,而老师给其一个反馈

这里将有这样一些沟通的要点:
1. 学生通过邮件沟通,并且一旦发送邮件,会话即开始,无法停止
2. 老师收到邮件后即进行对应的动作
3. 老师收到邮件后必然会反馈一封邮件
4. 学生可以在任何时候接收返回的邮件
5. 学生将不再存在一直阻塞等待的问题

通过这个例子,我们理解Actor Model在解决消息发送中的流程
技术分享

LabVIEW实现-Actor建立

在这个例子中,我们需要建立两个Actor,分别称之为Student与Wise Teacher

通过上一个文章的操作,我们已经建立了Student的Actor
技术分享
为此需要再次建立Wise Teacher的Actor作为消息的接收方

技术分享
完成建立后的Wise Teacher Actor如下图所示
技术分享
 
为Teacher建立静态的Quote Response 的方法,这里选择 VI From Static Dispatch Template,
 
技术分享
由于Teacher发送消息的时候需要指定接收Student的地址,所以需要提供Student的Message
技术分享
   为这个 Quote Response  创建一个消息
技术分享

 LabVIEW实现-Message沟通机制

由于Actor都必须要启动和停止,所以我们在LaunchVI中设计Actor的启动停止机制
技术分享
 
这样子我们就配置好了Actor的工作环境,接下来设计交流通讯的方式

 由于Student需要给Wise Teacher发送消息,所以Student需要知道Teacher的Message地址,这里也即我们的Message的队列
技术分享
将Message的类放置于Student的私有数据
  技术分享
 
当需要外部访问Student的数据时,需要设计Member Access的接口
技术分享
 这里创建Teacher Message的访问,对外界提供只可以写入的方法
技术分享
 这里创建完成后可以看到Write Teacher Message.vi,可以用来写入Message数据

  技术分享
我们在启动Student的时候,将Teacher的Message写入到Student中去
技术分享
 在执行Request Quote的时候,可以设置发送Teacher的消息
  技术分享
 这样,我们的Teacher即可收到Student发送来的消息,不妨将老师收到的消息设置为弹窗, 查看是否收到Message
技术分享
 我们不妨设计  一个Send Message To Teacher的触发,当点击按钮时,发送消息,如果老师收到消息,则会提示弹窗 技术分享
实际运行即弹出了窗口,证明老师成功收到了邮件
  技术分享
 

 LabVIEW实现-Student接收Teacher的Message

为了定义Student接收到Teacher的Message行为,我们为Student设计Receive Teacher Back Message方法以及对应的Message
技术分享
这里设计该VI弹窗,代表通讯结束
技术分享
 
在Teacher接收到消息后,我们将弹窗修改为Student的Send Receive Teacher Back Message
技术分享
 
至此,完成了所有的通讯过程,完成了目标设计
  技术分享

结语

本文通过简单的Demo,实现了下图所示的流程,容我思考一会儿.....
技术分享
  • 4
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值