Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Система";
Текущий архив: 2004.02.06;
Скачать: [xml.tar.bz2];

Вниз

Обработка шибок при работе с СОМ-портом   Найти похожие ветки 

 
Cosinus   (2003-11-18 15:34) [0]

Добрый день уважаемые мастера. Я использую компонент работы с СОМ-портом СPortLib.
В нижеприведенном коде я записываю в порт данные и ожидаю ответа, но дело в том,
что даже, если девайс не отвечает, то прога все равно вываливается на
ComDataPacket1.OnPacket, и, что естественно (для меня :), так как никаких проверок в этой
процедуре я не ставлю) вызывает ошибку Access Violation. Огромная просьба подсказать как
правильно сделать обработчик ошибок (девайс не отвечает, порт занят), а еще лучше послать
меня по адресу :), где есть подробная информация на эту тему, так как хотелось бы разобраться с этой темой досконально.

Function ReadDevice():boolean;
var
str,str1:string;
i:integer;
Events,tmp: TComEvents;
Event: TEvent;
begin
with Unlocker do
begin
//Вот здесь следует вставить некоторую строку, запрещающую открытие порта, если он занят
ComPort1.Open;
Event := TEvent.Create(nil, True, False, "");
tmp:=ComPort1.Events;
ComPort1.Events:=[];
ComPort1.DiscardNull:=False;
SetLength(str, 1);
for i:=0 to $ff do
begin
if i in AddrTab then
begin
str[1]:=chr(i);
ComPort1.Tag:=0;
WrComData(str, true);
repeat
Events := [evRxFlag];
ComPort1.WaitForEvent(Events, Event.Handle, 5000);
if (evRxFlag in Events) then break;
until (Events = []);
ComPort1.ReadStr(str1,ComPort1.InputCount);
//А здесь строку, запрещающую переход на ComDataPacket1.OnPacket
ComDataPacket1.OnPacket(ComPort1,str1)
end;
end;
ComPort1.Events:=Tmp;
ComPort1.Close;
end;
end;

Заранее благодарен,Владислав.


 
Pat   (2003-11-19 10:35) [1]

>если девайс не отвечает, то прога все равно вываливается на
ComDataPacket1.OnPacket
Я бы не стал пользоваться такими компонентами

>как правильно сделать обработчик ошибок
В принципе так:
try
<что-то делаем>
except
<Обработка исключительных ситуаций. За подробностями в хелп>
end;


 
GEN   (2003-11-19 17:04) [2]

Попробуйте_nrCommLibV6.28_(Torry.ru)_почти без недостатков



Страницы: 1 вся ветка

Форум: "Система";
Текущий архив: 2004.02.06;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.44 MB
Время: 0.027 c
1-16380
Gitr
2004-01-28 13:01
2004.02.06
Как сделать на заставке смену картинок?


3-16051
Goida
2004-01-12 17:52
2004.02.06
Ускорение запросов к БД


4-16791
Simon
2003-12-01 21:56
2004.02.06
Как рлдменить оконную ф-цию окна, зная его хэндл?


1-16233
heady
2004-01-26 19:47
2004.02.06
Работать с большими целыми числами


3-16121
RUYurik
2004-01-15 07:59
2004.02.06
Объем данных - 4,5 млн записей: не хватает вирт.памяти





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский