[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,實現了下圖所示的流程,容我思考一會兒.....
 





免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM