LabVIEW面向對象的ActorFramework(3)

4、LabVIEW面向對象的編程架構:Actor Framework編程

Actor Framework是一個軟件類庫,用以支持編寫有多個VI獨立運行且相互間可通訊的應用程序,在該類型應用程序中,每一個VI即表明操做者(Actors)執行獨立的系統任務,操做者自己維持着本身的內部狀態,並傳遞消息給其它的操做者,在LabVIEW編程環境中已經有了一些建立此類架構程序的技術存在,而操做者框架則聚焦於容易學習(相對於其它可能強大的工具而言),夠下降死鎖和競爭條件,並擁有最大限度代碼複用的優勢。架構

加載ActorFramework4.1.0,能夠看到當前框架的基本結構,主要父類有Actor和Message,及Message隊列類、出入隊列類、優先級操做類。框架

Actor:擁有數據狀態的模塊。函數

Message:消息在操做者間傳遞用來觸發狀態改變。工具

在NI官方資料中,介紹操做者框架(ActorFramework)是在普遍應用的隊列驅動狀態機(QDSM)的基礎上開發而成,但更優於DSDM的框架。學習

如今用官網的QDSM和ActorFramework的程序圖作一下比較,可以很直觀的看出二者的程序簡潔性,以下圖所示:編碼

QDSM ActorFramework

能夠看到,使用操做者框架後,整個程序很是簡潔,隊列驅動狀態機的簇和相關代碼封裝成類和方法,消息和條件結構封裝爲類和動態匹配。當接收到消息時,Actor的方法就自動運行。3d

使用ActorFramework,若是新增長相似功能,只須要繼承類後,再進行類方法的修改並重載、新建類的獨有方法,而不須要修改主框架,就能夠完成新功能的添加。而若是使用QDSM,則須要增長單獨隊列才能完成。orm

5、範例一對象

下面以消費者來商店購買東西的場景,完成一個ActorFramework的基本開發過程的演示。

(1)新建一個空白項目。

(2)添加一個Actor,CustomerA

(3)添加第二個Actor,ShopAssistant

(4)新建launch.vi,做爲調用主程序,添加類啓動

(5)新建靜態VI,保存爲AskMessage,程序增長對話框,而後建立消息

(6)在主程序中添加消息響應函數

(7)運行Launch.vi,當點擊按鈕時,彈出的對話框。說明成功調用AskMessage.vi。

(8)CustomerA詢問啤酒價格,ShopAssistant須要有對應的反饋。在ShopAssistant類裏面增長函數ShopAssistant,當調用時,彈出對話框。最後,建立消息。

(9)CustomerA詢問的消息須要傳遞給ShopAssistant,須要修改類私有數據的簇的數據引用類型,添加ShopAssistant的隊列引用。

(10)添加數據成員訪問函數,將ShopAssistant的消息隊列加載進來

(11)修改CustomerA類的函數,增長入隊隊列,調用ShopAssistant消息響應函數

(12)修改Launch.vi,將ShopAssistant隊列傳遞進去,運行後,彈出兩個對話框,即完成了一個Customer與ShopAssistant的對話。

(12)若是CustomerA對ShopAssistant的回覆再進行回覆,咱們僅僅須要在CustomerA類裏面添加方法CustomerAFeedBack,建立消息。而後,在ShopAssistant類裏面添加消息響應。

(13)運行Launch.vi,首先彈出兩個對話,點擊確認時,彈出「很是感謝」,證實程序調用成功。

 

綜上,是一個很是簡單的基於ActorFramework編寫的購買東西的場景需求。能夠看到,在需求增長的過程當中,咱們對主界面程序Launch.vi不多有變更修改,大部分的需求增長,都是修改增長對應類中的函數完成,這在中、大型程序的編寫中會有很高的編碼生產效率。

相關文章
相關標籤/搜索