Главная страница
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-1098151496
Думкин
2004-10-19 06:04
2004.11.07
С днем рождения! 19 октября


14-1098358614
Layner
2004-10-21 15:36
2004.11.07
Где можно купить Delphi 7? (лиц)


14-1098349706
Викусик
2004-10-21 13:08
2004.11.07
О выборе студентки поездку в колхоз...


6-1093497971
Sollo
2004-08-26 09:26
2004.11.07
Многопотоковая отправлялка SMS


14-1097882374
GanibalLector
2004-10-16 03:19
2004.11.07
FTP