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 :

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
Ma question est donc : n'existe t il pas une solution pour faire ceci automatiquement ( une petite fonction dans visual ).

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 :

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]);
			}
Si quelqu un pouvait m'orienter ca serait sympa ....