Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.47 MB
Время: 0.047 c
9-1086894205
Огромное Кулясище
2004-06-10 23:03
2004.11.07
Каков OpenGL для 2D?


3-1097070108
AlexV
2004-10-06 17:41
2004.11.07
Помогите пожалуйста записать содержимое TRichEdit в поле в mdb


14-1098448210
Prohodil Mimo
2004-10-22 16:30
2004.11.07
При помощи какой переменной или функции можно узнать ...


14-1098080502
Prohodil Mimo
2004-10-18 10:21
2004.11.07
Цифровой фотоаппарат Canon Powershot A75. Что вы о нём думаете?


4-1096609847
santey
2004-10-01 09:50
2004.11.07
как в окне другой проги найти число и вставить свое





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский