ActorFrame系列教程的第三期來啦,如果還沒有看過前面兩期或者遺忘往期知識(shí)點(diǎn),請(qǐng)點(diǎn)擊以下超鏈接查看往期教程。
本文教程:
在LabVIEW中創(chuàng)建Actor Framework的同步消息
一、為什么要用到同步回復(fù)消息?
從前兩期對(duì)操作者框架的了解,可以發(fā)現(xiàn),消息都是單向的,沒有回復(fù)。發(fā)送方不知道這個(gè)消息發(fā)送后,實(shí)際會(huì)產(chǎn)生怎么樣的結(jié)果。
但是有些情況下,發(fā)送方希望消息發(fā)送后,能獲得一定的反饋。
舉個(gè)例子:
A:B,請(qǐng)你告訴我寄存器16的值是多少?
B:A,22。
要實(shí)現(xiàn)這個(gè)對(duì)話過程,使用普通的消息就必須創(chuàng)建兩個(gè)消息。首先A通過消息1詢問B,接著B通過消息2回答A。增加了程序的復(fù)雜度。而使用Reply Msg就可以實(shí)現(xiàn)帶回復(fù)的消息。 二、 如何創(chuàng)建Reply Msg? 首先,第一次使用Reply Msg時(shí),繼承關(guān)系中是沒有Reply Msg的,因?yàn)槟J(rèn)Reply Msg不包含在Actor Framework.lvlib中的,需要手動(dòng)添加。 于依賴關(guān)系的vi.lib庫中右鍵添加文件。
選擇添加ActorFramework中的Reply Msg的vi庫。 Reply Msg的vi庫的位置為:LabVIEW安裝位置>vi.lib>ActorFramework>ReplyMsg
1. 創(chuàng)建Actor
創(chuàng)建一個(gè)Actor,并創(chuàng)建一個(gè)靜態(tài)方法,命名為Read Register Value.vi;
添加該方法的內(nèi)容為:輸出一個(gè)寄存器值Register Value。
2. 創(chuàng)建消息
為Read Register Value.vi創(chuàng)建消息。
3. 修改消息的繼承關(guān)系
修改Read Register Value.vi的消息類的繼承關(guān)系為Reply Msg.lvclass;
4. 修改發(fā)生消息
?打開Send Read Register Value.vi,修改程序框圖中Enqueuer.vi為Send Message and Wait forResponse.vi;創(chuàng)建輸入控件timeout in ms(-1),顯示控件Reply 和timedout?,并配置好接線板;
位置:程序框圖 → Data Communication → ActorFramework → Advanced → Send Message and Wait for Response.vi。
程序框圖如下圖所示:?
5. 重寫DOCore
重寫并修改Read Register Value Msg.lvclass的Do Core.vi方法。調(diào)用Read Register Value.vi并將其Register Value的輸出端連接至Reply。
6. 刪除原本消息中的Do.vi
刪除原本消息中Read Register Value Msg.lvclass的Do.vi方法。
7. 驗(yàn)證同步回復(fù)消息
創(chuàng)建Laucher.vi,調(diào)用Send Read RegisterValue.vi消息,并將Reply連接于彈窗上。
可以看到,調(diào)用消息時(shí)彈出彈窗并顯示返回值。讀取寄存器的消息vi中Send Message And Wait For Response函數(shù)發(fā)揮了作用,將Register Value以Reply的形式返回給了調(diào)用處。
以同步回復(fù)消息的方式可以便捷地將被調(diào)用方的參數(shù)或結(jié)果值以返回值的方式發(fā)送給調(diào)用方,就不用通過兩個(gè)消息來進(jìn)行一發(fā)一收啦。
以上就是如何在LabVIEW中為ActorFramework創(chuàng)建同步回復(fù)消息的方法,如果想要進(jìn)一步了解抽象的類和對(duì)象是如何通過ActorFramework來實(shí)現(xiàn)的話,敬請(qǐng)期待接下來關(guān)于ActorFramework的一系列技術(shù)分享。 下一期我們將分享基于Actor Framework的MVC設(shè)計(jì)實(shí)現(xiàn)。 對(duì)Actor Framework感興趣的工程師們,歡迎持續(xù)關(guān)注、留言和點(diǎn)贊,也可以私信小編各位的技術(shù)困惑和技術(shù)需求,以獲取參加免費(fèi)線下培訓(xùn)和技術(shù)交流的機(jī)會(huì)哦。
審核編輯 :李倩
-
寄存器
+關(guān)注
關(guān)注
31文章
5363瀏覽量
121193 -
LabVIEW
+關(guān)注
關(guān)注
1977文章
3657瀏覽量
325655 -
華穗科技
+關(guān)注
關(guān)注
1文章
12瀏覽量
123
原文標(biāo)題:教程 | ActorFramework的同步消息
文章出處:【微信號(hào):華穗科技,微信公眾號(hào):華穗科技】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
LabVIEW抽象消息使用教程(上)
![<b class='flag-5'>LabVIEW</b>抽象消息使用教程(上)](https://file1.elecfans.com/web3/M00/04/BC/wKgZO2d3gnaAKdbrAAA_oS5RNkQ206.png)
LMK05318在TICS Pro中怎樣設(shè)置,可以加快同步的速度,實(shí)現(xiàn)幾分鐘之內(nèi)相位同步?
YOLOv6在LabVIEW中的推理部署(含源碼)
![YOLOv6<b class='flag-5'>在</b><b class='flag-5'>LabVIEW</b><b class='flag-5'>中</b>的推理部署(含源碼)](https://file1.elecfans.com//web2/M00/8D/98/wKgZomS-F6iADBs8AADw4J6SGjY218.png)
使用同步降壓穩(wěn)壓器創(chuàng)建反相電源
![使用<b class='flag-5'>同步</b>降壓穩(wěn)壓器<b class='flag-5'>創(chuàng)建</b>反相電源](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
labview生成應(yīng)用程序怎么包括userlist
labview中如何實(shí)現(xiàn)字符串換行
labview中如何實(shí)現(xiàn)字符串選擇輸出
labview字符串的四種表示各有什么特點(diǎn)
如何在SQL中創(chuàng)建觸發(fā)器
如何在Draftsman中創(chuàng)建PCB制造圖紙
![如何在Draftsman<b class='flag-5'>中</b><b class='flag-5'>創(chuàng)建</b>PCB制造圖紙](https://file1.elecfans.com/web2/M00/FC/B5/wKgZomaVzYWASXeSAAIGDcKske8405.png)
評(píng)論