2010-03-26 15 views
6

Para obtener todos los puertos de serie del sistema, utilizo el siguiente comando.Obtención de nombres de puerto serie incorrectos de bluetoothdevice (C#)

Funciona bien para el puerto serie de la placa base, pero con el dispositivo bluetooth obtengo los nombres incorrectos.

Por ejemplo: En lugar de COM7, a veces aparece COM70 o COM7ö. Siempre es 1 letra a mucho.

¿alguna sugerencia?

PD: Estoy usando el más nuevo Visual Studio Express en Windows 7 PPS: El truco sucio para cortar la última letra no funcionó porque no sé cuál es el puerto serie del bluetooth (con varios dispositivos o dispositivos bluetooth) cambia el número de los comport) y después de probar varios sticks llegué a COM10, ergo COM100 o COM10f

EDITAR: el código que estoy usando en este momento. leyendo la regestería, pero sigue siendo el mismo 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 segunda o tercera solicitud está trabajando con un resultado como

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

h ¿Cómo puede ser eso?

Respuesta

0

Puede utilizar WMI para consultar en el sistema los puertos serie, incluidos los que se agregan mediante dispositivos bluetooth y dispositivos USB-A-Serial. Tal vez de esa manera no encontrarás este problema. Consulte en CodeProject.

+0

no funcionó en mi devenvironment. System.Managment no se pudo encontrar. Tal vez no es parte de la edición express? – wurlog

2

Esto ha sido reported as a bug con cadenas terminadas no nulos:

¿Puede caminar manualmente el registro?

HKLM\Hardware\DeviceMap\SerialComm 
+0

Obtengo los valores del registro, pero incluso si solo hay un Comport conectado a través de bluetooth, el registro muestra 2 Comports. ¿Tienes alguna idea de por qué está sucediendo eso? – wurlog

+0

Todavía el mismo problema :(pero normalmente el tercer intento es el correcto. ¿Cómo podría ser esto? – wurlog

0

Tengo el mismo problema. SerialPort.GetPortNames básicamente utiliza el registro de todos modos, ambos métodos parecen no funcionar con bluetooth.

La solución que estoy usando actualmente es recorrer los primeros puertos de Xcom y ver si existen, lo cual no es muy elegante. MS: FAIL.

Cuestiones relacionadas