Laden...

[Snippet] Bessere Methode als SerialPort.GetPortNames()

Erstellt von markus111 vor 15 Jahren Letzter Beitrag vor 15 Jahren 6.697 Views
markus111 Themenstarter:in
479 Beiträge seit 2008
vor 15 Jahren
[Snippet] Bessere Methode als SerialPort.GetPortNames()

Beschreibung:

Mir ist aufgefallen, das SerialPort.GetPortNames(), bei mir zumindest, falsche Ports ausgibt.

Beispiel:


COM3
COM5c
COM6c
COM101
COM111
COM121

Richtig muss es heißen:


COM3
COM5
COM6
COM10
COM11
COM12

Deswegen dieser Snippet.
In der Registry unter dem Schlüssel

HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\SERIALCOMM

befinden sich alle verfügbaren COM-Ports.
Die Methode ToComboBox() fülltr die angegebene ComboBox, ToStringArray() gibt ein Array mit den Ports zurück.

Das Problem: Registery.GetValue() gibt auch in umfangreicheren Programmen (warum auch immer ?( ?() nicht ganz richtige Werte zurück. Da meistens hinten nur z.B. ein 'c' (ohne ') angehängt ist, lässt sich das Zeichen einfach mit einem RegEx entfernen.

Dieser Snippet sortiert die Ports nicht alphabetisch, sondern nummerisch.

Ich verwende .NET Framework 3.5 und Visual C# 2008 Express.

Noch ein kleiner, aber wichtiger Hinweis: Wenn ich den Code Debugge kommen auch (warum auch immer ?( ?() falsche COM-Ports raus.

Schlagwörter: Usb, COM, Serial, falsch, GetPortNames, IO, Problem, System, Lösung, C#, C Sharp, fehler, Ports, Port, Seriell, CS, cs

[Follow me on Twitter](http://twitter.com/blendingsky)