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

C++ Discussion :

Découpage d'un QString


Sujet :

C++

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2019
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2019
    Messages : 3
    Par défaut Découpage d'un QString
    Bonjour les gens j'aurais besoin de votre aide je suis actuelement en train de faire un mini projet mais il y a une tâche bonus que je n'arrive pas à faire qui consiste à l'aide d'un anémomètre récupérer l'orientation et la vitesse du vent sachant qu'il m'envoit une trâme NVMEA qui ressemble à ceci:

    $IIMWV,179.0,R,000.30,N,A<CR><LF>
    $WIXDR,C,020.0,C,,<CR><LF>
    $PLCJ,5B,5B,5F,5F,31,
    $PLCJEC90,D35D,3F00,00FF,FF



    Les données importantes qui m'intérresse se trouvent toujours dans la ligne commencant par $IIMWV car c'est le préambule de la phase vent ici dans l'exemple au dessus le 179 représente en degrès l'orientation du vent et le 0.30 représente la vitesse en Noeud du vent. J'aimerais donc pouvoir découper cette ligne afin de récuperer ces informations. Afin de lire la trame je fais comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    QString anem::LireOrientation()
     
    {
        trame_ =portserie_->Lire();
        cout << trame_.toStdString() << endl;
     
     
    }
    J'ai deja essayer de faire ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    QString orientationvent_ = trame_.section('$IIMWV,',1,1);
    Car normalement c'est la première ligne qui nous intéresse mais enfaite je me suis apperçu que lors de la lecture de la trame cela lit 6 lignes de trames et donc dès fois la ligne du vent commencant par $IIMWV n'était pas toujours en première ligne sa pouvait ressembler à sa:

    $PLCJ,5B,5B,5F,5F,31,
    $PLCJEC90,D35D,3F00,00FF,FF
    $IIMWV,179.0,R,000.30,N,A<CR><LF>
    $WIXDR,C,020.0,C,,<CR><LF>
    $PLCJ,5B,5B,5F,5F,31,
    $PLCJEC90,D35D,3F00,00FF,FF


    Je vous remercie d'avance de vos idées.

  2. #2
    Membre éclairé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2016
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Canada

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Août 2016
    Messages : 32
    Par défaut
    Bonjour,

    Est-ce que l'idée de rechercher dans un fichier la ligne comportant la string $IIMWV, serait utile pour toi ?
    Je pense que ça pourrait être un bon début

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2019
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2019
    Messages : 3
    Par défaut
    Bonjour,

    Merci de votre réponse oui sa portait être un bon début, mais la trame elle apparaît pas dans un fichier mais dans la console de qt.

  4. #4
    Membre habitué
    Homme Profil pro
    https://rplusplus.com/
    Inscrit en
    Février 2018
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : https://rplusplus.com/
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2018
    Messages : 12
    Par défaut
    Bonjour,

    Il faut procéder par étapes. Dans un premier temps, récupérer la ligne qui t'intéresse. Pour cela, tu peut utiliser la fonction "split", qui te permet de séparer un QString en QStringList (une liste de QString), suivant un séparateur. Puisque l'on veux séparer par ligne, le séparateur est le symbole de retour à la lgine "\n".

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    QStringList lineList = trame_.split("\n") ;
    Ensuite, dans cette liste, on veut trouver celle qui commence par "$IIMWV". Là encore, on a de la chance, la classe QString est riche en fonctionalitées de ce type. On a la méthode startsWith, qui permet de tester si un QString commence par un préfix donné. Il suffit donc de parcourir notre liste et de tester chaque ligne, par exemple comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    QString relevantLine;
    for(const QString & line : lineList) {
        if(line.startsWith("$IIMWV")) {
            relevantLine = line;
            break;
       }
    }
    Après ce code, relevantLine devrait contenir la chaine "$IIMWV,179.0,R,000.30,N,A<CR><LF>", dans ton premier exemple, et "$IIMWV,179.0,R,000.30,N,A<CR><LF>" dans le second.

    Et on continue comme ça. On peut à nouveau utiliser split, mais cette fois avec la virgule en séparateur, pour isoler les différentes parties. Ou bien section, comme tu le proposais. Attention, cependant, le premier argument que l'on donne à section est un séparateur, ça ne semble pas clair dans l'utilisation que tu essayais d'en faire.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    QString windOrientation = relevantLine.section(",", 1, 1) ;

Discussions similaires

  1. Découpage d'un QString
    Par Gladior99 dans le forum Autres éditeurs
    Réponses: 3
    Dernier message: 27/05/2010, 17h13
  2. [JSP]découpage d'une JSP
    Par asx9 dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 17/02/2005, 16h04
  3. Découpage de chaine de caractère
    Par tcharles dans le forum C++
    Réponses: 11
    Dernier message: 23/08/2004, 14h34
  4. découpage d'une chaine de caractère
    Par lamojuli dans le forum ASP
    Réponses: 4
    Dernier message: 13/05/2004, 15h00
  5. Réponses: 10
    Dernier message: 17/12/2003, 13h51

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