ActorFrame系列教程的第三期來啦,如果還沒有看過前面兩期或者遺忘往期知識點,請點擊以下超鏈接查看往期教程。
本文教程:
在LabVIEW中創建Actor Framework的同步消息
一、為什么要用到同步回復消息?
從前兩期對操作者框架的了解,可以發現,消息都是單向的,沒有回復。發送方不知道這個消息發送后,實際會產生怎么樣的結果。
但是有些情況下,發送方希望消息發送后,能獲得一定的反饋。
舉個例子:
A:B,請你告訴我寄存器16的值是多少?
B:A,22。
要實現這個對話過程,使用普通的消息就必須創建兩個消息。首先A通過消息1詢問B,接著B通過消息2回答A。增加了程序的復雜度。而使用Reply Msg就可以實現帶回復的消息。 二、 如何創建Reply Msg? 首先,第一次使用Reply Msg時,繼承關系中是沒有Reply Msg的,因為默認Reply Msg不包含在Actor Framework.lvlib中的,需要手動添加。 于依賴關系的vi.lib庫中右鍵添加文件。
選擇添加ActorFramework中的Reply Msg的vi庫。 Reply Msg的vi庫的位置為:LabVIEW安裝位置>vi.lib>ActorFramework>ReplyMsg
1. 創建Actor
創建一個Actor,并創建一個靜態方法,命名為Read Register Value.vi;
添加該方法的內容為:輸出一個寄存器值Register Value。
2. 創建消息
為Read Register Value.vi創建消息。
3. 修改消息的繼承關系
修改Read Register Value.vi的消息類的繼承關系為Reply Msg.lvclass;
4. 修改發生消息
?打開Send Read Register Value.vi,修改程序框圖中Enqueuer.vi為Send Message and Wait forResponse.vi;創建輸入控件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方法。調用Read Register Value.vi并將其Register Value的輸出端連接至Reply。
6. 刪除原本消息中的Do.vi
刪除原本消息中Read Register Value Msg.lvclass的Do.vi方法。
7. 驗證同步回復消息
創建Laucher.vi,調用Send Read RegisterValue.vi消息,并將Reply連接于彈窗上。
可以看到,調用消息時彈出彈窗并顯示返回值。讀取寄存器的消息vi中Send Message And Wait For Response函數發揮了作用,將Register Value以Reply的形式返回給了調用處。
以同步回復消息的方式可以便捷地將被調用方的參數或結果值以返回值的方式發送給調用方,就不用通過兩個消息來進行一發一收啦。
以上就是如何在LabVIEW中為ActorFramework創建同步回復消息的方法,如果想要進一步了解抽象的類和對象是如何通過ActorFramework來實現的話,敬請期待接下來關于ActorFramework的一系列技術分享。 下一期我們將分享基于Actor Framework的MVC設計實現。 對Actor Framework感興趣的工程師們,歡迎持續關注、留言和點贊,也可以私信小編各位的技術困惑和技術需求,以獲取參加免費線下培訓和技術交流的機會哦。
審核編輯 :李倩
-
寄存器
+關注
關注
31文章
5336瀏覽量
120231 -
LabVIEW
+關注
關注
1970文章
3654瀏覽量
323325 -
華穗科技
+關注
關注
1文章
12瀏覽量
80
原文標題:教程 | ActorFramework的同步消息
文章出處:【微信號:華穗科技,微信公眾號:華穗科技】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論