2016-12-09 64 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

ありがとうマイケル!私はすでに試しましたが運はありません。私はバイト単位で読み込もうとしましたが、最初のデータの後にレスポンスを落としました。無作為に...いつの間にか1、時には2,3を得ました...問題はあまりにも速いpyserialドロップアウトの応答、またはそれはエンコード部分のためです... –

関連する問題