Я пытаюсь прочитать двоичный последовательный порт, используя Python. Каждое исходное сообщение состоит из 3 значений с плавающей запятой, всего 12 байтов. Используя код Python, показанный ниже, я ожидал получить 12-байтовое сообщение bytearray
. Тем не менее, при выполнении кода, который я обнаружил, он не всегда равен 12 байтам, а иногда это gibberi sh. Что я тут не так делаю или почему так?
Код Pyhon:
#!/usr/bin/env python
import serial
import time
serialPort = 'COM3'
serialBaud = 921600
dataNumBytes = 4
numData = 3
rawData = bytearray(numData * dataNumBytes)
# Connect to serial port
print('Trying to connect to ' + str(serialPort) +
' at ' + str(serialBaud) + ' BAUD.')
try:
s = serial.Serial(serialPort, serialBaud, timeout=4)
print('Connected!')
except:
print("Failed to connect with " + str(serialPort) +
' at ' + str(serialBaud) + ' BAUD.')
s.reset_input_buffer() # flush input buffer
while (True):
time.sleep(0.1)
s.readinto(rawData)
print(rawData)
Вывод на терминал:
bytearray(b'r u?\xb78\x0c\xbe\x1dN\x82>')
bytearray(b'@cu?\xb78\x0c\xbe0\xa7\x82>')
bytearray(b'\xca\x8fu?\x03\x9d\r\xbeno\x81>')
bytearray(b'@cu?\xb78\x0c\xbeno\x81>')
bytearray(b'\x0e\xa6u?\xb78\x0c\xbe\n\xf5\x81>')
bytearray(b'\x0e\xa6u?\xca\x91\x0c\xbe\n\xf5\x81>')
bytearray(b'\x98\xd2u?\xf0C\r\xbe\x81\xc8\x81>')
bytearray(b'\xca\x8fu?\x03\x9d\r\xbe0\xa7\x82>')
bytearray(b'\xca\x8fu?\xb78\x0c\xbe\xb9\xd3\x82>')
bytearray(b'@cu?\xb78\x0c\xbe\x1dN\x82>')
bytearray(b'@cu?\xb78\x0c\xbe\x1dN\x82>')
bytearray(b'\xfcLu?\xdd\xea\x0c\xbe\x94!\x82>')