2016-04-14 5 views
1

Я делаю проект arduino, который отправляет и получает строки.pyserial send unicode string как байтовый массив

Он отправляет мне строку, которая представляет собой список номеров, запятой, который я сохраняю в файл. Затем я попытаюсь прочитать файл и отправить строку обратно так же, как я ее получил.

Это нормально работает, если я делаю это через последовательный монитор arduino, но я не могу заставить pyserial отправлять/кодировать строку так же, как она была получена.

Я попытался с помощью кода, как это:

for b in bytearray("10,20","UTF-8"): 
    ser.write(str(b).encode("latin_1")) 

ser.flush() 

, но не везло при получении его послал через правильно.

+0

Это Python 2 или 3? – Paul

ответ

1

Предполагая, что вы используете Python 3, вы можете просто использовать:

ser.write("10,20".encode()) 

Для Python 2, я думаю, что строки могут быть переданы непосредственно ser.write() без кодирующих их.

1

То, что я в конечном итоге получить работу было это:

ba = bytes("10,20\n", encoding="ascii") 
ser.write(ba)