Obtenir des noms de port série erronés à partir de bluetoothdevice (c #)

Pour obtenir tous les ports série disponibles du système, utilisez la commande suivante.

SerialPort.GetPortNames 

Cela fonctionne très bien pour le port série de la carte mère, mais avec le périphérique Bluetooth, je me trompe de nom de port.

Par exemple: au lieu de COM7, je reçois parfois COM70 ou COM7ö. C’est toujours 1 lettre à beaucoup.

tout suggestens?

PS: J’utilise Visual Studio Express sous Windows 7 le plus récent. PPS: Le hack sale pour couper la dernière lettre ne fonctionnait pas car je ne sais pas lequel est le port série bluetooth (avec différents sticks ou périphériques Bluetooth le comport) et après avoir essayé divers bâtons j’ai atteint COM10, COM100 ergo ou COM10f

EDIT: le code que j’utilise en ce moment. en lisant le registre, mais toujours le même problème.

 RegistryKey myRegistry = Registry.LocalMachine.OpenSubKey("Hardware\\DeviceMap\\SerialComm"); foreach (ssortingng valuename in myRegistry.GetValueNames()) { if (myRegistry.GetValue(valuename) is Ssortingng) { if (valuename.Contains("BthModem")) { richTextBox1.AppendText(">" + myRegistry.GetValue(valuename) + "<" + Environment.NewLine); } } } 

Normalement, la deuxième ou la troisième requête fonctionne avec un résultat comme

COM11ᯋ <COM10S <COM11 <COM10 <COM11 <COM10 <

comment cela peut-il être?

Cela a été rapporté comme un bogue avec des chaînes terminées non NULL:

Pouvez-vous parcourir manuellement le registre?

 HKLM\Hardware\DeviceMap\SerialComm 

Vous pouvez utiliser WMI pour interroger le système sur les ports série, y compris ceux ajoutés par les périphériques Bluetooth et les périphériques USB vers série. Peut-être que de cette façon vous ne rencontrerez pas ce problème. Voir à CodeProject .

J’ai le même problème. SerialPort.GetPortNames utilise essentiellement le registre de toute façon – ces deux méthodes ne semblent pas fonctionner avec Bluetooth.

La solution que j’utilise actuellement consiste à parcourir en boucle les premiers ports XCom et à vérifier s’ils existent, ce qui n’est guère élégant. MS: FAIL.