Вниз
Скачать: 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.021 c
9-1089550125
ПсихЪ_копия
2004-07-11 16:48
2004.11.07
Геометрия на плоскости


1-1098184658
Mishenka
2004-10-19 15:17
2004.11.07
Компонент как в Outlook Express?


14-1098380673
Maverick
2004-10-21 21:44
2004.11.07
Всем доброго вечера! меня вот интересет один вопрос...


6-1094019695
Дмитрий Ботвин
2004-09-01 10:21
2004.11.07
Загрузка файла с FTP


8-1091708249
Dima_Delphi
2004-08-05 16:17
2004.11.07
Как изменять масштаб текста???




   Наверх