Je ne comprends pas un truc !
Je suis obligé de déclarer une variable en INT alors que celle ci ne depassera jamais 255 ! sinon le calcul renvoyer est FAUX !!
Je m'explique :
Je recois par sms l'heure les minutes et les secondes , à la reception je les stock dans un tableau par INT Rx UART .
Ensuite je recupere chaques cases pour calculer le temps en secondes que je stock dans un unsigned long que j'appelle "chrono" .
Ensuite je souhaite envoyer ce "chrono" par texto donc je dois faire le sens inverse !
voila ce que ca donne .
Code : Tout sélectionner
char T_Chrono[15]={0};
unsigned int Heures, Minutes, secondes;la partie calcul du "chrono" dans le main ( en mode simplifiée ):
Code : Tout sélectionner
if ( F_chrono){
F_chrono = 0;
//--- récupération et calcul du Chrono en seconde
Heures = ((T_Chrono[0]-48)*10) + (T_Chrono[1]-48);
Minutes = ((T_Chrono[2]-48)*10) + (T_Chrono[3]-48);
Secondes = ((T_Chrono[4]-48)*10) + (T_Chrono[5]-48);
Chrono = ( (Heures*3600) + (Minutes*60) + Secondes );
composition_message(1);
}
}La fonction composition_message simplifiée aussi :
Code : Tout sélectionner
//------------------------------------------------------------------------------
void composition_message(char numero_message){
char Compteur=0, Compteur2=0;
char temp[30];
F_envoi_ok=0;
T_message[0] = 0; // On commence la chaine par un NULL afin de pouvoir y ajouter la suite
//-------------------- séléction et Création du message -------------------
switch (numero_message){
case 1:{
strcat(T_message, "Valeurs recues:\r\n");
ShortToStr (Heures, temp);
strcat(T_message, temp );
strcat(T_message, "h");
ShortToStr (Minutes, temp);
strcat(T_message, temp );
strcat(T_message, "m");
ShortToStr (Secondes, temp);
strcat(T_message, temp );
strcat(T_message, "s\r\n");
LongWordToStr(Chrono, temp);
strcat(T_message, temp );
strcat(T_message, "s\r\n");
strcat(T_message, "Voulez-vous le lancer ?");
strcat(T_message, 0); // On termine par un terminateur
}
dans cette configuration ça fonctionne .
Mais si je mets char Heures, Minutes, secondes; le résultat est mauvais et je ne comprends pas pourquoi !
merci à vous si vous avez une explication


Beaucoup !