Писериальная строка в байтовую кодировку для записи в микроконтроллер

Я пытаюсь установить связь между моим ПК и микроконтроллером (MC). Мой микроконтроллер будет читать с помощью getchar() пока 4 символа не будут прочитаны или пока не столкнутся с символами '\0', '\', или же '\r',

Связь прекрасно работает с гипертерминалом. Тем не менее, мой скрипт на Python, похоже, не отправляет '\0', '\', или же '\r' при кодировании входной строки и объединении с ней тех специальных символов.

command  = input("Enter Command: ")
port.write(bytes(command + '\n', 'UTF-8'))

Так что, если я ввел команду x это должно отправить 'x'а также'\n' и MC должен прекратить ждать больше символов для чтения из-за новой строки. Однако, если я вхожу только x, MC будет ждать еще 4 символа для чтения.
Как правильно преобразовать мою строку со специальными символами в байты? Благодарю.

Код MC:

buffer[ii] = getchar();

while(buffer[ii] != '\0' && buffer[ii] != '\n' && buffer[ii] != '\r' && ii < 4 - 1)
{
    buffer[++ii] = getchar();
}

1 ответ

Решение

Вы можете преобразовать строку в массив целых чисел 0 <= N <= 256 одним из следующих способов:

map(ord,command+'\n')или жеbytearray(command+'\n',"UTF-8")

Если вам нужно было записать каждый байт один за другим в порт:

>>> for b in bytearray("message\n","UTF-8"):
...     port.write(b)

Должен сделать свое дело.

Другие вопросы по тегам