Pages: 1 2 [3]   Go Down
Author Topic: Gestion des variables / array avec arduino et divers types  (Read 3407 times)
0 Members and 1 Guest are viewing this topic.
France (80)
Offline Offline
Newbie
*
Karma: 1
Posts: 26
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Merci beaucoup,
Je vais déjà dégrossir avec ça ;-)
Logged

Cordialement, Stéphane
Administrateur Aqua-Passion.com

France (80)
Offline Offline
Newbie
*
Karma: 1
Posts: 26
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour , j'avance doucement mais surement
mais je me repose une question .
Pareil ,j'ai un peu cherché sur le net mais pas trouvé exactement ce que je cherchais
vu que ça concerne le code cité plus haut dans ce post et que ca a un rapport directe je poste ma question ici , à la suite
donc j'ai ma structure :
Code:
typedef struct
{
  DeviceAddress adresse;
  char nom_sonde[20];
  float temp_actuelle;
  float temp_min;
  float temp_max;
  char temp_min_device[3];
  char temp_min_action[3];
  char temp_max_device[3];
  char temp_max_action[3]; 
}
sondes_temp;
la ligne qui m'intéresse est "char nom_sonde[20];"
cette variable est donc un array de chars

elle est peuplée comme indiqué par se post par un fichier config avec :
Code:
strcpy( (char *)sonde[idsonde].nom_sonde, textBuffer );

donc j'ai une sonde avec le nom "truc", l'autre avec "machin" , "sonde bac 1" ...enfin bref un nom pour chaque sonde

quand je l'affiche sur le tft je l'affiche dynamiquement ( 5 sondes par ecran ) qui changent au fil des rafraichissement
Code:
myGLCD.print(sonde[idsonde].nom_sonde,15,36);
par exemple

le souci , comme j'affiche par série de 5  toutes les 10 secondes
dans un écran la ligne sonde 1 devient la ligne sonde 6 dans l'autre

tout se passe bien lorsqu'ils ont tous la m^me longueur de nom
mais biensur si l'un a le nom "sonde bac 1" et l'autre "truc"
je me retrouve avec "truce bac 1"

normal je pense , car le nom ne remplis pas les 20 chars de la variable mais seulement la longueur du nom
donc comme au a l'affichage , les noms se superposent le plus long masque le plus court mais l'inverse pose pb
Au début je voulais réinitialiser tout l'écran tft mais cela prend un certain temps
ensuite j'ai penser afficher "                    " puis le nom de la sonde par dessus ca fonctionne mais pareil , a l'affichage ça émet un clignotement assez désagréable

De ce que je cherches a savoir ,pour résoudre mes problèmes c'est es ce que je peux remplir dès le début tous les chars en fin de variable par des caractères vides ?
pour avoir :
"truc              "
"sonde bac 1   "
ce qui résoudrais je pense mon pb

Y a t'il une solution simple pour faire cela ?
merci d'avance
Logged

Cordialement, Stéphane
Administrateur Aqua-Passion.com

Ile-de-France (92 sud), France
Offline Offline
Edison Member
*
Karma: 24
Posts: 2055
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Tout d'abord n'oublions pas que un
Code:
  char sonde[20];
ne peut contenir que 19 caractères car il faut toujours

Tu pourrais regarder du coté de sprintf qui permet de faire des format de chaines de caractères assez pratique

Code:
  sprintf( sonde[idsonde].nom_sonde, "%-19s", textBuffer );
Logged

Barbuduino: Arduino sur Breadboard & VinciDuino: Clone Leonardo // WR703: Mini-routeur hacké // LauchPad MSP430 et Stellaris // Panda II Arduino-like .NetMF sous VisualC#
RTFC: Read That F.....g Code / RTFD: Read That F.....g Doc / RTFDS: Read That F.....g DataSheet / RTFS: Read That F.....g Schematic / Wot da ya wanna D.I.Y. today ?

France (80)
Offline Offline
Newbie
*
Karma: 1
Posts: 26
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

merci beaucoup , c'est tout a fait cela , c'est parfait !
Logged

Cordialement, Stéphane
Administrateur Aqua-Passion.com

Pages: 1 2 [3]   Go Up
Jump to: