Использование 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(), хотя это сделало бы мой код не работать на других ПК.