我使用python和Pyserial
来使用串行端口,代码如下:
import serial
portName = 'COM5'
ser = serial.Serial(port=portName)
# Use the serial port...
但是,问题是,如果端口已经打开(例如由另一个应用程序打开),那么当我试图打开它时会得到一个错误,比如:"SerialException: could not open port 'COM5': WindowsError(5, 'Access is denied.')"
。
我想知道在尝试打开端口之前是否可以打开它以避免此错误。我想用一种条件打开它,只要我能:
import serial
portName = 'COM5'
if portIsUsable(portName):
ser = serial.Serial(port=portName)
# Use the serial port...
编辑:
我找到了一个办法:
import serial
from serial import SerialException
portName = 'COM5'
try:
ser = serial.Serial(port=portName)
except SerialException:
print 'port already open'
# Use the serial port...
如评论中所提到的,在比赛开始和结束时要注意比赛情况。。。
另外,最好返回串行对象或不返回
[编辑]我故意把“例外”作为一个整体,因为我认为实际的失败并不重要。不管发生什么错误,这个端口都不可用。。。由于该函数正在测试端口的可用性,所以获得异常并不重要,而重要的是获得异常。
相关问题 更多 >
编程相关推荐