8

我见过许多使用串行端口的代码示例,人们说他们也是工作代码。问题是,当我尝试代码时它不起作用。

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 一起使用?

4

1 回答 1

10

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

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

虽然我正在考虑添加:

if(type(data) == type('String')):
    data = bytearray(data,'ascii')

ser.write(),尽管这会使我的代码无法在其他 PC 上运行。

于 2013-04-17T07:59:51.703 回答