последовательный порт Python - PullRequest
0 голосов
/ 09 января 2019

Вот мой код для связи через последовательный порт

import matplotlib.pyplot as plt
import matplotlib.animation as animation
from matplotlib import style


import serial
MCU = serial.Serial('COM35', 115200, timeout=.1)


import time
time.sleep(1) #give the connection a second to settle

while True:
     data = MCU.readline()
print(str(data))

но я получаю вывод как

b'\x0b\x16 )6\x06\x07\x08X\x02\x16,' (это значение Hex + Ascii)

и это мои входные данные

uint8_t myBuf[]={11,22,32,41,54,6,7,8,88,2,22,44};

Кто-нибудь знает, что я здесь не так делаю?

Ответы [ 2 ]

0 голосов
/ 09 января 2019

Когда вы писали str (data), вы просили python транслировать двоичные данные в читаемую строку (в читаемом формате).

Поскольку для большинства байтов нет читаемого представления, python просто переводит их в шестнадцатеричное представление (в виде строки).

Если вы хотите распечатать их как список, просто: list (data).

0 голосов
/ 09 января 2019

В каком формате вы хотите выводить данные? Как вы предполагаете, у вас есть правильные данные, но в байтовом формате. Например, вы можете получить его в виде списка Python Ints следующим образом (Python 3):

>>> list(data)
[11, 22, 32, 41, 54, 6, 7, 8, 88, 2, 22, 44]

Модуль struct также может быть полезен для декодирования байтовых данных.

(я не могу оставить комментарий, извините.)

...