Главная страница
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.044 c
14-1097739236
Ozone
2004-10-14 11:33
2004.11.07
Несколько вопросов


4-1096808596
Scorpion
2004-10-03 17:03
2004.11.07
Как изменить приоритет потока созданного другим процессом


3-1097054853
GlaDimoN
2004-10-06 13:27
2004.11.07
создание отчета


3-1097124299
Black
2004-10-07 08:44
2004.11.07
Как осуществить переход в БД не используя DBNavigator?


6-1093870110
DsA
2004-08-30 16:48
2004.11.07
Как в Delphi узнать скорость соединения (Dial-Up, LAN)?