Python を使用して GPS デバイスからのシリアル ポート メッセージを解釈しようとしています。私が知っていることから:1)メッセージはASCIIである2)メッセージは連続ストリーミングです
したがって、私のコードは次のとおりです。
import serial
ser = serial.Serial('COM6',9600)
while True:
ser.close()
ser.open()
line = ser.readline()
print ('original code')
print (line)
result=line.decode(encoding='ascii',errors='strict')
print ('decoded msg')
print (result)
ただし、非常に奇妙な結果が得られます。
オリジナルコード
b'\xb5b\x02\x10\xe0\x00\'\xe4B\x01\xd7\x06\t\x00\x00\x00t\x07\xc0\x1f\x1aA\x80g*F\xc2\x8csA\xa4\xc9P\xc4\x13\x04\x19\x03\x12\xea\x86\xa1\xcc\xc16\xc1z\x19x\xab\x93asA\xde7\x16E\x0b\x07"\x00\x00\x80T7\xb1\xee&\xc1\xc6M[\xb8K\xc1sA\xec\x02\x88D\x07\x04\x16\x03\x00\x00\xf9G\x9b\xc7+A\x19\xd1\x0e\xce\x92\x12tA\xdc\x97\xcc\xc4\x03\x04\x18\x03\x00\x80`\xa9\xb3\x0b/A\x0c\x1c\x19\xa0\x1b\x0euA2\xc2\xdf\xc4\x1b\x04\x16\x03\r\xd0\x9c\x81\x03\xa7@\xc1s-\xb2\xe9{\xc3tA\xd1AdE\x01\x07"\x00\x00\xc0/"&\x150A9\n'
Traceback (most recent call last):
File "C:/2_Task1/test2.py", line 11, in <module>
result=line.decode(encoding='ascii',errors='strict')
UnicodeDecodeError: 'ascii' codec can't decode byte 0xb5 in position 0: ordinal not in range(128)
私がやりたいことは:1)データを失うことなくメッセージをデコードして、すべてを読みやすい形式で保存する2)ループを実行するたびにコードの長さが異なる理由を知る