Я работаю над приложением, которое требует связи с последовательным портом. Я использую пример блокировки , предоставленный QT .
Проблема в том, что мне нужно иметь возможность закрывать и открывать порт, так как у меня есть другая программа, которая иногда требует подключения к тому же последовательному порту.
В этом примере поток всегда будет держать последовательный порт открытым. Я попытался добавить bool как переменную-член и пару открытых функций, чтобы он остановился и запустился ... но он не работает ...
Я думаю, проблема в том, что когда я вызываю публичную функцию "MasterThread" из моего потока графического интерфейса, переменная не обновляется.
Класс "MasterTrhead" имеет bool "m_quit" ... но у него нет примера, как его использовать ...
Вот изменения, которые я сделал:
Я добавил эти две функции в тело класса:
void MasterThread::stopCommunication()
{
mFreeThePort = true;
}
void MasterThread::resumeCommunication()
{
mFreeThePort = false;
}
Затем в переопределенной функции run () у меня есть:
while (!m_quit) {
if(mFreeThePort) {
serial.close();
QThread::msleep(5);
continue;
}
Итак, я только добавил, что mFreeThePort логическое значение и две функции, чтобы установить его в true или false ...
Но он никогда не закрывает последовательный порт ... Я думаю, из-за цикла while.
Вы можете найти исходный код исходного примера здесь для HEADER и здесь для BODY