以鍵盤控制程式執行與結束

大家好!小弟最近再碰以鍵盤去控制程式的部分

架構大部分都出來了,分別控制數位訊號擷取與類比訊號擷取,詳細內容如附件
因為類比訊號是以finite samples的模式去寫,所以時間到會自己停,
但是數位訊號是Continuous samples的模式,目前只能用STOP的按鈕去停止
因此我想請問是否有辦法去以鍵盤控制數位訊號擷取的部份讓他停止?
這部份成功的話將來打算用搖桿去控制看看
謝謝各位!
鍵盤控制擷取.vi

請參考下面的方式,修改你的Digital部分。


解說:
要離開雙層迴圈,就要先離開內層迴圈。
要離開內層迴圈,就在內層迴圈設置檢查,你要改搖桿也是在這個方向上改。
要在內層迴圈做鍵盤檢查,就要把Device ID拉進去(在內層迴圈裡面取得太佔資源)。
要比對指定的鍵盤按鍵,要先有Device ID,就可以有Key Press結果。比對Key Press結果就可以離開內層迴圈,結束Continuous Digital Input。


MingYen43011.4543055556

其他關鍵,寫英文的原因是讓你未來有關鍵字可以用:


資料擷取Over-run => 連續DI資料擷取的時候,如果內圈做了太多別的事情,都可能會導致某些資料來不及取回。
資料擷取循環Data Acquisition Cycle=Sample Count / Sampling Rate => 如果這個數值過大,例如每一秒才回傳一次Digital Input資料,那麼也只有一秒才檢測一次按鍵’E’。

未來熟悉擷取卡Polymorphic的寫法後,可以把DAQ卡片開卡設定與解除卡片的部分移到外圈外面。這就像你把取得鍵盤ID移到外面的想法一樣。
未來外層迴圈可以考慮使用狀態機State Machine。State Machine就是 架構"While Loop+Case Structure" + 資料"Enum+Shift Register",你已經很接近它了。

可以考慮用另一個迴圈偵測鍵盤按鍵,而不是在DI內層迴圈裡面,避免按鍵偵測漏失。(DI Cycle可能快可能慢,但按鍵偵測要快,異速迴圈通常可用多迴圈處理較佳)
迴圈之間傳遞可以用Local Variable。
迴圈之間傳遞也可以用較佳的Notifier。你的例子只利用按鍵讀取變數,不牽涉多迴圈一起寫入變數,因此用Notifier已經有些過頭了。

按鍵偵測建議使用多迴圈Event Structure的Key Down與Key Press,對按鍵有比較好的偵測速率,但又節省CPU效能。甚至可以做一些按鍵密技的設計。但如果你對搖桿發展有興趣,先用現在的寫法即可。

可以增加Close Input Device,養成開啟東西就關閉的習慣。

MingYen43011.4642013889

如果你要內圈結束後,即結束外圈,請參考下面的接線方法:


感謝 Ming Yen 大大的指導,內容很清楚!!