為什么要用JKI SMO?
1、習慣了使用JKI State Machine;
2、JKI State Machine 是單進程的,無法處理多任務並發系統;
3、對OOP知之甚少,繞過OOP設計的復雜性。
安裝工具包
Demo演示:
需求:采集電壓並顯示,超過3.5V時,報警提示。
分析:需要2個SMO,1個負責不斷采集電壓信號;1個負責顯示和報警
實現步驟:
1、新建項目,命名SMO Demo.lvproj
2、打開SMO Ediror(腳本工具,和提供開發模板,便於開發),Tools JKI state Machine Objects SMO Editor
3、創建SMO:
創建2個SMO: 電壓采集的SMO,不需要界面,創建時選擇SMO.Basic模板;顯示和報警的SMO,需要界面,選擇SMO.UI.Basic模板
4、分別給SMO創建事件
(1)Volt Acquisition SMO 創建2個事件,
發布采集的電壓值+是否警告的狀態
a. 事件1:Volt
事件2:Warning Status
b. 在核心process.vi中編寫核心程序,並進行發布。
雖然創建了2個事件,但是是一個核心
超時設成100ms,通過隨機數模擬每100ms進行一次電壓采集,並判斷是否報警,並發布電壓值和報警狀態。
(2)Signal Display SMO 創建事件
a. 顯然 Signal Display SMO 是要依賴Volt Acquisition SMO,因此,需要將后者添加到前者的私有數據控件(.ctl)中。
b. 右鍵Signal Display SMO菜單創建成員訪問器Volt Acquisition(需先建個虛擬文件夾,把成員訪問器放里面)
(Signal Display SMO是依賴Volt Acquisition.lvclass的,是要去訪問他的,因為他才提供了電壓值和判斷結果)
創建完是這樣:
c. 在核心process.vi中編寫核心程序
打開Process.vi,Events:Register分支,去注冊Volt Acquisition發布的Public Event,
(3)添加兩個事件分支User Event
以上,完成了2個SMO的程式。
在項目中新建Launcher.vi用來啟動並測試: