Подход Шейна Веалти правильный, но я думаю, что вы действительно можете спросить себя, должны ли вы использовать темы? Даже если это сценарий «ведущий / ведомый», следует ли вам слушать поток? Когда вы слушаете порт и когда отправляете?
Самый простой подход - без ниток
Вам не нужно использовать потоки в этом сценарии из-за конфигурации master / slave, все, что у вас есть, это две функции.
SendCommand(char * bfr)
{
}
RecieveCommand(char * bfr)
{
}
SendCommand( txBfr );
RecieveData( rxBfr );
// process receive buffer, prepare new command
SendCommand( txbfr );
RecieveCommand( rxBfr );
// and so on
Подход самый простой и полностью функциональный. Тем не менее, поскольку нет потоков и говорят, что ваш RecieveData () истекает через одну секунду, ваш графический интерфейс не будет реагировать в эту секунду. Обратите внимание, что вы не слушаете порт все время, а только когда ожидаете ответа.
Я мог бы отредактировать это, чтобы добавить комплексный подход с использованием потоков позже, но сейчас у меня нет времени.