QextSerialPort : Stocker les valeurs lues sur le port COM dans une variable

Fermé
Quintinius Messages postés 1 Date d'inscription mardi 27 novembre 2018 Statut Membre Dernière intervention 27 novembre 2018 - Modifié le 27 nov. 2018 à 17:01
Bonjour tous le monde,

Je suis débutant en C++ avec Qt Creator et j'ai entrepris d'utiliser la librairie QextSerialPort pour lire les données de capteurs envoyés sur le port COM. J'arrive bien à obtenir les valeurs sur la console en utilisant la classe PortListener ci-dessous.

//PortListener::PortListener(float &n, const QString &portName)
PortListener::PortListener(const QString &portName)
{
    qDebug() << "hi there";
    this->port = new QextSerialPort(portName, QextSerialPort::EventDriven);
    port->setBaudRate(BAUD9600);
    port->setFlowControl(FLOW_OFF);
    port->setParity(PAR_NONE);
    port->setDataBits(DATA_8);
    port->setStopBits(STOP_2);

    if (port->open(QIODevice::ReadWrite) == true) {
        connect(port, SIGNAL(readyRead()), this, SLOT(onReadyRead()));
        connect(port, SIGNAL(dsrChanged(bool)), this, SLOT(onDsrChanged(bool)));
        if (!(port->lineStatus() & LS_DSR))
            qDebug() << "warning: device is not turned on";
            qDebug() << "listening for data on" << port->portName();
    }
    else {
        qDebug() << "device failed to open:" << port->errorString();
    }
}

void PortListener::onReadyRead()
{
    QByteArray bytes;
    int a = port->bytesAvailable();
    bytes.resize(a);
    port->read(bytes.data(), bytes.size());
    qDebug() << "bytes read:" << bytes.size();
    qDebug() << "bytes:" << bytes;
}

void PortListener::onDsrChanged(bool status)
{
    if (status)
        qDebug() << "device was turned on";
    else
        qDebug() << "device was turned off";


J'aimerai pouvoir exploiter la variable qui contient les données dans mon main, il faudrait donc que je puisse faire en sorte que ma classe me retourne la valeur de "bytes". Ou faire une fonction qui stocke les valeurs lues sur le port série dans une variable...

Je ne sais pas trop comment m'y prendre, est-ce que quelqu'un à des idées ou des pistes ?