Вот моя проблема: я должен иметь возможность отправлять и получать на устройство через последовательный порт. Это должно быть сделано многопоточным способом. Поток выглядит следующим образом:
Подождите, пока устройство отправит мне что-нибудь - или, если оно не используется, запросите статус, чтобы узнать, подключен ли он к устройству
Если устройство отправляет мне что-то, обработайте сообщение, подтвердите и сообщите устройству о необходимости выполнения других команд
Прямо сейчас у меня есть поток приема и поток передачи. Получающий поток имеет цикл while, который продолжает проверять последовательный порт через ReadFile (...) на один байт. Если у меня есть байт, я начинаю создавать свой буфер и затем анализировать данные, чтобы определить, что было отправлено мне.
Поток отправки принимает следующую команду, определенную потоком чтения, и отправляет ее через WriteFile на тот же COM-порт. Ключ в том, что между мной и устройством существуют отношения приема / отправки.
У меня вопрос, есть ли у меня здесь вложенная модель Производитель / Потребитель? Если мой принимающий поток потребляет от устройства, а отправляющий поток производит на устройство, потоки должны по своей природе общаться, чтобы они были синхронизированы, верно? Каков наилучший способ синхронизировать мои усилия для эффективного и быстрого общения с устройством? Примечание: я использую C ++ Builder 5, который имеет TThreads и может использовать критические секции и мьютексы.
Редактировать: я также использую опрос, поэтому я открыт для использования WaitCommEvent, если это будет работать лучше!