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

Работа с USB-модемами в Windows: Получение списка и COM-портов через API

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

Приобретение USB-модема ZTE MF190 и его последующее использование часто требует программного взаимодействия с устройством. Разработчики, использующие язык программирования Object Pascal и среду разработки Delphi, могут столкнуться с необходимостью получения списка всех установленных модемов вместе с их серийными COM-портами. Это может быть необходимо для автоматизации процесса отправки SMS или для других задач, связанных с управлением модемами.

Использование WMI для получения списка модемов

Один из способов получения списка установленных модемов — использование WMI (Windows Management Instrumentation) и класса Win32_POTSModem. Пример кода на Object Pascal, который демонстрирует этот процесс:

{$APPTYPE CONSOLE}
uses
  SysUtils,
  ActiveX,
  ComObj,
  Variants;
const
  WbemUser            ='';
  WbemPassword        ='';
  WbemComputer        ='localhost';
  wbemFlagForwardOnly = $00000020;
var
  FSWbemLocator : OLEVariant;
  FWMIService   : OLEVariant;
  FWbemObjectSet: OLEVariant;
  FWbemObject   : OLEVariant;
  oEnum         : IEnumvariant;
  iValue        : LongWord;
begin;
  FSWbemLocator := CreateOleObject('WbemScripting.SWbemLocator');
  FWMIService   := FSWbemLocator.ConnectServer(WbemComputer, 'root\CIMV2', WbemUser, WbemPassword);
  FWbemObjectSet:= FWMIService.ExecQuery('SELECT * FROM Win32_POTSModem','WQL',wbemFlagForwardOnly);
  oEnum         := IUnknown(FWbemObjectSet._NewEnum) as IEnumVariant;
  while oEnum.Next(1, FWbemObject, iValue) = 0 do
  begin
    Writeln(Format('AttachedTo: %s', [String(FWbemObject.AttachedTo)])); // COM-порт
    Writeln(Format('DeviceID: %s', [String(FWbemObject.DeviceID)]));
    Writeln(Format('Model: %s', [String(FWbemObject.Model)]));
    Writeln(Format('Name: %s', [String(FWbemObject.Name)]));
    Writeln(Format('PortSubClass: %s', [String(FWbemObject.PortSubClass)]));
    FWbemObject:=Unassigned;
  end;
end;

Этот код инициализирует соединение с WMI-сервисом, выполняет запрос к классу Win32_POTSModem и выводит информацию о каждом установленном модеме, включая COM-порт, к которому он подключен.

Альтернативные способы

Кроме использования WMI, можно применить функцию RasEnumDevices или прочитать ключ реестра Windows HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E96D-E325-11CE-BFC1-08002BE10318}. Эти методы также позволяют получить список установленных модемов и соответствующих им COM-портов.

В заключение, разработчики, работающие с USB-модемами в среде Windows, могут использовать различные API для получения необходимой информации о модемах и их COM-портах, что открывает широкие возможности для автоматизации и интеграции с другими системами.

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

Разработчики, использующие Delphi и Object Pascal, могут использовать WMI или другие методы для получения информации о USB-модемах и их COM-портах в Windows для автоматизации задач, связанных с управлением модемами.


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

Получайте свежие новости и обновления по 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 10:54:51/0.0035040378570557/0