Асинхронное чтение принятых байтов от COM-порта
Пишу программу на Delphi 7 для управления устройством на микроконтроллере. Устройство подключается к COM-порту. Устройство работает по следующему принципу: программа посылает один или несколько байт, которые устройство расценивает как команды. В зависимости от команды оно посылает соответствующий ответ в виде одного или нескольких байт.
В программе есть два потока. Один – для чтения, второй – для записи в порт. Поток чтения постоянно запущен. Как только приходят байты, происходит их считывание в буфер, представляющий собой TList. Поток записи запускается по необходимости. Мне нужно контролировать принятые байты, чтобы знать, как устройство отреагировало на команды.
Так вот вопрос следующий: как мне заставить программу подождать, пока в списке TList появится первый элемент, т.е. придет хотя бы один байт? В микроконтроллере это реализуется просто. Запускается цикл while, в котором ожидается наступление какого-то события, например установки какого-либо флага. Если использовать такой метод в моей программе, то она будет зависать. Как организовать ожидание прихода байта (или нескольких байт), без зависания программы?
|