Писериальная строка в байтовую кодировку для записи в микроконтроллер
Я пытаюсь установить связь между моим ПК и микроконтроллером (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)
Должен сделать свое дело.