Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Узнаем, какое устройство скрывается за виртуальным портом COM в Windows и отличаем подключения по USB и Bluetooth

Delphi , ОС и Железо , Windows

При работе с виртуальными портами COM в Windows, особенно если их у вас десятки, и половина из них – Bluetooth устройства, может возникнуть необходимость узнать, какое устройство соответствует каждому из портов, и подключается ли оно напрямую или через Bluetooth. В этом материале мы рассмотрим, как получить конкретную информацию о виртуальных COM-портах, используя язык Object Pascal в среде разработки Delphi.

Описание проблемы

Пользователи часто сталкиваются с необходимостью идентификации устройств, подключенных к виртуальным COM-портам. Стандартное перечисление всех пор COM показывает только список "COM" с соответствующими номерами, что не дает информации о реальном устройстве и типе подключения (USB или Bluetooth).

Решение с использованием реестра Windows

Для получения необходимой информации можно использовать реестр Windows. В частности, следует обратиться к разделу HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum, который содержит подключения устройств, их тип, класс и уникальный идентификатор.

Каждый идентификатор инстанса содержит подключение к ключу Device Parameters\PortName, который указывает имя COM-порта. Например:

  • ACPI\PNP0501\1\Device Parameters\PortName может соответствовать COM1
  • BTHENUM\{GUID}{ID}\Device Parameters\PortName может соответствовать COM4

В ключах с уникальным идентификатором можно найти дополнительные сведения, например:

  • ACPI\PNP0501\1\FriendlyName может содержать название устройства (например, "Kommunikationsanschluss (COM1)" для немецкой версии Windows)
  • ACPI\PNP0501\1\Service может указывать тип сервиса (например, "Serial")
  • BTHENUM\{GUID}{ID}\Service может указывать на Bluetooth-модем

Используя редактор реестра, можно исследовать эти ключи, чтобы выяснить, какая информация наиболее важна для вашего приложения. Реестр предоставит всю необходимую информацию для идентификации устройств и типов подключений.

Пример кода на Delphi

uses
  System.SysUtils,
  Registry;

var
  RegKey: TRegistry;
  DevicePath, PortName: string;
begin
  RegKey := TRegistry.Create(KEY_READ or KEY_WO );
  try
    RegKey.RootKey := HKEY_LOCAL_MACHINE;
    RegKey.OpenKey('SYSTEM\CurrentControlSet\Enum', False);
    for DevicePath in RegKey.GetKeyNames('*PNP*') do
    begin
      if not RegKey.KeyExists(DevicePath) then
        continue;
      RegKey.OpenKey(DevicePath, False);
      for InstanceID in RegKey.GetKeyNames('*') do
      begin
        RegKey.OpenKey(InstanceID, False);
        PortName := RegKey.ReadString('Device Parameters\PortName');
        if PortName <> '' then
          Writeln(InstanceID + ' -> ' + PortName);
        RegKey.CloseKey;
      end;
      RegKey.CloseKey;
    end;
  finally
    RegKey.Free;
  end;
end;

Этот код перебирает разделы реестра, связанные с устройствами, и выводит информацию о COM-портах, к которым они привязаны.

Заключение

Используя реестр Windows, можно получить подробную информацию о виртуальных COM-портах, включая тип устройства и метод подключения. Приведенный пример кода на Delphi поможет вам начать работу с этой информацией в ваших проектах.

Создано по материалам из источника по ссылке.

Описывается процесс идентификации устройств, подключенных к виртуальным COM-портам в Windows, с использованием реестра и предоставляется пример кода на Delphi для получения этой информации.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Windows ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-05-01 12:18:06/0.0036258697509766/0