Текущий архив: 2011.01.09;
Скачать: CL | DM;
Вниз
ComPort ы Найти похожие ветки
← →
Askorbinka © (2010-10-10 22:15) [0]Здравствуйте, почтенные. Помогите начинающему решить проблему обработки ошибок в компоненте ComPort Library (CPort). Суть проблемы такова: Есть устройство, которое занимет определенные порты СОМ30 и СОМ31. При подключении этого устройства создается на некоторое время еще и СОМ29. Так-же присутствует физический СОМ1, к которому естественно ничего не подключено. Т.к. устройство ищется с помощью поочередного окрытия портов и посылки нужной команды, то во время открытия СОМ1 вылазит ошибка. Вот тут и кроется бяка. Эту ошибку надо обработать так, чтобы программа не останавливалась, а тихо мирно перешла к проверке следующих портов на предмет наличия устройства, чтобы найти его и навсегда запечатлеть в памяти программы. Ошибка - ошибка открытия COMPort"a, да и все остальные (там в хелпе есть список). Устройство - мегафон-модем. API - не предлагать. Заранее - огромное человеческое спасибо.
← →
Юрий Зотов © (2010-10-10 23:51) [1]> устройство ищется с помощью поочередного окрытия портов
Возможно, try-except?for i := ... to ... do
try
... // Попытка открытия порта
except
// on E: ... do // Ошибка открытия порта из хелпа
begin
... // Обработка ошибки
end
end;
← →
Askorbinka © (2010-10-11 21:30) [2]Неполучается так обрабатывать. :(. Данный код верен если присутствует порт, а вот если его нет, и пытаешься его открыть - вылазит ошибка.
В свете дальнейшего ковыряния компоненты была обнаружена функция EnumComPorts, которая чудным образом выдергивает список СОМ портов, задействованных в системе, ну и засовывает их в ComboBox (так в примере было), поэтому перебирать порты уже смысла не имеет. НО!!! При попытке записать чего-то в СОМ1 (который естественно первый в списке) вылазит ошибка. Которую хотелось бы обработать, чтобы оная не вылазила на экран, а тихо мирно в недрах программы похоронилась, доказав основному коду, что не имеет смысла дальше работать с этим портом...
← →
Германн © (2010-10-11 21:53) [3]
> Данный код верен если
Данный код верен всегда.
← →
Плохиш © (2010-10-11 22:09) [4]
> Askorbinka © (11.10.10 21:30) [2]
>
> Неполучается так обрабатывать. :(. Данный код верен если
> присутствует порт, а вот если его нет, и пытаешься его открыть
> - вылазит ошибка.
Запусти программу не из делфи.
← →
Askorbinka © (2010-10-13 20:18) [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
← →
Palladin © (2010-10-13 20:58) [6]
> Если пускать программу не из под делфи, то код ошибки разный.
> Если из под делфи - то wincode:2, а если просто ехешником
> - то wincode:6
и что из них что?
← →
Плохиш © (2010-10-13 23:17) [7]
> Askorbinka © (13.10.10 20:18) [5]
{$i-}
← →
Askorbinka © (2010-10-18 23:18) [8]Всем спасибо за участие. Разобрался. Работаю через реестр. Нахожу ViD&PiD устройства, а там уже порт прописан. 100% попадание. Еще раз всем спасибо.
← →
Германн © (2010-10-19 01:41) [9]
> Askorbinka © (18.10.10 23:18) [8]
>
> Всем спасибо за участие. Разобрался. Работаю через реестр.
> Нахожу ViD&PiD устройства, а там уже порт прописан. 100%
> попадание. Еще раз всем спасибо.
>
Лучше бы и не отвечал. А то совсем запутал ситуацию.
:)
Страницы: 1 вся ветка
Текущий архив: 2011.01.09;
Скачать: CL | DM;
Память: 0.49 MB
Время: 0.008 c