Нужна помощь....
При работе используется Async, но это не столь важно.
Необходимо 1. Грамотно выставить таймауты (разбирался, но толком не понял)
2. Соль в том, чтобы обеспечить следующий алгоритм работы:
- передаем в устройство ---->$82 (чтение регистра)
- получаем из устройства <-----($82 подтверждение)
- передаем адрес регистра 0xXX
- читаем информацию.
на шаге 2 необходимо дождаться подтверждения о приёме байта (возниконовение события RxChar), но всё хорошо если бы не маячащая перспектива работы с нитями. Как можно обойти данный косяк?
условно:
procedure Read;
var s: string;
begin
ComPort.WriteStr(Chr($82));
repeat
COmPort.Read(s);
Application.ProcessMessage;
until s[1]=Chr($82) <----работает через раз
ComPort.WriteStr(Chr($0xXX));
end;
как привязаться к событию OnRxChar?!?
или может быть проверку и ожидание этого байта можно проще сделать?!?
При работе используется Async, но это не столь важно.
Необходимо 1. Грамотно выставить таймауты (разбирался, но толком не понял)
2. Соль в том, чтобы обеспечить следующий алгоритм работы:
- передаем в устройство ---->$82 (чтение регистра)
- получаем из устройства <-----($82 подтверждение)
- передаем адрес регистра 0xXX
- читаем информацию.
на шаге 2 необходимо дождаться подтверждения о приёме байта (возниконовение события RxChar), но всё хорошо если бы не маячащая перспектива работы с нитями. Как можно обойти данный косяк?
условно:
procedure Read;
var s: string;
begin
ComPort.WriteStr(Chr($82));
repeat
COmPort.Read(s);
Application.ProcessMessage;
until s[1]=Chr($82) <----работает через раз
ComPort.WriteStr(Chr($0xXX));
end;
как привязаться к событию OnRxChar?!?
или может быть проверку и ожидание этого байта можно проще сделать?!?