2016-12-09 309 views
0

我正在使用python和pyserial嘗試發送命令並獲取響應。這裏是我的示例代碼:使用Python/Pyserial與RS232通信時丟失數據響應串行端口

import serial   
ComPort = serial.Serial('COM4') # open COM4 
ComPort.baudrate = 115200 
ComPort.bytesize = 8 
ComPort.parity = 'N' 
ComPort.stopbits = 1 
ComPort.timeout = 1 
a= "FE0652" 
data = a.decode('hex') 
No = ComPort.write(serial.to_bytes(data)) 
msg = ComPort.read(1024) 
print (msg.encode('hex')) 

我用另一個C寫的工具,它顯示正確和完整的輸出。但是對於Python,它幾乎失去了一半的響應。例如:

預計:

ff5206 
ff0023 
ff0002 
ff8080 
ff8080 
ff8080 
ff8080 
ff8003 
...... 

觀察:

ff5206 
ff0023 
ff8080 
ff8080 
ff8003 
...... 

回答

0

添加一些延遲寫之間,念道:

time.sleep(0.01) 

另外,儘量讀逐字節:

s='' 
while ComPort.inWaiting() > 0: 
    s += ComPort.read(1) 
+0

謝謝Michael!我已經嘗試過,但沒有運氣。當我試圖讀取字節方式時,它在第一個數據之後丟棄響應,並且隨機...有時只有1,有時是2,3 ...我不確定問題是否是因爲響應太快所以pyserial dropouts響應,或者是因爲編碼部分... –

相關問題