我用labview的VISA函數和GPIB函數分別做了兩個程序,都是來讀取GPIB儀器的值的,通過相關資訊以及實驗,已經能夠讀取所要得值,但是在正確讀取值的同時,程序也報錯
,同時提示
;我用GPIB函數做的程序,運行結果為
,請問大家幫我解決下這個聞聽?謝謝!(附件為我的兩個程序,請幫我看看是程序哪裡出問題了嗎?)
注:經過諮詢,以及實驗,發現向我的GPIB儀器發送的指令為:\n
在 07-13-2011 09:37 PM
通常會發生 I/O operation aborted是因為在read或是write的時候發生timeout,但也有可能是因為在I/O存取過程中,有發出clear或是abort asynchronous I/O的command。同時如果你使用的是PCI介面的GPIB卡,也有可能是你電腦BIOS中PCI bus mastering的沒有開啟。
如果就單純的read/write timeout來說的話,最常發生的是EOS (end of string)的問題:有些儀器接收時會期望收到像"\n"這樣的linefeed,有的則不會。您可以試試看在您的write buffer後面補上"\n"。這方面建議您check一下您的儀器使用手冊,以瞭解您所連接的儀器是使用EOS(end of string)、EOI(end of identify)還是單純只使用byte count作termination character。
而就您在有收到儀器回傳的data,但仍然有這個timeout error的狀況下,我建議您可以嘗試將GPIB Read的"mode"的pin腳上,接上constant "1" 或 "2"試試看,因為也有可能是您沒有設定PC端GPIB卡讀取的EOS,進而造成timeout。
07-18-2011 07:27 AM - 已編輯 07-18-2011 07:34 AM
可以麻煩您提供一下,您所控制儀器的廠牌與型號嗎? 我試過使用Agilent 34401A 將Character to Write寫入 DISPlay? 或是 READ? Meas? 亦或是 CALC:STAT? 還是 CALC:NULL: OFFS? 都很正常的能將回傳值讀出來。 你可能要check一下您所Write給儀器的command是不是儀器所認得的,例如我打Means?這種儀器不認得的command就會造成儀器不知道要回什麼而出現timeout error: 6