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

2024-09-30 01:28:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用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...

Tags: the端口代码importuseport错误serial
1条回答
网友
1楼 · 发布于 2024-09-30 01:28:02
def portIsUsable(portName):
    try:
       ser = serial.Serial(port=portName)
       return True
    except:
       return False

如评论中所提到的,在比赛开始和结束时要注意比赛情况。。。

另外,最好返回串行对象或不返回

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

[编辑]我故意把“例外”作为一个整体,因为我认为实际的失败并不重要。不管发生什么错误,这个端口都不可用。。。由于该函数正在测试端口的可用性,所以获得异常并不重要,而重要的是获得异常。

相关问题 更多 >

    热门问题