Определение подлючен ли USB 3G модем
Есть 3G модем Hyawei E153 с родной прошивкой и драйверами. Windows 11. Delphi 10.3 Компонент TBComPort ver.2.20. Следующим таймером пробую определять подключен ли модем физически. При удалении его из порта СОМ6 в диспетчере устройств исчезает. Здесь же всегда выполняется Трай...
procedure TfrmMain.Timer1Timer(Sender: TObject);
begin
//вывод информация в таскбар, мемо, активация кнопок...
begin
try
frmMain.BComPort1.Port := 'COM6';//ComPortNumber;
frmMain.BComPort1.Open;
Modem_Status := 'Модем подключен';
frmMain.btnSendSMS.Enabled:=true;
frmMain.BComPort1.Close;
except
Modem_Status := 'Модем отключен';
frmMain.btnSendSMS.Enabled:=false;
end;
end;
frmMain.StatusBar1.Panels[0].Text := ComPortNumber;
frmMain.StatusBar1.Panels[1].Text := Modem_Status;
frmMain.StatusBar1.Panels[2].Text := 'Версия : ' + GetFileVersion;
end;
Ответы (1 шт):
Проверьте, срабатывает ли при вставке или удалении устройства извещение системы через обработку сообщения WM_DEVICECHANGE с параметрами
wparam = DBT_DEVICEARRIVAL
wparam = DBT_DEVICEREMOVECOMPLETE
и типом устройства
if PDevBroadcastHdr(Msg.lParam)^.dbcd_devicetype = DBT_DEVTYP_PORT then
Кроме того, раз в диспетчере устройств модема нет, то и в реестре его, скорее всего, не будет - можно выполнять поиск в реестре hardware\devicemap\serialcomm, однако, вероятно, лучше через SetupAPI проверять (первая попавшаяся страница, не тестировал).
С извещением работать, думаю, предпочтительнее.