如何防止LabVIEW持續輪詢(polling)序列埠

更新 Jan 11, 2019

產品資訊

Software

  • LabVIEW Full

Driver

  • NI-VISA

問題敘述

LabVIEW會不斷輪詢(polling)直到序列埠(Serial Port)讀取到data。但這會增加我的處理器和資源使用量,並影響程式中其他迴圈(loop)的執行效率。請問我該怎麼避免?

解決方案

這樣的問題可以透過VISA events來解決。作法是在程式中使用VISA Enable Event函式,當使用VISA Enable Event函式時若序列埠(Serial Port)接收到一個serial 字元時,就會產生VISA事件 。而在while loop中,您可以在VISA Read函式之前放VISA Wait on Event函式來等待Visa Event發生。

在資料抵達序列埠(Serial Port)前,包含VISA Wait on Event的執行序(Thread)會被暫停,因此VISA Read函式只有在資料到達序列埠(Serial Port)端時才會執行。另外,將VISA read上的number of bytes設定為1,可確保只有在有資料時,序列埠(Serial Port)才會被輪詢(polling)。注意:在程式停止之前,要放VISA Disable Event函式來關閉VISA session。


這些VI可以透過Labview Block Diagram的functions palette>>Instrument I/O»VISA» Advanced»Event Handling找到。

相關資訊

有關VISA Wait on Event的更多資訊,請參閱LabVIEW Help。

本文是否有幫助?

無幫助