2014-04-03 65 views
4

我有一個rs232串行設備,我試圖讀取和寫入它使用 python pyVISA。我能夠使用「寫入」將我的命令寫入它,但是如果我嘗試向我們「讀取」或「詢問」,我會遇到超時錯誤。可以寫入到rs232串行儀器,但不能從它讀取

我可以通過labview或tera術語輕鬆讀寫,但是我無法使用python讀取。

這是不正常的Python代碼:

import visa as v 
si = v.SerialInstrument("COM1", delay = 0.1) 
si.clear() 
si.timeout = 3 
si.baud_rate = 9600 
si.data_bits = 8 
si.stop_bits = 1 

command = '0' 
while command != 'end': 
    rorw = raw_input('ask, read, or write? >>') 
    command = raw_input('enter command code >>') 
    if rorw == 'write': 
     write1 = si.write(command) 
     print write1 
    elif rorw == 'read': 
     read1 = si.read() 
     print read1 
    else: 
     ask1 = si.ask(command) 
     print ask 
+0

你確定你的波特率設置是否正確?這看起來像是一個可能由錯誤的波特率引起的問題。 –

+0

根據儀器的手冊,波特率是正確的。 –

+0

另外,有沒有人知道在哪裏我可以找到深入文件專門關於用於RS232通信的pyvisa? –

回答

1

我的猜測是,你有一個termchar問題。嘗試將term_chars設置爲\ n或\ r \ n 如果這不起作用,使用pyserial進行串行通信非常容易。 您將要定義一個自定義的方法相當於pysvisa的要求使用寫入和readline和大概德爾方法來關閉端口,如果有什麼差錯 好運

相關問題