Форум: "Основная";
Текущий архив: 2004.11.07;
Скачать: [xml.tar.bz2];
ВнизКак организовать диалог с внешним устройством Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.034 c