studio - ¿Cómo puedo obtener información específica sobre el puerto serial(COM) en Windows?
serial port c# (1)
Como tengo docenas de puertos serie virtuales (COM) instalados y la mitad de ellos son dispositivos Bluetooth, me gustaría saber qué puerto pertenece a qué dispositivo y si se está conectando directamente o por Bluetooth.
Así que, en particular, no estoy interesado en la enumeración trivial de todos los puertos serie, que solo revelaría una lista de ''COM'' + el número correspondiente, pero el nombre real de ese dispositivo y, probablemente, su ID de dispositivo (donde se puede encontrar información) acerca de si esto se está conectando a través de USB o Bluetooth.
Si bien pude obtener esta información a través de WMI, hay un montón de problemas relacionados con este método. En particular, es sangrientamente lento, pero también solo enumera los dispositivos conectados (excepto los dispositivos Bluetooth, que pueden conectarse potencialmente y se muestran independientemente de una conexión real)
Preferiría una solución escrita en Delphi / Object Pascal, pero cualquier otro idioma también está bien para mí (el código de acceso WMI se copió de C #).
Si usa un lenguaje de programación / API que puede leer el registro, verifique el subárbol HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Enum
.
Esto tiene subclaves que contienen tipo de dispositivo, clase de dispositivo, ID de instancia. Cada ID de instancia tiene una subclave Device Parameters/PortName
que tiene el nombre COM.
Por ejemplo, en mi sistema
ACPI/PNP0501/1/Device Parameters/PortName = COM1
BTHENUM/{GUID}{ID}/Device Parameters/PortName = COM4
Las claves en la parte ID tienen información adicional, por ejemplo
ACPI/PNP0501/1/FriendlyName = Kommunikationsanschluss (COM1) (german windows)
ACPI/PNP0501/1/Service = Serial
BTHENUM/{GUID}{ID}/Service = BTHMODEM
Usa regedit para comprobar por ti mismo qué partes te interesan. Pero esto debería darle toda la información que necesita.