Visa讀寫數據時會收到VI_ERROR_TMO(超時錯誤)


當執行VISA 寫入函數的時候,會依次發生下面的事情:

  1. 調用的線程會被鎖定。
  2. 和VISA寫入函數相關的數據會被從開發系統(例如LabVIEW)中傳輸到VISA驅動中去。
  3. 通過投票決定什么時候將相關的數據從VISA中傳輸到底層的硬件資源中。
  4. 傳輸到底層資源結束。
  5. VISA寫入函數結束。

伴隨着VISA寫入函數的執行,你可以選擇以同步模式運行還是異步模式運行。在同步模式下,調用的線程會在第四步結束后解鎖,這時已經完成了數據到底層硬件的寫入。在異步模式下,調用的線程會在第二步結束的時候被釋放。這個時候已經完成了數據從開發系統到VISA驅動的寫入。

由於在異步模式下,調用線程會被釋放以執行其他的程序,用於輪詢以查看程序是否執行完畢的viWaitOnEvent 函數會在結束前出現超時的錯誤。這個超時錯誤會在NI I/O Trace中出現。這個超時錯誤並不會影響您的LabVIWE程序的執行。但是這也是一個值得關注的問題。

為了避免這樣的問題,您可以按照下面的方式進行設定。右鍵點擊VI,依次選擇Synchronous I/O Mode » Synchronous 。

對於更多的信息,請參考名為《異步與同步模式下VISA讀寫函數的影響》的知識庫。

為了在NI I/O Trace中查看到這個信息,您可以依次點擊Tools -> Options,在View Slection標簽中,取消LabVIEW的復選框來禁用掉LabVIEW API。:

參考:

http://digital.ni.com/public.nsf/allkb/52495D41496A5BFA86257C6E001E8558

https://www.ni.com/zh-cn/support/documentation/supplemental/18/choosing-between-synchronous-and-asynchronous-ni-visa-functions.html?OpenDocument


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM