Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как организовать диалог с внешним устройством [D5, WinXP]


span ©   (2004-10-23 15:51:00) 

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

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

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

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


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

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


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

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


Defunct   (2004-10-23 23:04:00) [3]

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

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


Grundic   (2004-10-23 17:48:00) [4]

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


Grundic   (2004-10-23 17:45:00) [5]

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

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


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

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


kaZaNoVa   (2004-10-23 17:17:00) [7]

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


span   (2004-10-23 17:17:00) [8]

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


Anatoly Podgoretsky   (2004-10-23 17:02:00) [9]

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


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

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


*Pavel   (2004-10-23 16:51:00) [11]

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


Наверх

Титульная страница Поиск, карта сайта Написать письмо