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

Qt Discussion :

Traitement trame port série


Sujet :

Qt

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2011
    Messages : 36
    Points : 26
    Points
    26
    Par défaut Traitement trame port série
    Bonjour,

    J'ai actuellement un problème pour traiter les données reçus d'une trame par liaison série.

    Les trames sont envoyés chaque minute par une horloge HARPES : http://i.imgur.com/9PUuK4a.png

    Elles sont de cette forme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FF 01 10 02 04 15 09 11 09 54 02 03 16
    13 octets au total et en hexa.

    Pour l'acquisition du port série j'utilise la classe QSerialPort configuré à 1200bauds, parité pair, & 2 bits de stop.
    Pour la lecture j'instancie mon objet Trame et ensuite fait appelle à la fonction Affiche_decodee qui récupère en continue les informations reçus du port série.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    void MainWindow::readData()
    {
        // utilisation de la classe decode harpes
        decode_harpes Trame;
     
        console->insertPlainText(Trame.Affiche_decodee(serial->readAll()));
    }
    La lecture se fait, mais je n'arrive pas a traiter mes données dans la fonction Affiche_decodee.
    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
    QString decode_harpes::Affiche_decodee(const QByteArray trames)
    {
        for (int i = 0; i < trames.size(); i++)
        {
            if (trames.at(i) == -1)//FF = -1 décimal
            {
                return QString("Début de trame \n");
            }
            else if (trames.at(i-1) == 3 && trames.at(i) == 22)                    //16hexa = 22 decimal 3hexa = 3 decimal
            {
                return QString("\nFin de trame \n");
            }
            else
            {
               return QString::number(trames.at(i),16);
            }
        }
    }
    Je ne cherche pas à convertir la trame qui arrive en décimal et préfère la traiter directement en décimal. Mais voilà le résultat :

    Je ne récupère pas toutes la trames, des octets ou demi octets ont disparu !
    Avez-vous une idée de comment je pourrais stocker ou traiter correctement la trame ? CAD en demi octet ou octect.
    Je met en PJ le projet Qt ainsi que la doc pour le décodage de la trame.
    Fichiers attachés Fichiers attachés

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 068
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 068
    Points : 12 111
    Points
    12 111
    Par défaut
    Vous n'êtes malheureusement pas sur le bon forum, ici c'est C++/CLI et Qt n'est pas dans ce périmètre. discussion déplacée
    Utilisez un débugger pour vérifier le contenu du paramètre "trames" de votre méthode.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2011
    Messages : 36
    Points : 26
    Points
    26
    Par défaut
    Je l'ai fais & je vois bien tout les octets arrivé mais je ne trouve toujours pas le moyen de les traiter correctement.
    J'ai l'impression que c'est volatile.

Discussions similaires

  1. [Débutant] Problème réception trame Port Série
    Par cedricdu91 dans le forum VB.NET
    Réponses: 3
    Dernier message: 13/08/2013, 20h55
  2. Port série, trame & crc
    Par goulmak dans le forum Langage
    Réponses: 2
    Dernier message: 06/06/2007, 07h52
  3. Réponses: 3
    Dernier message: 18/07/2006, 13h37
  4. Réponses: 3
    Dernier message: 28/06/2006, 16h13
  5. [v2][VB.NET][Port-Série] Récupérer une trame ?
    Par burnedsoul dans le forum VB.NET
    Réponses: 4
    Dernier message: 30/11/2005, 16h46

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