Python 关闭Windows(虚拟)串行端口-操作系统释放这些端口需要多长时间?
我正在编写一个Python(2.6)应用程序,它使用com0com虚拟串行端口。它在WindowsServer2008R2(sp1)上运行(我在我的开发机器Win7上也看到了同样的问题) com0com端口对是在应用程序运行之前创建的。应用程序打开端口(通过创建serial.serial对象),使用它们,然后关闭它们 尝试过早地重复使用该端口失败-调用构造函数没有问题(即,它返回一个打开的serial.serial对象),但该对象似乎不可用。由于这些对象正被另一个应用程序使用,所以应用程序可能没有正确地发布某些内容 是否存在重复使用com0com端口的已知间隔?com0com端口是否以某种方式设置错误?还是别的什么 伪代码超高级代码概述:Python 关闭Windows(虚拟)串行端口-操作系统释放这些端口需要多长时间?,python,windows,com0com,Python,Windows,Com0com,我正在编写一个Python(2.6)应用程序,它使用com0com虚拟串行端口。它在WindowsServer2008R2(sp1)上运行(我在我的开发机器Win7上也看到了同样的问题) com0com端口对是在应用程序运行之前创建的。应用程序打开端口(通过创建serial.serial对象),使用它们,然后关闭它们 尝试过早地重复使用该端口失败-调用构造函数没有问题(即,它返回一个打开的serial.serial对象),但该对象似乎不可用。由于这些对象正被另一个应用程序使用,所以应用程序可能没
loop:
serialPort = serial.Serial(port=COM90)
subprocess.check_call([blah.exe, "COM90"])
# this check_call succeeds on first iteration
# fails on second iteration, but will succeed subsequently ...
serialPort.close()
# pause before reusing COM90
看起来是1秒超时。设备的
IRP\u MJ\u CLOSE
功能是,我们可以通过FdoPortClose
,StartIrpClose
,将10**7
的相对计时器(负值)设置为10**7
,即1秒。DPC调用TimeOutClose
,调用TimeoutRoutine
,调用FdoPortIo
,用于C0C\u IO\u TYPE\u CLOSE\u COMPLETE
。这看起来是1秒超时。设备的IRP\u MJ\u CLOSE
功能是,我们可以通过FdoPortClose
,StartIrpClose
,将10**7
的相对计时器(负值)设置为10**7
,即1秒。DPC调用TimeOutClose
,它调用TimeoutRoutine
,它调用FdoPortIo
,用于C0C\u IO\u TYPE\u CLOSE\u COMPLETE
。