Как использовать qserialport в мульти виджетном приложении
Всем привет,
Я разрабатываю настольное приложение Qt с несколькими виджетами, которое последовательно взаимодействует со встроенным устройством. Я новичок в разработке приложений Qt и последовательных портов.
Мне нужно повторно использовать открытый экземпляр последовательного порта и в других формах для чтения или записи.
Где и как я могу настроить последовательный порт, чтобы получить к нему доступ в нескольких формах без повторения конфигурации?
например, если у меня есть подключение во втором виджете, как я могу получить доступ к последовательному объекту??
Любая помощь будет только приветствоваться.
Что я уже пробовал:
Я создал экземпляр в одном модуле (файл.cpp), а затем экспортировал объявление через файл .h, который другие модули, которым нужен доступ к нему.
Вот .ч последовательного осуществления
#ifndef TETRASERIAL_H #define TETRASERIAL_H #include <QObject> #include <QtSerialPort/QSerialPort> #include <QtSerialPort/QSerialPortInfo> #include <QDebug> class tetraSerial : public QObject { Q_OBJECT public: explicit tetraSerial(QObject *parent = nullptr); static QSerialPort *serialObject; signals: public slots: }; #endif // TETRASERIAL_H
Соответствие .СРР файл выглядит следующим образом.
Я настроил последовательный порт в этом файле класса. Я хочу вызвать этот экземпляр в разных окнах.
#include "tetraserial.h" QSerialPort *tetraSerial::serialObject; tetraSerial::tetraSerial(QObject *parent) : QObject(parent) { serialObject = new QSerialPort(this); serialObject->setPortName("com5"); serialObject->setBaudRate(1000000); serialObject->setDataBits(QSerialPort::Data8); serialObject->setParity(QSerialPort::NoParity); serialObject->setStopBits(QSerialPort::OneStop); serialObject->setFlowControl(QSerialPort::HardwareControl); serialObject->open(QIODevice::ReadWrite); }
Я попытался вызвать это с помощью " connect` в главном окне следующим образом.
#include "mainwindow.h" #include "ui_mainwindow.h" #include <QtSerialPort/QSerialPort> #include "tetraserial.h" MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); connect(tetraSerial::serialObject, SIGNAL(readyRead()),this,SLOT(serialRecived())); }
Я получаю ошибку времени выполнения и бросаю это в консоль.
не удается подключиться <null>::readData() Mainwindow::serialRecived