我使用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
[编辑]我故意将除外作为一个全能,因为我认为实际的失败并不重要.因为无论错误如何,该端口都不可用…因为该函数正在测试端口的可用性,所以为什么你得到一个异常并不重要,只有你有异常.
标签:python,pyserial 来源: https://codeday.me/bug/20190708/1404435.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。