此範例展示如何在RT和Host端傳遞正弦波資料,本程式利用Queue 的架構在不同程式(Main、SubVI)間作數據的傳遞和控制(啟動、停止、修改振福和頻率)。
<題目敘述>
程式碼可在這邊下載,若下載請留言告知,謝謝
Host端:
- 開發UI介面如下圖
- 點擊“Start Acquiring”可以開始將正弦波資料從RT端讀出來並顯示在波形圖上。
- 運行時可以修改幅度和頻率,並因此修改RT段設置。
- 點擊“Stop”程式停止並且RT端也停止。
- Note: 可以考慮採用生產者消費者結構,可以額外將資料記錄到檔裡。
RT端:
- 要求有用迴圈確定性地產生正弦資料流程
- 接收來自Host端的“Start Acquiring”命令,將正弦資料流傳送至Host端
- 接收來自Host端的“amplitude”, “frequency”的數值並相應的配置RT端的波形生成
- 接收來自Host端的“STOP”的命令並停止
<程式範例講解>
程式碼可在這邊下載,若下載請留言告知,謝謝
程式架構:
資料藉由Queue由RT 傳給 Host。
細部介紹:
- 分別在Host程式和RT程式中建立四個Queue 分別為 Stop Condition, Amplitude, Frequency, Data Communication
- 由於Queue的特性,取名為同樣的Queue則會指向同樣的reference,進而可以傳遞資料
- 利用 Obtain Queue宣告資料型態
- 利用Enqueue 傳遞資料到接收端
- 利用Dequeue來接收傳遞端給的資料
- 利用Release Queue來解除Queue的註冊
- 再Host端中將 Stop狀態, Frequency, Amplitude等資料利用EnQueue傳遞RT端
- 再Host端中,若按下Start按鈕(Start變成True狀態)接受RT端傳來的數值資料並顯示到Chart中
- 利用STOP按鈕的狀態結束所有的loop(利用Local Variable傳遞不同loop)
- 再RT端中, 利用DeQueue接收stop狀態, Frequency, Amplitude等資料
- 再RT端中,利用Enqueue傳遞Sine直到Host端
- 再RT端中,利用Stop發生時,清除Queue(解註冊),產生error解除其他的loop
- 再RT端中,其他loop因為Queue被解除,產生error進而讓loop停止
- 利用模擬產生器產出sine波型,取出的資料為Array陣列,再取出最後一個值(最新一筆資料)傳出
- 程式一開始先利用property清空Chart中的所有數值
程式碼可在這邊下載,若下載請留言告知,謝謝
如果覺得文章有幫助,請不要吝嗇按下側邊的廣告唷~ 謝謝~
學習相關LabVIEW文章:
程式分享相關LabVIEW文章:
考取LabVIEW證照相關:
文章標籤
全站熱搜
留言列表