Я читаю последовательные данные, используя pyserial в Python 2.7. Данные выглядят следующим образом:
static uint8_t dataArray[] =
{
0x01, 0x31, 0x31, 0x31, 0xf1, 0xa9, 0xc3, 0x03,
0x1c, 0x02, 0xe1, 0xb2, 0x3f, 0x50, 0x7d, 0xfe,
0x7e, 0x3e, 0x8e, 0x1f, 0x91, 0x1d, 0x80, 0xd1,
0x67, 0x5b, 0x8f, 0x5f, 0x50, 0x53, 0xcd, 0xf1,
0x7b, 0xa8, 0x46, 0x73, 0x9e, 0x31, 0xf1, 0x93,
0x65, 0xee, 0xb8, 0x27, 0xc3, 0xec, 0x6d, 0x81,
0x2e, 0xa7, 0x8b, 0x15, 0x51, 0x61, 0xdc, 0x5f,
0xa1, 0x1a, 0xd9, 0xf6, 0x50, 0xac, 0x2b, 0x33,
0x3c,0x23
};
Теперь, когда я пытаюсь прочитать их в Python.он получен там как ascii преобразование каждого байта.Код Python выглядит следующим образом:
uart= serial.Serial()
uart.baudrate= 19200
uart.port = 'COM8'
uart.parity= serial.PARITY_NONE
uart.bytesize= serial.EIGHTBITS
uart.stopbits= serial.STOPBITS_ONE
uart.timeout = 40
if(uart.is_open!=1):
uart.open()
while uart.is_open:
byte = uart.read(1) #Read one byte in each iteration
if(byte):
#dencoded_byte = byte.decode('Ascii')
dencoded_byte = byte.decode('utf-8')
print dencoded_byte
Вывод, который я получаю до получения исключения
UnicodeDecodeError: 'utf8' codec can't decode byte 0xf1 in position 0: unexpected end of data
, выглядит следующим образом:
utf-8
1
1
1
Я пытался использовать byte.decode('Ascii')
он также получает исключение, когда входящие данные больше 128 (он также не переводит эти данные, как они были отправлены, только дает снова ascii), также пытался конвертировать в int и т. д., но безуспешно.
Может кто-нибудьпредложить какое-то простое решение, которое может позволить мне прочитать любой байт, идущий от uart, до его максимума, который равен 256 = 2 ^ 8, а также я должен быть в состоянии записать его в виде чисел или по мере его отправки из последовательного порта?Например, первое шестнадцатеричное число, отправленное из серийного номера, 0x01 в массиве - я хочу напечатать то же самое в программе Python.