com0com 仮想シリアル ポートを利用する Python (2.6) アプリを作成しています。Windows Server 2008 R2 (sp1) で実行されています (Win 7 である私の開発マシンでも同じ問題が発生しています)。
com0com ポート ペアは、アプリを実行する前に作成されます。アプリは (serial.Serial オブジェクトを作成することによって) ポートを開き、それらを利用してから閉じます。
そのポートを再利用しようとするとすぐに失敗します - コンストラクターの呼び出しは問題ありません (つまり、開いている serial.Serial オブジェクトを返します) が、このオブジェクトは使用できないようです。これらのオブジェクトは別のアプリケーションによって使用されているため、アプリケーションが何かを正しく解放していない可能性があります。
com0com ポートを再利用するために待機する必要がある既知の間隔はありますか? com0com ポートが何らかの方法で間違って設定されている可能性がありますか? または、他の何か?
コードの擬似コード超高レベルの概要:
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