Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

ComPort'ы [D6, D7, XP]


Askorbinka ©   (2010-10-10 22:15:00) 

Здравствуйте, почтенные. Помогите начинающему решить проблему обработки ошибок в компоненте ComPort Library (CPort). Суть проблемы такова: Есть устройство, которое занимет определенные порты СОМ30 и СОМ31. При подключении этого устройства создается на некоторое время еще и СОМ29. Так-же присутствует физический СОМ1, к которому естественно ничего не подключено. Т.к. устройство ищется с помощью поочередного окрытия портов и посылки нужной команды, то во время открытия СОМ1 вылазит ошибка. Вот тут и кроется бяка. Эту ошибку надо обработать так, чтобы программа не останавливалась, а тихо мирно перешла к проверке следующих портов на предмет наличия устройства, чтобы найти его и навсегда запечатлеть в памяти программы. Ошибка - ошибка открытия COMPort'a, да и все остальные (там в хелпе есть список). Устройство - мегафон-модем. API - не предлагать. Заранее - огромное человеческое спасибо.


Германн   (2010-10-19 01:41:00) [1]


> Askorbinka ©   (18.10.10 23:18) [8]
>
> Всем спасибо за участие. Разобрался. Работаю через реестр.
>  Нахожу ViD&PiD устройства, а там уже порт прописан. 100%
> попадание. Еще раз всем спасибо.
>

Лучше бы и не отвечал. А то совсем запутал ситуацию.
:)


Askorbinka   (2010-10-18 23:18:00) [2]

Всем спасибо за участие. Разобрался. Работаю через реестр. Нахожу ViD&PiD устройства, а там уже порт прописан. 100% попадание. Еще раз всем спасибо.


Плохиш   (2010-10-13 23:17:00) [3]


> Askorbinka ©   (13.10.10 20:18) [5]

{$i-}


Palladin   (2010-10-13 20:58:00) [4]


> Если пускать программу не из под делфи, то код ошибки разный.
>  Если из под делфи - то wincode:2, а если просто ехешником
> - то wincode:6

и что из них что?


Askorbinka   (2010-10-13 20:18:00) [5]

2 Германн. Вот как-то так:

for i := 1 to 56 do
try
  COMPORT1.PORT:='COM'+IntToStr(i); // Попытка открытия порта
  COMPORT1.OPEN; // Тут вылазит ошибка, если COM порта физически нету.
except
  // on E: ... do // Ошибка открытия порта из хелпа
  begin
    ... // А до этого места вообще не доходит.
  end
end;

2 Плохиш. Если пускать программу не из под делфи, то код ошибки разный. Если из под делфи - то wincode:2, а если просто ехешником - то wincode:6


Плохиш   (2010-10-11 22:09:00) [6]


> Askorbinka ©   (11.10.10 21:30) [2]
>
> Неполучается так обрабатывать. :(. Данный код верен если
> присутствует порт, а вот если его нет, и пытаешься его открыть
> - вылазит ошибка.

Запусти программу не из делфи.


Германн   (2010-10-11 21:53:00) [7]


> Данный код верен если

Данный код верен всегда.


Askorbinka   (2010-10-11 21:30:00) [8]

Неполучается так обрабатывать. :(. Данный код верен если присутствует порт, а вот если его нет, и пытаешься его открыть - вылазит ошибка.

В свете дальнейшего ковыряния компоненты была обнаружена функция EnumComPorts, которая чудным образом выдергивает список СОМ портов, задействованных в системе, ну и засовывает их в ComboBox (так в примере было), поэтому перебирать порты уже смысла не имеет. НО!!! При попытке записать чего-то в СОМ1 (который естественно первый в списке) вылазит ошибка. Которую хотелось бы обработать, чтобы оная не вылазила на экран, а тихо мирно в недрах программы похоронилась, доказав основному коду, что не имеет смысла дальше работать с этим портом...


Юрий Зотов   (2010-10-10 23:51:00) [9]

> устройство ищется с помощью поочередного окрытия портов

Возможно, try-except?

for i := ... to ... do
 try
   ... // Попытка открытия порта
 except
   // on E: ... do // Ошибка открытия порта из хелпа
   begin
     ... // Обработка ошибки
   end
 end;  


Наверх

Титульная страница Поиск, карта сайта Написать письмо