IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Discussion :

Connexion au port COM1

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2014
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2014
    Messages : 28
    Par défaut Connexion au port COM1
    Bonsoir,
    je fais tourner un simulateur de GPS et j'alimente mon IHM (classe appGest) avec les sentences qu'il m'envoie.
    Je dispose pour cela d'une seconde classe (appelée "GPS") qui traite les sentences et les renvoie dans la classe de l'IHM.

    Je veux simplement modifier le code qui tourne déjà en s'appuyant sur un port UDP, afin de l'adapter et recevoir des trames du port COM1 mais je ne sais pas comment faire malgré mes recherches dans la documentation ou dans différentes réponses.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
     
    #include "gps.h"  
    #include "ui_appgest.h"  
    #include "appgest.h"  
     
     
    GPS::GPS(QObject *parent) :  
        QObject(parent)  
    {  
        appGest *tmp = qobject_cast<appGest *>(parent);  
     
        this->udpSocket = NULL ;  
    }  
     
    void GPS::initSocket(QHostAddress pAdress,int pPort)  
    {  
        this->udpSocket = new QUdpSocket(this);  
        this->udpSocket->bind(pAdress, pPort);  
     
        connect(this->udpSocket, SIGNAL(readyRead()),  
                this, SLOT(readPendingDatagrams()));  
    }  
    void GPS::readPendingDatagrams()  
    {  
        QString message ;  
        appGest *Ihm = qobject_cast<appGest *>(parent()) ;  
        while (this->udpSocket->hasPendingDatagrams()) {  
            QByteArray datagram;  
            datagram.resize(this->udpSocket->pendingDatagramSize());  
            QHostAddress sender;  
            quint16 senderPort;  
     
            this->udpSocket->readDatagram(datagram.data(), datagram.size(),  
                                    &sender, &senderPort);  
            message = datagram ;  
            emit Ihm->updateGps(message) ;  
        }  
    }
    Pouvez-vous m'éclairer sur la façon de procéder ?
    Merci d'avance.

  2. #2
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2008
    Messages
    26 772
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2008
    Messages : 26 772
    Par défaut


    A priori, ça ressemble aux cas d'utilisation du module Qt Serial Port (http://doc.qt.io/qt-5/qtserialport-index.html), afin de communiquer avec un port série.
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  3. #3
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2014
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2014
    Messages : 28
    Par défaut
    Salut dourouc05,
    déjà pour ta réponse.

    j'ai effectivement utilisé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    #include <QSerialPort>
    #include <QSerialPortInfo>
    Voici mes oeuvres...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    void GPS::setupSerial(QString pPort)
    {
        this->serialPort = new QSerialPort(this);
     
        this->serialPort->setPortName(pPort);
        this->serialPort->setBaudRate(QSerialPort::Baud9600);
        this->serialPort->setDataBits(QSerialPort::Data8);
        this->serialPort->setParity(QSerialPort::NoParity);
        this->serialPort->setStopBits(QSerialPort::OneStop);
        this->serialPort->setFlowControl(QSerialPort::NoFlowControl);
        this->serialPort->open(QIODevice::ReadWrite);
     
        connect(this->serialPort, SIGNAL(waitForReadyRead()), this, SLOT(readBytesAvailable()));
    }
     
    void GPS::readBytesAvailable()
    {
        QString message ;
        appGest *Ihm = qobject_cast<appGest *>(parent()) ;
     
        while (this->serialPort->bytesAvailable()>0);/*||this->serialPort->waitForReadyRead());*/
        {
            QByteArray ba;
            ba.resize(this->serialPort->bytesAvailable());
            QString nomPort;
     
            this->serialPort->read(ba.data(), ba.size());
     
            message = ba;
            emit Ihm->updateGps(message) ;
    Jusque là, c'est bon d'après-toi ou dois-je rajouter/modifier un truc ?
    Dans le cas où ça serait bon, j'ai pas encore testé le tout car il me manque encore la connexion au port COM que je vais tenter de faire ce soir...

  4. #4
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2008
    Messages
    26 772
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2008
    Messages : 26 772
    Par défaut
    A priori, ça n'a pas l'air mal (c'est juste en dehors de mes domaines de compétence ), si ce n'est un point-virgule dans le while :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    while (this->serialPort->bytesAvailable()>0);
    En d'autres mots : tant que la condition est respectée, ne rien faire.
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  5. #5
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2014
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2014
    Messages : 28
    Par défaut
    Salut dourouc05, et bonne année en ce début janvier !!

    Je suis en train de reprendre mes petits codes et (d'essayer...) de bosser dur mais je publierais mes résultats dès que possible pour avoir ton avis.
    A++

Discussions similaires

  1. Port COM1 sous XP
    Par xave dans le forum Windows XP
    Réponses: 6
    Dernier message: 06/02/2007, 10h40
  2. comment détecter l'absence de connexion sur port COM ?
    Par nicoboud2 dans le forum Entrée/Sortie
    Réponses: 4
    Dernier message: 12/04/2006, 14h41
  3. Projet Delphi avec des port COM1
    Par Miksou dans le forum Langage
    Réponses: 2
    Dernier message: 23/11/2005, 15h36
  4. [Socket]Connexion au port distant 161
    Par arsenik7 dans le forum Entrée/Sortie
    Réponses: 8
    Dernier message: 22/11/2005, 17h14
  5. [TP] Gestion du port COM1 en liason RS232
    Par jarc26 dans le forum Turbo Pascal
    Réponses: 5
    Dernier message: 01/03/2005, 13h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo