PySerial 的问题:必须先配置端口才能使用
Issues with PySerial: Port must be configured before it can be used
我正在编写代码(在 python 中)使用 pySerial 库在 Windows 7 上与 Arduino 进行串行通信。但是,我在正确使用端口时遇到问题。这是我的代码:
import serial
#sets the connection parameters, relook at when know more
ser = serial.Serial(
port ='COM4',
baudrate = 9600,
parity = serial.PARITY_ODD,
stopbits = serial.STOPBITS_TWO,
bytesize = serial.EIGHTBITS
)
ser = serial.Serial()
ser.open() #opens port
ser.isOpen() #returns true?
handStateList = [0]*3 #array to hold motor values in
leftMotorState = 0
rightMotorState = 0
wristBend = 0
while True:
#need to create options to send to arduino
if wristBend == 'Left':
leftMotorState = 127
rightMotorState = 0
elif wristBend == 'Right':
leftMotorState = 0
rightMotorState = 127
else:
leftMotorState = 0
rightMotorState = 0
#handStateList = ser.readline()
handStateList[0] = leftMotorState
handStateList[1] = rightMotorState
handStateList[2] = '\n'
ser.write(handStateList)
当我在代码中有 ser.open() 时,我得到回溯:
File "vibMotorTest1.py" line 16, in <module>
ser.open()
File"C:\Python34\lib\site-packages\serial\serialwin32.py", line 44 in open
raise SerialException("Port must be configured before it can be used.")
serial.serialutil.SerialEception: Port must be configured before it can be used
当我注释掉 ser.open() 时,我得到回溯:
File "vibMotorTest1.py", line 44, in <module>
ser.write(HandStateList)
File"C:\Python34\lib\site-packages\serial\serialwin32.py", line 279, in write
if not self.hComPort: raise portNotOpenError
serial.serialutil.SerialException: Attempting to use a port that is not open
我是串行连接的新手,不明白哪里出了问题。通过我在网上找到的代码示例,这段代码应该可以工作。有谁能看到我哪里出错了?我看到的很多示例都是针对 Apple 或 Linux 的,它们使用不同的 USB 命名约定,这可能是问题的一部分吗?
非常感谢您!
我猜想对于第二个 ser = serial.Serial()
,您将覆盖您在前几行中创建的串行端口对象。您正在用一个新的串行端口对象替换它,该对象是在没有给它任何参数的情况下创建的。尝试注释掉该行。
我正在编写代码(在 python 中)使用 pySerial 库在 Windows 7 上与 Arduino 进行串行通信。但是,我在正确使用端口时遇到问题。这是我的代码:
import serial
#sets the connection parameters, relook at when know more
ser = serial.Serial(
port ='COM4',
baudrate = 9600,
parity = serial.PARITY_ODD,
stopbits = serial.STOPBITS_TWO,
bytesize = serial.EIGHTBITS
)
ser = serial.Serial()
ser.open() #opens port
ser.isOpen() #returns true?
handStateList = [0]*3 #array to hold motor values in
leftMotorState = 0
rightMotorState = 0
wristBend = 0
while True:
#need to create options to send to arduino
if wristBend == 'Left':
leftMotorState = 127
rightMotorState = 0
elif wristBend == 'Right':
leftMotorState = 0
rightMotorState = 127
else:
leftMotorState = 0
rightMotorState = 0
#handStateList = ser.readline()
handStateList[0] = leftMotorState
handStateList[1] = rightMotorState
handStateList[2] = '\n'
ser.write(handStateList)
当我在代码中有 ser.open() 时,我得到回溯:
File "vibMotorTest1.py" line 16, in <module>
ser.open()
File"C:\Python34\lib\site-packages\serial\serialwin32.py", line 44 in open
raise SerialException("Port must be configured before it can be used.")
serial.serialutil.SerialEception: Port must be configured before it can be used
当我注释掉 ser.open() 时,我得到回溯:
File "vibMotorTest1.py", line 44, in <module>
ser.write(HandStateList)
File"C:\Python34\lib\site-packages\serial\serialwin32.py", line 279, in write
if not self.hComPort: raise portNotOpenError
serial.serialutil.SerialException: Attempting to use a port that is not open
我是串行连接的新手,不明白哪里出了问题。通过我在网上找到的代码示例,这段代码应该可以工作。有谁能看到我哪里出错了?我看到的很多示例都是针对 Apple 或 Linux 的,它们使用不同的 USB 命名约定,这可能是问题的一部分吗?
非常感谢您!
我猜想对于第二个 ser = serial.Serial()
,您将覆盖您在前几行中创建的串行端口对象。您正在用一个新的串行端口对象替换它,该对象是在没有给它任何参数的情况下创建的。尝试注释掉该行。