使用pySerial和Python 3.3

时间:2013-04-15 14:05:28

标签: python 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:Port已经打开”。 是我使用python3.3的问题还是我需要安装一些额外的东西?有没有其他方法可以使用Python端口与Python3.3?

1 个答案:

答案 0 :(得分:10)

故事的寓意是......端口在初始化时打开。 ser.open()失败,因为ser = serial.Serial(.....)已经打开了串口。这是一回事。

另一个问题是ser.write(0xAA) - 我预计这意味着“发送一个字节0xAA”,它实际上做的是发送170(0xAA)零。在函数write中,我看到以下内容: data = bytes(data)其中data是您传递的参数。看起来函数bytes()不会将字符串作为参数,因此无法直接使用:serial.write()发送字符串,但ser.write(bytearray(TheString,'ascii'))可以完成工作。

虽然我正在考虑添加:

if(type(data) == type('String')):
    data = bytearray(data,'ascii')
ser.write()中的

,虽然这会使我的代码无法在其他PC上运行。