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?