Используйте метод строки encode
для создания соответствующей последовательности байтов.
В этом случае все символы в строке находятся в диапазоне ASCII, поэтому не имеет значения, какую схему кодирования вы используете , (Различия между схемами кодирования, как правило, имеют значение только тогда, когда вы имеете дело с не-ASCII-символами, значения которых ord()
больше 127.) Так что в этом случае вам даже не нужно указывать конкретную схему кодирования, вы можете просто используйте метод encode
без аргументов и позвольте Python применить кодировку платформы по умолчанию.
Для этого измените это:
serPort.write("relay read "+ relayIndex + "\n\r")
на следующее:
serPort.write(("relay read "+ relayIndex + "\n\r").encode())
Возможно, вам придется выполнить обратную операцию, чтобы получить строку из последовательности байтов, возвращенной serPort.read
. Измените это:
response = serPort.read(25)
на:
response = serPort.read(25).decode()
КСТАТИ, как правило, окончания строк в передаваемых данных представляются символом возврата каретки с последующим переводом строки или "\r\n"
, В вашем serPort.write
звонке вы используете обратную, "\n\r"
. Это необычно, но если это то, что нужно вашему устройству, пусть будет так.