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 :

Conversion text en binaire


Sujet :

C++

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2010
    Messages : 7
    Points : 3
    Points
    3
    Par défaut Conversion text en binaire
    Hello,

    Voilà je fais un programme pour lire des informations d'un capteur de pression connecté à un port série et un microcontrôleur.
    Le fabriquant a bien fait les choses puisque pour lire des données, il faut juste nevoyer une commande en text...
    genre si j'écris cela $B½! il va me lire les valeurs de mon capteur. Le problème est qui m'envoye les valeurs sous la même forme et que je devrais les convertir en binaire ou en décimal. Comment faire?

    Merci

    Jerome

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 294
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 294
    Points : 1 543
    Points
    1 543
    Par défaut
    Salut,

    Est-ce que ce qui est mentionné dans cette FAQ t'aide ou ce n'est pas du tout ça que tu entends par convertir ?

    MAT.

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2010
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    hello,

    Alors je reformule mon problème

    En bref je lis les infos d'un capteur connecté par un port série comme suit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    	 const unsigned __int8 nr=4;	//Number of data read from the port
    	unsigned char szBuffread[nr +1]={0}; //a buffer to store the data in
    	DWORD dwBytesRead = 0;	//the number of bytes actually read
    	if(!ReadFile(hSerial, szBuffread, nr, &dwBytesRead, NULL)){
    	cout<<"error occurred reading reset command \n";
    	}
    	else
    	{
     
    		cout<<"\nBuffer read is:"<<szBuffread<<"\n number of bytes read "<<dwBytesRead<<endl;
    	}
    szBuffread est censé être ce que je lis comme info de mon capteur.

    et en pièce joint voila une photo de ce qu'il me sort (regarde la première ligne). Ce n'est même pas du code ASCII....
    bon alors maintenant imaginons que s'en soit, comment je fais pour convertir mon code ascii en décimal, ou même mieux, en binaire?

    Merci
    Images attachées Images attachées  

  4. #4
    Membre éclairé

    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    717
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 717
    Points : 858
    Points
    858
    Par défaut
    Pour savoir comment interpréter les données il faut consulter la documentation du capteur. Que dit-elle sur le format des données retournées ?

  5. #5
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 294
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 294
    Points : 1 543
    Points
    1 543
    Par défaut
    Ce n'est pas du texte mais du binaire qui est échangé (dans les deux sens).
    Genre la première réponse fait 4 octets, tu l'écris toi-même ("number of bytes read").

    Après pour pouvoir l'interpréter il faut lire la documentation pour savoir à quoi ça correspond...
    Bon tu peux sans doute faire des essais et en tâtonnant tu peux réussir à comprendre le format.
    Par exemple tu peux essayer de convertir en flottant et regarder si la valeur obtenue est cohérente :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    float v = *reinterpret_cast< float* >( szBuffread );
    MAT.

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2010
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    ils disent que c'est de l'ASCII....

  7. #7
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Points : 13 017
    Points
    13 017
    Par défaut
    Bonjour
    Et si tu prend les octets un par un, ressemblent-ils à quelque chose ?

  8. #8
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2010
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    hello,

    alors j'ai pas mal avancé.
    j'arrive à convertir, mais certains de mes charchtères en texte foirent..

    j'ai bêtement fait un cast: (int)mavariablenASCII

    alors pour les classiques come % ou § ou ! ou toute les lettres, il me fait la conversion en décimal parfaitement. par contre pour certains, il me met des signes négatifs, et comme par hasard c'est ceux qui sont plus grands que 212 il me met renvoie des nombres négatifs....

  9. #9
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2010
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    je peux même donner deux exemples qui foirent....vu que je sais ce que je devrais avoir...

    y en a un ou je devrais avoir le symbole beta, code decimal 223 et mon cast me retourne -33,

    l'autre je devrait avoir n avec une vague dessus, code décimal 241 et j'ai -15....

    peut-être que ces charactères spéciaux ne sont pas reconnus? faut'il que j'inclue une librairie qui les reconnait??

    merci

  10. #10
    Membre éclairé

    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    717
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 717
    Points : 858
    Points
    858
    Par défaut
    Les valeurs négatives c'est parce que mavariablenASCII doit être de type char (signé) donc entre -128 et 127. Si tu veut une valeur entre 0 et 255 il suffit de la convertir en unsigned char.

  11. #11
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2010
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    yesss,

    ca fonctionne, merci!!!

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

Discussions similaires

  1. conversion hex texte vers binaire
    Par yannick85 dans le forum C#
    Réponses: 5
    Dernier message: 23/08/2013, 21h04
  2. conversion text to binaire
    Par shootgirl dans le forum MATLAB
    Réponses: 1
    Dernier message: 20/06/2011, 11h29
  3. Réponses: 6
    Dernier message: 14/03/2007, 14h36
  4. Réponses: 2
    Dernier message: 09/12/2006, 18h01
  5. conversion text vers integer
    Par jawad.t dans le forum Connexion aux bases de données
    Réponses: 3
    Dernier message: 10/06/2005, 20h35

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