psyko_flex
Messages postés23Date d'inscriptionsamedi 25 septembre 2004StatutMembreDernière intervention23 novembre 2022
-
22 déc. 2005 à 21:09
cs_Joky
Messages postés1787Date d'inscriptionlundi 22 novembre 2004StatutMembreDernière intervention31 janvier 2009
-
24 déc. 2005 à 16:52
Voila je dois controler un bandeau lumineux, voila mon probléme,c'est avec la variable TrameRecue!! je la récupére de la fonction ReceptionCom( ); mais qui renvoi un void et normalement je récupére la chaine suivante ""comme accuséé de reception si tous se passe bien (or je en suis sur car le message que je veux s'affiche sur le bandeau,bref!!), avec le débuggeur j arrive a voir la chaine voulu mais avec des sign ASCII derriére.... mais ceci ne m interrese pas!comment réduire la taille du void pour ensuite la comparer a la chaine "".merci
ici un bout de mon code
//déclaration
unsigned char TrameRecue[100];
....
// la seul fonction qui touche a la valeur de TrameRecue
g_ErrCom=ReceptionCom(TrameRecue,NbMaxCar,&NbCarRecus);
vecchio56
Messages postés6535Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention22 août 201014 22 déc. 2005 à 21:27
Tu t'y prends mal, ce n'est pas un problème d'allocation. Il suffit d'ajouter un zero terminal à la fin de ta chaine:
g_ErrCom=ReceptionCom(TrameRecue,NbMaxCar,&NbCarRecus);
TrameRecue[NbCarRecus] = 0;
if(strcmp((char*)TrameRecue," "))
Sinon, tu peux aussi utiliser strncmp à la place de strcmp
psyko_flex
Messages postés23Date d'inscriptionsamedi 25 septembre 2004StatutMembreDernière intervention23 novembre 2022 22 déc. 2005 à 21:46
Merci enormément pour ces réponses rapide!la 2 émé solution n'as pas fonctionné, mais la 1ere a eu un succée total!
En vous remerciant tous les 2 de m'avoir accordé du temps.
vecchio56
Messages postés6535Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention22 août 201014 22 déc. 2005 à 22:01
Ce ne sont pas des chaines mais des entiers, donc bien entre simples quotes.
Les warnings c'est sans doute avec gcc, si ca marche comme ca, n'en tiens pas compte
vecchio56
Messages postés6535Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention22 août 201014 24 déc. 2005 à 16:35
if((*((DWORD*) TrameRecue) != '0DI<') || (*((WORD*) (TrameRecue + 4)) != '>1'))
J'imagine que c'est cette ligne la...
On veut comparer avec la chaine ""
Pour aller plus vite, on comparer les caractères 4 par 4 (en fait 4 et 2 parce qu'il n'y en a que 6)
'0DI<' c'est les 4 premiers. Les caractères sont inversés car le codage se fait comme ca, les poids faibles sont en premier. DWORD c'est 4 octets, et WORD c'est 2 octets
Ah oui, printf("Echec\n"); ca veut dire afficher la chaine "Echec\n" dans la sortie standard