<form id="t7zrh"><sub id="t7zrh"></sub></form>

        <nobr id="t7zrh"><listing id="t7zrh"><menuitem id="t7zrh"></menuitem></listing></nobr>

          <span id="t7zrh"></span>

          <ruby id="t7zrh"><meter id="t7zrh"><strike id="t7zrh"></strike></meter></ruby>
          <span id="t7zrh"></span>

          技術支持

          LabVIEW面向對象的ActorFramework(3)

          作者:趙櫟安


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

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

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

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

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

          圖片.png

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

          現在用官網的QDSM和ActorFramework的程序圖做一下比較,能夠很直觀的看出兩者的程序簡潔性,如下圖所示:

          圖片.png

          圖片.png

          可以看到,使用操作者框架后,整個程序非常簡潔,隊列驅動狀態機的簇和相關代碼封裝成類和方法,消息和條件結構封裝為類和動態匹配。當接收到消息時,Actor的方法就自動運行。

          使用ActorFramework,如果新增加類似功能,只需要繼承類后,再進行類方法的修改并重載、新建類的獨有方法,而不需要修改主框架,就可以完成新功能的添加。而如果使用QDSM,則需要增加單獨隊列才能完成。

           

          五、范例一

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

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

          圖片.png

          (2)添加一個Actor,CustomerA

          圖片.png

          (3)添加第二個Actor,ShopAssistant

          圖片.png

          (4)新建launch.vi,作為調用主程序,添加類啟動

          圖片.png


          圖片.png

          (5)新建靜態VI,保存為AskMessage,程序增加對話框,然后創建消息

          圖片.png     圖片.png圖片.png

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

          圖片.png

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

          圖片.png

          (8)CustomerA詢問啤酒價格,ShopAssistant需要有對應的反饋。在ShopAssistant類里面增加函數ShopAssistant,當調用時,彈出對話框。最后,創建消息。

          圖片.png

          圖片.png

           

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

          圖片.png

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

          圖片.png

          圖片.png

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

          圖片.png

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

          圖片.png

          圖片.png


          (13)如果CustomerA對ShopAssistant的回復再進行回復,我們僅僅需要在CustomerA類里面添加方法CustomerAFeedBack,創建消息。然后,在ShopAssistant類里面添加消息響應。

          圖片.png

          圖片.png


          (14)運行Launch.vi,首先彈出兩個對話,點擊確認時,彈出“非常感謝”,證明程序調用成功。

          圖片.png

          圖片.png


          綜上,是一個非常簡單的基于ActorFramework編寫的購買東西的場景需求??梢钥吹?,在需求增加的過程中,我們對主界面程序Launch.vi很少有變動修改,大部分的需求增加,都是修改增加對應類中的函數完成,這在中、大型程序的編寫中會有很高的編碼生產效率。


          上一條:LabVIEW面向對象的ActorFramework(2) 沒有下一條

          聯系我們

          CONTACT US

          QQ:94737555

          電 話:13256768669

          傳 真:0531-85880888

          郵 箱:94737555@qq.com

          地 址:山東省濟南市槐蔭區經十路27566號財富壹號廣場2號樓

          用手機掃描二維碼關閉
          二維碼
          色人阁色五月,欧美性爱视频福利网,午夜a级片,91色在色在线播放

          <form id="t7zrh"><sub id="t7zrh"></sub></form>

                <nobr id="t7zrh"><listing id="t7zrh"><menuitem id="t7zrh"></menuitem></listing></nobr>

                  <span id="t7zrh"></span>

                  <ruby id="t7zrh"><meter id="t7zrh"><strike id="t7zrh"></strike></meter></ruby>
                  <span id="t7zrh"></span>