Использование pySerial с Python 3.3
Я видел много образцов кода, использующих последовательный порт, и люди говорят, что они тоже работают с кодами. Дело в том, что когда я пробую код, он не работает.
import serial
ser = serial.Serial(
port=0,
baudrate=9600
# parity=serial.PARITY_ODD,
# stopbits=serial.STOPBITS_TWO,
# bytesize=serial.SEVENBITS
)
ser.open()
ser.isOpen()
print(ser.write(0xAA))
ошибка, которую он мне дает: "SerialException: порт уже открыт". Это я использую python3.3 проблема или есть что-то дополнительное, что мне нужно установить ? Есть ли другой способ использовать COM-порты с Python3.3 ?
1 ответов
ser.open() не потому, что последовательный порт уже открыт ser = serial.Serial(.....)
. И это одно.
другая проблема там ser.write(0xAA)
- Я ожидал, что это будет означать "отправить один байт 0xAA", на самом деле он отправил 170(0xAA) нулей. В функции write
, Я видел следующее :
data = bytes(data)
где данные-это аргумент. кажется, функция bytes() не принимает строки в качестве аргументов, поэтому нельзя отправить строки непосредственно с:serial.write()
, а ser.write(bytearray(TheString,'ascii'))
делает работу.
хотя я подумываю добавить:
if(type(data) == type('String')):
data = bytearray(data,'ascii')
на ser.write()
, хотя это сделало бы мой код не работать на других ПК.