2011-12-19 17 views
6

COMが標準COMであるかどうか、またはCOMデバイス用のケーブル交換用Bluetoothアダプタとも呼ばれるSPP COMであるかどうかを判断する方法を探しています。シリアルポートが通常のCOMまたはSPPであるかどうかを確認

私はUSB(COM - > USB)とBluetoothの両方で動作するデバイスがあり、BluetoothインタフェースはSPPで動作します。

私は現在COMを取得するためにSystem.IO.Ports.SerialPort.GetPortNames()を使用しています。

BluetoothまたはUSBに接続されているかどうかを判断する方法はありますか?

SOLUTION:

System.Management.ManagementObjectSearcher Searcher = new System.Management.ManagementObjectSearcher("Select * from WIN32_SerialPort"); 
foreach (System.Management.ManagementObject Port in Searcher.Get()) 
{ 
    foreach (System.Management.PropertyData Property in Port.Properties) 
    { 
     Console.WriteLine(Property.Name + " " + (Property.Value == null ? null : Property.Value.ToString())); 
    } 
} 

と出力似たものである:

Availability 2 
Binary True 
Capabilities 
CapabilityDescriptions 
Caption Standard Serial over Bluetooth link (COM10) 
ConfigManagerErrorCode 0 
ConfigManagerUserConfig False 
CreationClassName Win32_SerialPort 
Description Standard Serial over Bluetooth link 
DeviceID COM10 
ErrorCleared 
ErrorDescription 
InstallDate 
LastErrorCode 
MaxBaudRate 9600 
MaximumInputBufferSize 0 
MaximumOutputBufferSize 0 
MaxNumberControlled 
Name Standard Serial over Bluetooth link (COM10) 
OSAutoDiscovered True 
PNPDeviceID BTHENUM\{00001101-0000-1000-8000-00805F9B34FB}_LOCALMFG&0000\8&3062A492&0&000000000000_0000001C 
PowerManagementCapabilities System.UInt16[] 
PowerManagementSupported False 
ProtocolSupported 
ProviderType RS232 Serial Port 
SettableBaudRate True 
SettableDataBits True 
SettableFlowControl True 
SettableParity True 
SettableParityCheck False 
SettableRLSD True 
SettableStopBits True 
Status OK 
StatusInfo 3 
Supports16BitMode False 
SupportsDTRDSR True 
SupportsElapsedTimeouts True 
SupportsIntTimeouts True 
SupportsParityCheck False 
SupportsRLSD True 
SupportsRTSCTS True 
SupportsSpecialCharacters False 
SupportsXOnXOff False 
SupportsXOnXOffSet False 
SystemCreationClassName Win32_ComputerSystem 
SystemName JVALDRON-PC 
TimeOfLastReset 
+0

がhttp://stackoverflow.com/questions/2085179/で私の答えを参照してください。どのようにi-find-out-a-com-port-a-bluetooth-device-in-c/2096728#2096728およびhttp://stackoverflow.com/questions/6850965/how-come- getdefaultcommconfig-doesnt-work-with-bluetooth-spp-devices/6997320#6997320 – alanjmcf

答えて

6

あなたはSERIALPORTクラスを経由して、この情報を見つけることができません。 WMIクエリを実行する必要があります。この線に沿って何かをやって

は、私は私はあなたが得ることができ、さらにどのような性質を知らないので、ロードされたこのコードを持っていないことに

ManagementObjectSearcher searcher = new ManagementObjectSearcher("Select * 
             from WIN32_SerialPort"); 

foreach(ManagementObject Port in searcher.Get()) { 

     string a = (string) Port.GetPropertyValue("Name"); 

} 

をあなたにつながる可能性があります。しかし、とにかくそれがあったなら、WMIがそれを行う方法になります。

+0

パーフェクト!他の誰かがそれを必要とするなら私が使用したコードと出力を掲示します。 – jValdron

+0

素晴らしい作品です。 –

0

私はあなたは、Bluetooth接続されたデバイスを見て参照してください。

クエリWin32_PnPSignedDriverとInfNameプロパティを見てください。値はbthspp.infにする必要があります

SPPプロトコルをサポートするすべてのベンダーのBluetoothデバイスのinfファイルは常にこの名前になりますが、これがデフォルトです。 COM & LPTポートの

クラスGUIDは、次のとおりです。{4d36e978-E325-11CE-BFC1-08002BE10318} 参考:https://msdn.microsoft.com/en-us/library/windows/hardware/ff553426

ManagementObjectSearcher Searcher = new ManagementObjectSearcher(computer + @"root\cimv2", 
       "SELECT * FROM Win32_PnPSignedDriver " 
      + "WHERE ClassGuid = '{4d36e978-e325-11ce-bfc1-08002be10318}' " 
      +  AND DeviceID LIKE 'BTHENUM%' 
      ); 
関連する問題