我见过许多使用串口的代码示例,人们说他们也在使用代码。问题是,当我尝试代码时,它不起作用。
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?
答案 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上运行。