6 Stimmen

Falsche Namen der seriellen Schnittstelle vom Bluetooth-Gerät erhalten (c#)

Um alle verfügbaren Serialports aus dem System zu erhalten, verwende ich den folgenden Befehl.

SerialPort.GetPortNames

Für die serielle Schnittstelle des Mainboards funktioniert es gut, aber mit dem Bluetooth-Gerät erhalte ich die falschen Portnamen.

Zum Beispiel: Anstelle von COM7 erhalte ich manchmal COM70 oder COM7ö. Es ist immer 1 Buchstabe zu viel.

irgendwelche Vorschläge?

PS: Ich verwende das neueste Visual Studio Express unter Windows 7 PPS: Der schmutzige Hack, um den letzten Buchstaben abzuschneiden, hat nicht funktioniert, weil ich nicht weiß, welches der serielle Bluetooth-Anschluss ist (mit verschiedenen Bluetooth-Sticks oder -Geräten ändert sich die Nummer des Anschlusses) und nachdem ich verschiedene Sticks ausprobiert habe, bin ich zu COM10, ergo COM100 oder COM10f gekommen

EDIT: der Code, den ich gerade verwende. Ich lese die Regestry, aber immer noch das gleiche Problem.

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);
        }
    }
} 

Normalerweise arbeitet die zweite oder dritte Anfrage mit einem Ergebnis wie

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

Wie kann das sein?

2voto

Chris Haas Punkte 50077

Dies war als Fehler gemeldet mit nicht-null-terminierten Zeichenfolgen:

Können Sie die Registrierung manuell überprüfen?

HKLM\Hardware\DeviceMap\SerialComm

0voto

M.A. Hanin Punkte 7876

Sie können WMI verwenden, um das System nach seriellen Schnittstellen abzufragen, einschließlich derjenigen, die von Bluetooth-Geräten und USB-To-Serial-Geräten hinzugefügt werden. Auf diese Weise wird dieses Problem vielleicht nicht auftreten. Siehe unter CodeProjekt .

0voto

SteveCav Punkte 6441

Ich habe das gleiche Problem. SerialPort.GetPortNames verwendet grundsätzlich die Registrierung sowieso - beide Methoden scheinen nicht mit Bluetooth zu funktionieren.

Die Abhilfe, die ich derzeit verwende, besteht darin, eine Schleife durch die ersten X Com-Ports zu ziehen und zu sehen, ob sie existieren, was nicht gerade elegant ist. MS: FAIL.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X