2016-12-29 10 views
2

シリアルポートに接続されているデバイスがあるかどうかを検出しようとしています。シリアルポートを開くと、物理的にポートに接続されているデバイスがなくても例外はありません。私の推測では、ポートはソフトウェアによって占有されている可能性がありますが、どのように検出できますか?シリアルポートのソフトウェア占有とハードウェア占有率の差

+0

が知られているデバイスですか?あなたは通信パラメータを知っていますか?ボー、パリティ、ストップビット? – McNets

答えて

0

実際には、シリアルポートに「フィジカルに」接続して開く必要はありません。開いた同じパラメータでデータを送信しているものを接続すると、データの受信が開始されます。

実際には、ハイパーターミナルやシリアル通信ソフトウェアを使用してこの動作をテストできます。それは同じように動作します。

経由WMI、あなたは、特定のハードウェアが接続されているかどうかを知るために照会できます。

ManagementObjectSearcher manObjSearch = new ManagementObjectSearcher("Select * from Win32_SerialPort"); 
ManagementObjectCollection manObjReturn = manObjSearch.Get(); 

foreach (ManagementObject manObj in manObjReturn) 
{ 
    Console.WriteLine(manObj["DeviceID"].ToString()); 
    Console.WriteLine(manObj["Name"].ToString()); 
    Console.WriteLine(manObj["Caption"].ToString()); 
} 
+0

私はあなたが言うことをすでに知っています。しかし、私のデバイスやソフトウェアがそのポートを占有していることを検出する必要があります –

+0

はあなたのポートの物理的または仮想的なものですか? – NicoRiff

+0

それは物理的であり、私はそれをCom1に満足させたいと思います。しかし、どちらの状況でも、開かれたポートは、例外なしで一致します。 –

関連する問題