Campus Serre  1.0
BTS SN-IR La Salle Avignon 2018
Connecteurs publics | Signaux | Fonctions membres publiques | Fonctions membres privées | Attributs privés
Référence de la classe GestionPort

Communique avec la serre via un port série virtuel. Plus de détails...

#include <gestionPort.h>

Liste de tous les membres

Connecteurs publics

void receptionnerDonnees ()
 Réception des trames de la serre.

Signaux

void nouvelleTrame (QString trame)

Fonctions membres publiques

 GestionPort (QObject *parent=0)
 Constructeur : crée, paramétre et ouvre le port.
 ~GestionPort ()
 Destructeur.
int envoyerDonnees (const QString &trame)
 Envoie des trames a la serre.
bool estOuvert ()
 Vérification si le port est ouvert.

Fonctions membres privées

void creerPort ()
 Création du port.
void parametrerPort ()
 Paramétrage du port.
void ouvrirPort ()
 Ouverture du port.
bool verifierTrame (QString trame)
 Vérifie si la trame passée en paramètre est une trame PCS complete lisible.
void fermerPort ()
 Fermeture du port.

Attributs privés

QextSerialPort * port
 relation vers la classe QextSerialPort

Description détaillée

Auteur:
Di Sario
Version:
1.0
Date:
Mercredi 21 février 2018

Documentation des constructeurs et destructeur

GestionPort::GestionPort ( QObject *  parent = 0)
Paramètres:
parentAdresse de l'objet parent (sinon 0)

Références creerPort(), ouvrirPort(), et parametrerPort().

                                        : QObject(parent)
{
    creerPort();
    parametrerPort();
    ouvrirPort();
}
{

}

Documentation des fonctions membres

void GestionPort::creerPort ( ) [private]

Références PORT, et port.

Référencé par GestionPort().

{
    port = new QextSerialPort(QLatin1String(PORT), QextSerialPort::EventDriven, this);
}
int GestionPort::envoyerDonnees ( const QString &  trame)

Références port.

Référencé par IHMCampusSerre::commanderChauffage(), IHMCampusSerre::commanderOuvrant(), IHMCampusSerre::commanderVanne(), IHMCampusSerre::envoyerConsignes(), et IHMCampusSerre::envoyerSeuils().

{
    if (port == NULL || !port->isOpen())
    {
        return -1;
    }

    qDebug() << Q_FUNC_INFO << trame;

    return port->write(trame.toLatin1());
}

Références port.

Référencé par IHMCampusSerre::IHMCampusSerre().

{
    if (port != NULL)
    {
        return port->isOpen();
    }
    return false;
}
void GestionPort::fermerPort ( ) [private]

Références port.

{
    if(port->isOpen())
    {
        port->close();
        disconnect(port, SIGNAL(readyRead()), this, SLOT(recevoir()));
    }
}
void GestionPort::nouvelleTrame ( QString  trame) [signal]

Référencé par receptionnerDonnees().

void GestionPort::ouvrirPort ( ) [private]

Références PORT, port, et receptionnerDonnees().

Référencé par GestionPort().

{
    port->open(QIODevice::ReadWrite | QIODevice::Unbuffered);

    if(port->isOpen())
    {
        connect(port, SIGNAL(readyRead()), this, SLOT(receptionnerDonnees()));
    }
    else
    {
        qDebug() << Q_FUNC_INFO << "Port" << QLatin1String(PORT) << "non ouvert";
    }
}
void GestionPort::parametrerPort ( ) [private]

Références port.

Référencé par GestionPort().

{
    port->setBaudRate(BAUD9600);
    port->setDataBits(DATA_8);
    port->setStopBits(STOP_1);
}

Références nouvelleTrame(), port, et verifierTrame().

Référencé par ouvrirPort().

{
    QByteArray donneesRecues;

    while(port->bytesAvailable())
    {
        donneesRecues += port->readAll();
        usleep(100000);
    }

    QStringList listeDonnees;
    QString donnees(donneesRecues);


    listeDonnees = donnees.split("$",QString::SkipEmptyParts);

    for(int i = 0; i < listeDonnees.length(); i++)
    {

        qDebug() << Q_FUNC_INFO << '$' + listeDonnees.at(i);
        if(verifierTrame('$' + listeDonnees.at(i)))
        {
            emit nouvelleTrame('$' + listeDonnees.at(i));
        }
    }
}
bool GestionPort::verifierTrame ( QString  trame) [private]
Paramètres:
trameQString La trame à verifier
Renvoie:
true si la trame est valide sinon false

Référencé par receptionnerDonnees().

{
    QString checksum;
    const QString debutTrame = "$";
    const QString typeTrame = "PCS";
    const QString debutChecksum = "*";

/*
    //Exemple de trame
    //QString trame = "$PCS.000.235.220.800.600.020.001.025.000.001*";
*/
    // phrase vide ?
    if(trame.length() != 0)
    {
        // est-ce une phrase PCS ?
        if(trame.startsWith(debutTrame))
        {
            // est-ce la bonne phrase ?
            if(trame.startsWith(debutTrame + typeTrame))
            {
                // y-a-t-il un checksum ?
                if(trame.contains(debutChecksum))
                {
                    checksum = trame.section(debutChecksum, 1, 1);
                    qDebug() << Q_FUNC_INFO << "checksum : 0x" << checksum;
                    return 1;
                }
                else
                    qDebug() << Q_FUNC_INFO << "Attention : il n'y a pas de checksum dans cette phrase !";
                    return 0;
            }
            else
                qDebug() << Q_FUNC_INFO << "Erreur : ce n'est pas une trame PCS !";
                return 0;
        }
        else
            qDebug() << Q_FUNC_INFO << "Erreur : ce n'est pas une trame PCS !";
            return 0;
    }
    else
        qDebug() << Q_FUNC_INFO << "Erreur : phrase vide !";
        return 0;
}

Documentation des données membres

QextSerialPort* GestionPort::port [private]

La documentation de cette classe a été générée à partir des fichiers suivants :
 Tout Classes Fichiers Fonctions Variables Macros