Python 打开/关闭串行端口vs拒绝权限Pyserial

Python 打开/关闭串行端口vs拒绝权限Pyserial,python,serial-port,Python,Serial Port,我希望有人能解释一下关闭/打开串行端口和获得串行端口权限之间的区别?特别是pyserial。现在,我觉得他们是同一个人 我将尝试用pyserial来说明我的问题。 假设我正在尝试使用uart与微控制器通信,并且我在windows pc上打开了一个串行端口与它通信。使用pyserial运行代码一切正常 但是,假设我使用realterm使用串行端口在线读取数据 现在,如果我再次运行python代码,我将从pyserial获得一个权限错误,表明它不可用。不是说串行端口当前处于打开状态 我之所以要区分这

我希望有人能解释一下关闭/打开串行端口和获得串行端口权限之间的区别?特别是pyserial。现在,我觉得他们是同一个人

我将尝试用pyserial来说明我的问题。 假设我正在尝试使用uart与微控制器通信,并且我在windows pc上打开了一个串行端口与它通信。使用pyserial运行代码一切正常

但是,假设我使用realterm使用串行端口在线读取数据

现在,如果我再次运行python代码,我将从pyserial获得一个权限错误,表明它不可用。不是说串行端口当前处于打开状态

我之所以要区分这两者,是因为我用pyserial编写的代码中,我在检测串口是否打开。如果串行端口打开,请使用串行端口。如果没有,请不要使用它

下面是我目前用来检查和打开串行端口(使用python/pyserial)的一些代码:

通常,这段代码工作正常,没有任何问题

但是,如果另一个程序(realterm)正在使用串行端口,或者如果我正在使用具有相同串行端口的pyserial的另一个实例,则以下是相同代码的输出:

could not open port 'COM4': PermissionError(13, 'Access is denied.', None, 5)
The port you are trying to open (COM4) is currently open. 

正如您在这里看到的,它无法使用串行端口(这是有意义的,因为我使用的是realterm) 但是我感到困惑的是,如果(self.isOpen()==False):检查串行端口是否可用

我认为打开或关闭串行端口相当于表示资源是否正在使用。如果串行端口打开,则该端口正由应用程序使用,其他应用程序不应触摸该端口

但是,原始错误表示串行端口存在权限错误。 打开和关闭端口与该端口的权限是否有区别?我以为他们本质上是一样的

如果它们不同,请解释一下它们之间的区别?另外,我如何在pyserial中确定是否可以使用串行资源


谢谢您的帮助,如果您还有任何问题,请告诉我

这篇文章是一篇重复/转载的文章
could not open port 'COM4': PermissionError(13, 'Access is denied.', None, 5)
The port you are trying to open (COM4) is currently open.