Форум: "Основная";
Текущий архив: 2003.09.22;
Скачать: [xml.tar.bz2];
Внизне срабатывает обработчик Найти похожие ветки
← →
Olexander (2003-09-11 11:21) [0]Привет Мастерам!
Пытаюсь включить в доп. поток Asynch Pro.
Не срабатывает триггер на прием.
В чем может быть ошибочка ?
type
TRWthread = class(TThread)
apd1 : TApdcomport;
constructor create(s : boolean);
procedure ApdComPort1TriggerAvail(CP : TObject; Count : Word);
...
end;
procedure TRWthread.ApdComPort1TriggerAvail(CP : TObject; Count : Word);
begin
showmessage("data received");
end;
constructor TRWthread.create(s : boolean);
begin
inherited create(s);
apd1 := TApdcomport.Create(nil);
apd1.ComNumber := 1;
apd1.Baud := 1200;
apd1.Parity := pNone;
apd1.StopBits := 2;
apd1.OnTriggerAvail := ApdComPort1TriggerAvail;
end;
procedure TRWthread.Execute;
begin
apd1.DTR := true;
while not terminated do
begin
apd1.RTS := true;
sendCommand(RandomCommand);
apd1.RTS := false;
sleep(400);
end;
end;
← →
Reindeer Moss Eater (2003-09-11 11:22) [1]Тебе вчера про возможные баяны с потоками и APro рассказывали довольно много слов и букв
← →
Reindeer Moss Eater (2003-09-11 11:28) [2]И где у тебя в коде создание самого триггера?
← →
Reindeer Moss Eater (2003-09-11 11:44) [3]Если попробовать разглядеть полет мысли в приведенном коде, то возникнет вопрос: а зачем вторичный поток здесь вообще нужен?
Приходящие данные обрабатываются событийно. Исходящие данные уходят периодически с постоянным интервалом.
Зачем второй поток - не могу понять.
← →
Olexander (2003-09-11 11:48) [4]Хм...
← →
Reindeer Moss Eater (2003-09-11 11:51) [5]скорее х.з.
← →
Olexander (2003-09-11 11:53) [6]В перспективе все должно быть немного сложнее.
Мысля летела так:
Послали команду - следующую не посылаем пока не дождемся ответа.
procedure TRWthread.Execute;
begin
...
sendCommand(RandomCommand);
apd1.RTS := false;
Suspend;
end;
procedure TRWthread.ApdComPort1TriggerAvail(CP : TObject; Count : Word);
begin
if ReadCommand then
Resume;
end;
До поток - для того чтобы не вешать основной, отвечать на действия пользователя.
← →
Olexander (2003-09-11 11:53) [7]В перспективе все должно быть немного сложнее.
Мысля летела так:
Послали команду - следующую не посылаем пока не дождемся ответа.
procedure TRWthread.Execute;
begin
...
sendCommand(RandomCommand);
apd1.RTS := false;
Suspend;
end;
procedure TRWthread.ApdComPort1TriggerAvail(CP : TObject; Count : Word);
begin
if ReadCommand then
Resume;
end;
До поток - для того чтобы не вешать основной, отвечать на действия пользователя.
← →
Reindeer Moss Eater (2003-09-11 11:56) [8]Мысля летела так:
Послали команду - следующую не посылаем пока не дождемся ответа.
Ну и наздоровье. Есть события OnTrigger...
Лови ответ в обработчике, после чего шли снова.
До поток - для того чтобы не вешать основной, отвечать на действия пользователя.
А как ApdComPort может вешать основной поток? Ну сильнее чем скажем TButton?
← →
Olexander (2003-09-11 12:01) [9]надо подумать...
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.09.22;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.011 c