Как возможно реализовать? Проблема в том, что основной обмен сигналами у меня происходит как бы синхронно: компьютер отправляет сигнал, ждет ответа, обрабатывает ответ. Однако, возникла необходимость получать асинхронные сигналы (с концевиков).
Сейчас сигналы регистрируются в начале каждой итерации бесконечного цикла потока, работающего с rs232. Однако при этом тело цикла иногда выполняется достаточно долго, чтобы 1-2 сигнала с порта «потерялись». Запустить отдельный поток, только читающий данные с порта и буферизующий их (например, отправляющий в трубу), скорее всего не получится - я думаю, он будет мешать записи в порт, да и получится неразбериха с чтением ответов на каждый записанный сигнал.
Возможно ли как-то реализовать эту задачу? Или же действительно придется возиться с блокировками и отдельным потоком для чтения порта, который будет приостанавливаться каждый раз, когда происходит запись в порт и считывание ответа? В контроллере все реализуется намного проще: там есть прерывания...