Ermittelt die COM-Port-Nummer eines USB-Adapters

Ich versuche, ein Programm zu schreiben, das ein Arduino-Mega und einen FTDI-basierten USB-zu-RS485-Adapter verwendet.

Ich möchte das Programm benutzerfreundlich machen, daher möchte ich nicht, dass der Benutzer die COM-Port-Nummer manuell überprüft, sondern ich möchte sie automatisch erkennen. Hier ist ein Ausschnitt aus dem Code

    ManagementScope scope = new ManagementScope();
    SelectQuery query = new SelectQuery("SELECT * FROM Win32_SerialPort");
    ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope, query);

    try
    {
        foreach (ManagementObject item in searcher.Get())
        {
            String description = item["Description"].ToString();
            String deviceID = item["DeviceID"].ToString();

            Console.WriteLine("Porta " + description + " deviceID " + deviceID);

            if (description.Contains("USB Serial Port"))
                return deviceID;
        }
    }
    catch (ManagementException)
    {
    }

Der Punkt, den ich nicht verstehen kann, ist, warum ich den USB Serial Port des Arduino finden kann (passenddescription.Contains("Arduino") ) aber nicht der COM-Port des USB-RS485-Ports.

Haben Sie eine Idee, warum dies passieren könnte? ist die AbfrageSELECT * FROM Win32_SerialPort falsch?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage