加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – Pyserial:打开之前如何知道串口是否空闲

发布时间:2020-12-20 13:43:24 所属栏目:Python 来源:网络整理
导读:我使用Pyserial的 python来使用串口,??代码如下: import serialportName = 'COM5'ser = serial.Serial(port=portName)# Use the serial port... 但是,问题是,如果端口已经打开(例如另一个应用程序),当我尝试打开它时会出现错误:“SerialException:无法打
我使用Pyserial的 python来使用串口,??代码如下:

import serial
portName = 'COM5'

ser = serial.Serial(port=portName)

# Use the serial port...

但是,问题是,如果端口已经打开(例如另一个应用程序),当我尝试打开它时会出现错误:“SerialException:无法打开端口’COM5’:WindowsError(5,’Access is否认.’)”.

我想知道我是否可以在尝试打开端口之前打开端口以避免此错误.我想使用一种条件,只有在我能够:

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

[编辑]我故意将除外作为一个全能,因为我认为实际的失败并不重要.因为无论错误如何,该端口都不可用…因为该函数正在测试端口的可用性,所以为什么你得到一个异常并不重要,只有你有异常.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读