前言
在上一个文章中,我们介绍了一下LabVIEW中AF的基本概念,本讲将以上一次的例子来讲解LabVIEW中的实现
正文
范例说明
假定两个人,一个作为老师,一个作为学生。学生每天早上给老师发送一封邮件,而老师给其一个反馈
这里将有这样一些沟通的要点:
1. 学生通过邮件沟通,并且一旦发送邮件,会话即开始,无法停止
2. 老师收到邮件后即进行对应的动作
3. 老师收到邮件后必然会反馈一封邮件
4. 学生可以在任何时候接收返回的邮件
5. 学生将不再存在一直阻塞等待的问题
通过这个例子,我们理解Actor Model在解决消息发送中的流程
LabVIEW实现-Actor建立
在这个例子中,我们需要建立两个Actor,分别称之为Student与Wise Teacher
通过上一个文章的操作,我们已经建立了Student的Actor
![技术分享](https://i-blog.csdnimg.cn/blog_migrate/cef23264da05fe86c51ab4d5d7303686.png)
为此需要再次建立Wise Teacher的Actor作为消息的接收方
![技术分享](https://i-blog.csdnimg.cn/blog_migrate/9a73f661e33a03d65eced7e877551b82.png)
完成建立后的Wise Teacher Actor如下图所示
![技术分享](https://i-blog.csdnimg.cn/blog_migrate/9eb85756ffa3cd9edf5aa1370e1bcbf9.png)
为Teacher建立静态的Quote Response 的方法,这里选择 VI From Static Dispatch Template,
![技术分享](https://i-blog.csdnimg.cn/blog_migrate/6db5c1144054d3671939d4d6c0c9f10f.png)
由于Teacher发送消息的时候需要指定接收Student的地址,所以需要提供Student的Message
![技术分享](https://i-blog.csdnimg.cn/blog_migrate/8860eb9e8373ce19964a844019a796e1.png)
为这个
Quote Response
创建一个消息
LabVIEW实现-Message沟通机制
由于Actor都必须要启动和停止,所以我们在LaunchVI中设计Actor的启动停止机制
这样子我们就配置好了Actor的工作环境,接下来设计交流通讯的方式
由于Student需要给Wise Teacher发送消息,所以Student需要知道Teacher的Message地址,这里也即我们的Message的队列
![技术分享](https://i-blog.csdnimg.cn/blog_migrate/a22da93303d0f1af19f93327caa68e13.png)
当需要外部访问Student的数据时,需要设计Member Access的接口
![技术分享](https://i-blog.csdnimg.cn/blog_migrate/8b90a201a0179f9d0387ef03f42d2631.png)
这里创建Teacher Message的访问,对外界提供只可以写入的方法
![技术分享](https://i-blog.csdnimg.cn/blog_migrate/6b9ed3c13c395ce744b7f954362a9e03.png)
这里创建完成后可以看到Write Teacher Message.vi,可以用来写入Message数据
![技术分享](https://i-blog.csdnimg.cn/blog_migrate/5a76076a45f12b0ec83e08501c04920d.png)
我们在启动Student的时候,将Teacher的Message写入到Student中去
![技术分享](https://i-blog.csdnimg.cn/blog_migrate/6c10308f6c65a027ab371dccaf86b422.png)
在执行Request Quote的时候,可以设置发送Teacher的消息
实际运行即弹出了窗口,证明老师成功收到了邮件
![技术分享](https://i-blog.csdnimg.cn/blog_migrate/d297965d9f43dece5b267543b6ace226.png)
这里设计该VI弹窗,代表通讯结束
在Teacher接收到消息后,我们将弹窗修改为Student的Send Receive Teacher Back Message
![技术分享](https://i-blog.csdnimg.cn/blog_migrate/45283af8171afebff2b37a21f3542f32.png)