If you prefer not to manage threads directly, you can use a QTimer to check for data at regular intervals. This approach runs in the event loop and is simpler to implement.
#include <QTimer>
#include <QSerialPort>
class YourMainClass
: public QObject { Q_OBJECT
public:
YourMainClass(QSerialPort* serialPort) : m_serialPort(serialPort) {
connect(timer, &QTimer::timeout, this, &YourMainClass::checkForData);
timer->start(100); // Check every 100 milliseconds
}
private slots:
void checkForData() {
if (m_serialPort->bytesAvailable() > 0) {
emit dataAvailable();
}
}
signals:
void dataAvailable();
private:
QSerialPort* m_serialPort;
};
#include <QTimer>
#include <QSerialPort>
class YourMainClass : public QObject {
Q_OBJECT
public:
YourMainClass(QSerialPort* serialPort) : m_serialPort(serialPort) {
QTimer* timer = new QTimer(this);
connect(timer, &QTimer::timeout, this, &YourMainClass::checkForData);
timer->start(100); // Check every 100 milliseconds
}
private slots:
void checkForData() {
if (m_serialPort->bytesAvailable() > 0) {
emit dataAvailable();
}
}
signals:
void dataAvailable();
private:
QSerialPort* m_serialPort;
};
To copy to clipboard, switch view to plain text mode
In this case, you can connect the dataAvailable signal to any slot in your main application where you handle the incoming data.
Bookmarks