Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
7-71966
_FreeMan_
2003-07-10 00:35
2003.09.22
Как отключить звуковую(или сетевую) карту?


1-71675
Pavel Oliynik
2003-09-11 11:28
2003.09.22
подстановку label.caption из ресурса по название лейбела


1-71735
WeCom.WS
2003-09-09 19:40
2003.09.22
проблема с Тулбарами MS Word а в OleContainer е


1-71731
Марат
2003-09-10 14:04
2003.09.22
Календарь


6-71800
Zhker
2003-07-20 03:45
2003.09.22
Как открыть ссылку в новом окне броузера ?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский