我用python withPyserial来使用串口,代码是这样的:
import serial
portName = 'COM5'
ser = serial.Serial(port=portName)
# Use the serial port...
Run Code Online (Sandbox Code Playgroud)
但是,问题是,如果端口已经打开(由另一个应用程序为例),我得到一个错误,当我尝试打开它,如:"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...
Run Code Online (Sandbox Code Playgroud)
编辑:
我找到了一种方法:
import serial
from serial import SerialException
portName = 'COM5'
try:
ser = serial.Serial(port=portName)
except SerialException:
print 'port already open'
# Use the serial port...
Run Code Online (Sandbox Code Playgroud)
def portIsUsable(portName):
try:
ser = serial.Serial(port=portName)
return True
except:
return False
Run Code Online (Sandbox Code Playgroud)
正如评论中提到的,在您打开和关闭很多的情况下,请注意竞争条件......
另外,最好只返回串行对象或 None
def getSerialOrNone(port):
try:
return serial.Serial(port)
except:
return None
Run Code Online (Sandbox Code Playgroud)
[编辑] 我故意将 except 作为包罗万象的东西,因为我认为实际的失败并不重要。因为无论错误如何,该端口都不可用...由于该函数正在测试端口的可用性,因此为什么会出现异常并不重要,只重要的是您会出现异常。
| 归档时间: |
|
| 查看次数: |
23309 次 |
| 最近记录: |