Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.032 c
6-1093878441
zlo_inside
2004-08-30 19:07
2004.11.07
монитор портов


1-1098343269
user 2
2004-10-21 11:21
2004.11.07
button


1-1098390694
Графтер
2004-10-22 00:31
2004.11.07
Рассчет фактариала числа


1-1098129272
Riant
2004-10-18 23:54
2004.11.07
Сохранение страниц в TWebBrowser


4-1096690969
MaxN
2004-10-02 08:22
2004.11.07
разрешение экрана




   Наверх