Bonjour,
Pour un Tp d'info je suis entrain de réaliser un programme permettant la communication entre un pc et un module TES16 ( protocole modbus )
La communication s'effectue sans souci mais c'est au niveau du traitement des donnée que j'ai un problème.
Je développe sous visual c++
Mon premier souci est que j'ai un programme auquel je passe un argument par exemple 55 qui doit être de l'hexa mais il est bien sur interpreter comme de l'ascii ( 3535 en hexa ) j'ai donc fait ceci :
Ma question est donc : n'existe t il pas une solution pour faire ceci automatiquement ( une petite fonction dans visual ).
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 // Récupération du PF tampon=argv[1][0]; // On récupère le premier chiffre tampon=tampon-0x30; // On retire 30 en hexa if(tampon>0x10) // Si le resultat >10 { tampon=tampon-0x7; // On lui enlève 7 en hexa } tampon=tampon<<4; // On decale de 4 bit vers la gauche tampon&&0xF0; // On masque pour s assurer du résultat //Récupération du Pf tampon2=argv[1][1];// on récupère le second caractères tampon2=tampon2-0x30;// On retire 30 en hexa if(tampon2>0x10) // Si le resultat >10 { tampon2=tampon2-0x7; // On lui enlève 7 en hexa } trame[5]=tampon|tampon2; // On fait un ou sur les deux caractère afin d associer PF Pf printf("Votre paramètre: %2.2X \n",trame[5]); // Vérification du paramètre
Ensuite une seconde partie du programme récupère la trame envoyer par le module.
Cette trame ( en hexa ) est stocker dans un tableau d unsigned char
Et je souhaite afficher la trame en binaire. Mais je n'y arrive pas j'aivais penser a faire ceci :
Si quelqu un pouvait m'orienter ca serait sympa ....
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 for(i=0;i<7;i++) { bin=entree[i];// On récupère la première valleur hexa for(j=0;j<7;j++) { bit=bin&0x1;// on masque pour avoir le dernier bit bin=bin>>1; // On decale pour faire tomber le dernier bit bit=binaire[j]; // On sauvegarde la première valeur binaire } printf("%d",binaire[i]); }![]()
Partager