У меня есть свой собственный небольшой каркас (serial_port
ниже) для отправки / получения сообщений через QSerialPort. Вот как я начинаю это с другой темы:
serial_port->moveToThread(connection_thread);
serial_port->serial->moveToThread(connection_thread);
serial_port->timer->moveToThread(connection_thread);
Тогда я подключаю сигналы:
connect(connection_thread, SIGNAL(started()), serial_port, SLOT(start_loop()));
connect(serial_port, SIGNAL(finished()), connection_thread, SLOT(quit()));
connect(connection_thread, SIGNAL(finished()), serial_port, SLOT(deleteLater()));
connect(serial_port, SIGNAL(finished()), connection_thread, SLOT(deleteLater()));
В serial_port
QTimer отправляет сообщение с таймаутом:
connect(timer, SIGNAL(timeout()), this, SLOT(send_message()));
Моя проблема в том, что другая программа, работающая после QTimer
, начинает работать, нарушает этот таймер. Это происходит где-то около 20% случаев. Проблема состоит в том, что сигнал timeout()
получается намного быстрее, чем предполагалось. Это происходит на платформе Windows, но для Linux все в порядке. Где я могу найти причину проблемы?