gpt4 book ai didi

python - Pyserial:如何在打开串行端口之前知道它是否空闲

转载 作者:太空宇宙 更新时间:2023-11-03 11:51:56 35 4
gpt4 key购买 nike

我用python配合Pyserial来使用串口,​​代码如下:

import serial
portName = 'COM5'

ser = serial.Serial(port=portName)

# Use the serial port...

但是,问题是,如果端口已经打开(例如由另一个应用程序打开),当我尝试打开它时会收到错误消息:"SerialException: could not open port 'COM5': WindowsError (5,“访问被拒绝。”)”

而且我想知道我是否可以在尝试打开之前打开端口以避免这个错误。我想使用一种条件并仅在可以的情况下打开它:

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...

最佳答案

def portIsUsable(portName):
try:
ser = serial.Serial(port=portName)
return True
except:
return False

如评论中所述,在您打开和关闭很多的情况下注意竞争条件......

也可能只返回串行对象或 None 会更好

def getSerialOrNone(port):
try:
return serial.Serial(port)
except:
return None

[edit] 我有意将 except 保留为包罗万象,因为我认为实际失败并不重要。因为无论错误如何,该端口都不可用...因为该函数正在测试端口的可用性,所以为什么会出现异常并不重要,重要的是出现异常。

关于python - Pyserial:如何在打开串行端口之前知道它是否空闲,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24493379/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com