我正在使用Agilent DMM進行測量。 我使用Python 2.7和PySerial模塊與它進行通信。 這個想法:使用FOR循環,我從DMM中讀取並獲取數據。 它工作正常,直到某一點,每次不同的點。DMM,Python和串行端口:在一個循環中 - 通信突然停止
例如:如果我設置循環測量20k次,它在1k次後突然停止,接下來嘗試它可能在5k次後停止.... 停止 - 意味着DMM停止發送數據並且python保持在一種等待狀態。我的腳本卡住了,我不得不終止它。沒有錯誤,我不知道爲什麼。 我曾嘗試在測量之間添加超時(睡眠),但它不能解決問題。 以下是主要的命令在我的劇本:
# configure the serial connections
ser = serial.Serial(
port='com3',
baudrate=19200,
parity=serial.PARITY_NONE,
stopbits=serial.STOPBITS_ONE,
bytesize=serial.EIGHTBITS
}
ser.write("CONF:CURRent:DC" + '\r\n')
time.sleep(1)
ser.write("SENS:CURR:DC:RANGe:UPP 0.05" + '\r\n')
time.sleep(1.5)
for m in range (0, 2000):
try:
ser.write('READ?' + '\r\n')
out += ser.read(18)
print "out = ",out
except:
print "error!"
循環運行,有時它「生存」到最後,但大多數只是停止,請諮詢時代。請注意,我從來沒有進入「除了」部分。添加「嘗試」沒有幫助...
謝謝!
〜海豚〜
考慮添加超時。當底層設備停止發送數據時,使用阻止讀取語句將掛起。 – 2012-08-06 06:36:07