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

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

Как связать две подпрограммы (запрос-ответ) [D3, Win95/98]


Konstantin ©   (2003-01-25 18:42:00) 

Может кто посоветует алгоритм. А нужно вот что:
Есть цикл, в котором посылается запрос на внешнее устройство, подключенное по СОМ.
Естественно, на каждый запрос устройство отвечает (вызывается событие OnRxChar)
Так вот задача, как сделать, чтобы очередной запрос из цикла не посылался, пока не придет ответ?


Stager   (2003-01-25 19:11:00) [1]

А еще, если Вы заранее можете предугадать длину ответа:

repeat
ComPort1.Write(...);
ComPort1.Read(..., EstimatedLength);
Application.ProceddMessages;
untilApplication.Terminated;

C уважением, Алексей.


Stager   (2003-01-25 19:06:00) [2]

{процедура - цикл посылки}
procedureSendAndRecieve;
begin
repeat
Timer1.Enabled := True;
ComPort1.Write(...);
while(Timer1.Enabled) and( notApplication.Terminated) do
Application.ProcessMessages;
untilApplication.Terminated;
end;

{принимаем ответ и вырубаем таймер}
procedureTForm1.ComPort1RxChar(Sender: TObject; Count: Integer);
begin
try
ComPort1.Read(..., Count);
finally
Timer1.Enabled := False;
end;
end;

{отслеживаем таймаут}
procedureTForm1.Timer1Timer(Sender: TObject);
begin
Timer1.Enabled := False;
end;

С уважением, Алексей.


jack128   (2003-01-25 18:58:00) [3]

ты посылай слдующий запрос после прихода ответа
на предыдущий в этом твоём событии OnRxChar...

Кстати если оборвался провод то твоё событие не наступит...


Наверх

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