Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.11.07;
Скачать: CL | DM;

Вниз

Как организовать диалог с внешним устройством   Найти похожие ветки 

 
span ©   (2004-10-23 15:51) [0]

Доброго времени суток.
Delphi мастера, будьте любезны, подскажите что делать.
Пишу программу, которая работает с внешним устройством (rs232), нужно реализовать диалог с пользователем, т.е. я вызываю опр функцию, которая шлет приглашение на устройство и жду ввода пользователем информации, далее информация обрабатывается.

Функция завершает работу либо по приходу информации, либо если в течение определённого таймаута пользователь информацию не ввел.

Собственно сам вопрос: Как мне организовать эту функцию?

Пока только одна идея: использовать в цикле sleep и проверять буффер ввода, выход либо по окончанию цикла, либо если в буффере нужная информация. Но программа должна работать в  это время, а не висеть. Раньше писал под дос, там такой подход был нормальным решением.
Буду благодарен за любую помощь.


 
*Pavel ©   (2004-10-23 16:51) [1]

а TTimer не пробовал юзать ?


 
span ©   (2004-10-23 17:01) [2]

А как мне по таймеру завершить функцию??
Или я чегото не понимаю.


 
Anatoly Podgoretsky ©   (2004-10-23 17:02) [3]

Любую фнукцию можно завершить командой Exit


 
kaZaNoVa ©   (2004-10-23 17:17) [4]

а любой процесс - halt


 
span ©   (2004-10-23 17:17) [5]

Но только из самой функции, а использование таймера предполагает её завершение. Мне необходимо дождаться ввода (или таймаута), и только потом выходить.


 
*Pavel ©   (2004-10-23 17:29) [6]

У таймера есть событие onTimer. Сопоставь этому событию выход из функции.


 
Grundic ©   (2004-10-23 17:45) [7]

Поставь цикл
while (нет информации и счетчик ещё тикает) do
begin end;
А таймером как раз накручивай в это время счетчик.

Многозадачность, блин. :))


 
Grundic ©   (2004-10-23 17:48) [8]

да, а после бегина с эндом сразу поставь EXIT; (ну и проверку, если надо - какое из событий произошло).
Тик-тик-тик-тик... А потом, совершенно внезапно, никого не предупреждая - ТАДА!!!
HAPPY
END;
(:


 
Defunct ©   (2004-10-23 23:04) [9]

> Мне необходимо дождаться ввода (или таймаута), и только потом выходить.

Ответ очевиден, использовать поток (TThread).
В OnTerminate обработать либо тайм-аут, либо введенную информацию.


 
span ©   (2004-10-24 11:13) [10]

А что запустить в потоке, цикл?


 
span ©   (2004-10-24 11:49) [11]

Сорри, глупый вопрос



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

Текущий архив: 2004.11.07;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.025 c
14-1097245476
Поручик
2004-10-08 18:24
2004.11.07
Игры ZX Spectrum


3-1097232652
SergP.
2004-10-08 14:50
2004.11.07
Строка подключения для FOX(Dbase) через Microsoft.Jet.OLEDB.4.0


1-1098563536
oleg_
2004-10-24 00:32
2004.11.07
Прозрачное окно


6-1093936994
Alexey
2004-08-31 11:23
2004.11.07
FTP


4-1096024986
MooSE
2004-09-24 15:23
2004.11.07
Как вызвать диалог завершения работы Windows?