Labview Actor Framework (二)

warning: 这篇文章距离上次修改已过794天,其中的内容可能已经有所变动。

<div>
<h2>前言</h2>
<div>在上一个文章中,我们介绍了一下LabVIEW中AF的基本概念,本讲将以上一次的例子来讲解LabVIEW中的实现</div>
<h2>正文</h2>
<h3>范例说明</h3>
<div>
<div>假定两个人,一个作为老师,一个作为学生。学生每天早上给老师发送一封邮件,而老师给其一个反馈</div>
<div></div>
<div>这里将有这样一些沟通的要点:</div>
<div>1. 学生通过邮件沟通,并且一旦发送邮件,会话即开始,无法停止</div>
<div>2. 老师收到邮件后即进行对应的动作</div>
<div>3. 老师收到邮件后必然会反馈一封邮件</div>
<div>4. 学生可以在任何时候接收返回的邮件</div>
<div>5. 学生将不再存在一直阻塞等待的问题</div>
<div></div>
<div>通过这个例子,我们理解Actor Model在解决消息发送中的流程</div>

<div></div>
</div>

<h3>LabVIEW实现-Actor建立</h3>
<div>在这个例子中,我们需要建立两个Actor,分别称之为Student与Wise Teacher</div>
<div></div>
<div>通过上一个文章的操作,我们已经建立了Student的Actor</div>
<div></div>
<div></div>
<div>为此需要再次建立Wise Teacher的Actor作为消息的接收方</div>
<div></div>
<div></div>
<div></div>
<div>完成建立后的Wise Teacher Actor如下图所示</div>

<div></div>
<div>

为Teacher建立静态的Quote Response 的方法,这里选择 VI From Static Dispatch Template,
<div></div>
</div>

</div>
<div>由于Teacher发送消息的时候需要指定接收Student的地址,所以需要提供Student的Message</div>

<div>  为这个Quote Response 创建一个消息</div>
<div>
<div></div>
<h3> LabVIEW实现-Message沟通机制</h3>
<div>由于Actor都必须要启动和停止,所以我们在LaunchVI中设计Actor的启动停止机制</div>
<div>
<div></div>
</div>
<div>这样子我们就配置好了Actor的工作环境,接下来设计交流通讯的方式</div>
<div></div>
<div>
<div> 由于Student需要给Wise Teacher发送消息,所以Student需要知道Teacher的Message地址,这里也即我们的Message的队列</div>
</div>
<div></div>
<div>

将Message的类放置于Student的私有数据
<div>

 
<div></div>
</div>
</div>
<div>当需要外部访问Student的数据时,需要设计Member Access的接口</div>
<div></div>
<div> 这里创建Teacher Message的访问,对外界提供只可以写入的方法</div>

<div> 这里创建完成后可以看到Write Teacher Message.vi,可以用来写入Message数据</div>
<div>
<div> </div>
<div>我们在启动Student的时候,将Teacher的Message写入到Student中去</div>

<div> 在执行Request Quote的时候,可以设置发送Teacher的消息</div>
<div>
<div>

 
<div> 这样,我们的Teacher即可收到Student发送来的消息,不妨将老师收到的消息设置为弹窗, 查看是否收到Message</div>
</div>
</div>
</div>
<div>


<div> 我们不妨设计 一个Send Message To Teacher的触发,当点击按钮时,发送消息,如果老师收到消息,则会提示弹窗</div>
<div></div>
</div>
<div>
<div>实际运行即弹出了窗口,证明老师成功收到了邮件</div>
<div>

 
<div></div>
<h3> LabVIEW实现-Student接收Teacher的Message</h3>
<div>为了定义Student接收到Teacher的Message行为,我们为Student设计Receive Teacher Back Message方法以及对应的Message</div>
</div>
</div>
<div></div>
<div>这里设计该VI弹窗,代表通讯结束</div>
<div>


<div></div>
</div>
<div>在Teacher接收到消息后,我们将弹窗修改为Student的Send Receive Teacher Back Message</div>

<div></div>
<div>

至此,完成了所有的通讯过程,完成了目标设计
<div>

 
<h2>结语</h2>
<div>本文通过简单的Demo,实现了下图所示的流程,容我思考一会儿.....</div>
</div>
</div>
<div></div>
</div>
<div></div>
<div></div>
<div></div>
<div></div>
<div>轉載自https://www.cnblogs.com/EltonLiang/p/6838895.html</div>

最后修改于:2020年11月24日 19:25

添加新评论