Здравствуйте, использую компонент "ComPort" для работы с СОМ портами, вроде все норм. Проблема такова: по нажатию на кнопку ищатся порты на которых чтото есть, и пишется в них АТ команда, вот сам код: PHP: procedure TFormComPort.Button6Click(Sender: TObject); const BufSize = $FFFF; var Buf_DevList: Array[0..BufSize] of Char; DevName: PChar; model, port:string; begin Win32check(QueryDosDevice(nil, Buf_DevList, BufSize) <> 0); DevName := @Buf_DevList; while DevName^ <> #00 do begin if (StrLIComp('COM', DevName, 3) = 0) then begin //ComPort.WriteString('AT+CGMM' + #13); ComPort.DeviceName:=DevName; ComPort.WriteString('AT+CGMM' + #13); model:= Memo.Text; Memo.Clear; ValueListEditor1.strings.Add(DevName+'='+model); end; DevName := StrEnd(DevName)+1; end; если не посылать АТ команды, то все, норм, но мне нужно послыть команду чтоб узнать модель и назвние модема, но проблема в том что на некоторые порты АТ команды не шлются, и выбивает ошиька, подскажите как такое реализовать, может можно както ошибку отлавить, или пропустить ее, чтоб процедура дальше работала. Зарание спасибо
Конечно можно, например ищите порты все которые есть, затем создаёте поток в котором отсылаете на все порты команду AT, если она вернула OK значит данный порт готов работать, если ERROR или пустой ответ значит нет, затем помечаете в своём интерфейсе "активные порты" каким-нибудь зелёненьким значком или словом и наглядно уже знаете с каким портом можно работать! Так же можно получить имя девайся через Реестр, каким образом подсказать точно не могу, но вы откройте реестр и поищите название своего модема - там будут каталоги в которых есть DeviceName: .....
Так проверьте его отдельно от компонента, не судьба чтоли?! Руками так сказать с помощью WinAPI например, либо допилите компонент свой - наверное еще проще будет! Можете вообще в компоненте удалить ошибку и обработать её как Вам угодно. P.S. Если конечно исходники компонента есть, иначе первый вариант!