Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.02.03;
Скачать: CL | DM;

Вниз

Как связать две подпрограммы (запрос-ответ)   Найти похожие ветки 

 
Konstantin ©   (2003-01-25 18:42) [0]

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


 
jack128 ©   (2003-01-25 18:58) [1]

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

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


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

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

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

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

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


 
Stager ©   (2003-01-25 19:11) [3]

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

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

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



Страницы: 1 вся ветка

Текущий архив: 2003.02.03;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.037 c
3-4712
Шевченко Александр
2003-01-18 11:35
2003.02.03
Вопросы по работе с ADO.


3-4777
michael1
2003-01-16 16:49
2003.02.03
Как в DBGrid делать горизонтальную прокрутку?


1-4936
ZOLTIAN
2003-01-26 14:06
2003.02.03
Меню


1-5003
IgorKuz
2003-01-23 16:15
2003.02.03
Как правильно использовать Команду MOVE ?


1-4960
в режиме поиска
2003-01-23 12:19
2003.02.03
TreeNode.Data и String