2010-03-26 12 views
6

Per ottenere tutti i serial serial disponibili dal sistema, utilizzare il seguente comando.Ottenere nomi di porta seriale errati da bluetoothdevice (C#)

SerialPort.GetPortNames 

Funziona correttamente per la porta seriale della scheda madre, ma con il dispositivo bluetooth ho i nomi di porta errati.

Ad esempio: Invece di COM7 ottengo talvolta COM70 o COM7ö. È sempre 1 lettera a molto.

eventuali suggerimenti?

PS: sto utilizzando il più recente Visual Studio Express in Windows 7 PPS: lo scribacchino per tagliare l'ultima lettera non ha funzionato perché non so quale sia la porta seriale bluetooth (con vari bluetoothstick o dispositivi cambia il numero del comportamento) e dopo aver provato vari stick ho raggiunto COM10, ergo COM100 o COM10f

EDIT: il codice che sto usando adesso. leggendo la regestry, ma ancora lo stesso problema.

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

Normalmente la seconda o terza richiesta sta lavorando con un risultato come

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

h come può essere?

risposta

0

È possibile utilizzare WMI per interrogare il sistema per le porte seriali, incluse quelle aggiunte da dispositivi bluetooth e dispositivi da USB a seriale. Forse in questo modo non incontrerai questo problema. Vedi a CodeProject.

+0

non ha funzionato nel mio ambiente. System.Managment non è stato trovato. Forse non fa parte della Express Edition ?? – wurlog

2

questo è stato reported as a bug con non nulli stringhe terminati:

Riesci a camminare manualmente il Registro di sistema?

HKLM\Hardware\DeviceMap\SerialComm 
+0

Ottengo i valori dal registro, ma anche c'è solo su Comport collegato via bluetooth il registro mostra 2 Comports. Hai idea di cosa sta succedendo? – wurlog

+0

Ancora lo stesso problema :(ma normalmente il terzo tentativo è quello giusto. Come potrebbe essere? – wurlog

0

Ho lo stesso problema. SerialPort.GetPortNames utilizza fondamentalmente il registro comunque - entrambi questi metodi non sembrano funzionare con bluetooth.

La soluzione che sto attualmente utilizzando è quella di scorrere le prime X com porte e vedere se esistono, il che non è elegante. MS: FAIL.