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 :

Conversion Hexa et QByteArray


Sujet :

Qt

  1. #1
    Membre éprouvé Avatar de sardik
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    135
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2009
    Messages : 135
    Par défaut Conversion Hexa et QByteArray
    Bonjour,

    Je dois envoyer une valeur enregistrée dans un qint16 via le port série.

    Il faut par exemple que j'envoie la valeur décimale 5000.

    Donc la valeur a envoyer est 0x1388 sur la liaison série. Pour envoyé cette valeur, j'utilise la librairie QextSerialPort. Elle nécéssite de mettre la donnée à envoyer dans un QbyteArray.

    Je fais donc :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    QByteArray tmp = QByteArray().fill('0', 4); // Pour qu'il y ai 4 octets minimum
    tmp = QByteArray::number(5000 ,16);
    Dans la variable tmp j'ai bien le "1388".

    Par contre quand j'envoie en faisant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    _extSerialPort->write(tmp);
    J'ai en réception :

    Car en faite ça a envoyé les caractères ASCII de ma conversion et je ne vois pas dans quelle méthode taper pour palier ce problème.

    Quelqu'un a une idée ? Merci.

  2. #2
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    Citation Envoyé par sardik Voir le message
    Car en faite ça a envoyé les caractères ASCII de ma conversion et je ne vois pas dans quelle méthode taper pour palier ce problème.
    Tu conerti un nombre en text et tu le met dans un QByteArray => tu envoie de text
    le plus simple :
    1- utilise un http://qt.developpez.com/doc/4.4/qdatastream/
    2- qui va manipulerton QByteArray en écriture
    3- et tu écrit ton qint16 avec <<.

    Attention à l'endian de tes données.

  3. #3
    Membre éprouvé Avatar de sardik
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    135
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2009
    Messages : 135
    Par défaut
    Ok merci

  4. #4
    Membre éprouvé Avatar de sardik
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    135
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2009
    Messages : 135
    Par défaut
    Par contre avec cette méthode je vois que l'écriture se fait sur 32 bits même si on veux écrire uniquement 8 bits de données.

    Exemple:

    Je veux écrire 0x03. Là ça m'écris :

    Y a t-il un moyen de n'écrire qu'un octet. (j'ai essayer avec un cast (char) mais ça ne fonctionne pas.

    Merci

  5. #5
    Membre éprouvé Avatar de sardik
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    135
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2009
    Messages : 135
    Par défaut
    Bon en faite j'ai réussi il suffisait de mettre (quint8) à la place du cast en (char).

  6. #6
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    Citation Envoyé par sardik Voir le message
    Par contre avec cette méthode je vois que l'écriture se fait sur 32 bits même si on veux écrire uniquement 8 bits de données.

    Exemple:

    Je veux écrire 0x03. Là ça m'écris :

    Y a t-il un moyen de n'écrire qu'un octet. (j'ai essayer avec un cast (char) mais ça ne fonctionne pas.

    Merci
    si tu utilise un quint16 normalement y as pas de problème.
    Peut tu montrer ton code?

  7. #7
    Membre éprouvé Avatar de sardik
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    135
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2009
    Messages : 135
    Par défaut
    C'est vraiment super ce streaming

    Il y a même la méthode void QDataStream::setByteOrder ( ByteOrder bo ). Car il faut que je gère les deux car le programme doit envoyer vers différentes architectures.

    Merci beaucoup mister yan

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Fonctions de conversions (hexa->int & hexa->uint)
    Par MonsieurAk dans le forum C
    Réponses: 2
    Dernier message: 18/05/2006, 08h36
  2. Fonctions de conversions (hexa->int & hexa->uint)
    Par MonsieurAk dans le forum Windows
    Réponses: 0
    Dernier message: 17/05/2006, 13h05
  3. CString : conversion Hexa -> caractere
    Par auriga dans le forum MFC
    Réponses: 7
    Dernier message: 11/05/2006, 18h53
  4. Conversion Hexa --> Decimal
    Par lory_van_eyck dans le forum Général Python
    Réponses: 2
    Dernier message: 28/09/2005, 07h29
  5. conversion hexa-binaire
    Par jack69 dans le forum C
    Réponses: 8
    Dernier message: 04/04/2005, 16h33

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