Bonjour,
Le titre alambiqué du sujet mérite plus ample explications...
J'ai un buffer qui contient des données, parmi lesquelles une ou plusieurs chaines de caractères, chacune terminée par le caractère null
J'aimerais imprimer ces chaines directement avec print(), sans passer par un buffer intermédiaire
Exemple :
Mon code remplit le buffer, par exemple il contient : ABCDEFIJKLMNOP suivi d'un octet null
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 #define Buffer_RAM_Len 256 char Buffer_RAM[Buffer_RAM_Len];
Je peux faire :
ce qui va imprimer "ABCDEFIJKLMNOP".
Code : Sélectionner tout - Visualiser dans une fenêtre à part tft.print(Buffer_RAM)
Mais je voudrais faire tft.print(Buffer_RAM[5]) pour imprimer "FIJKLMNOP".
Évidemment, tft.print(Buffer_RAM[5]) va imprimer juste le caractère "F"
Mais je pense que vous avez compris ce que je souhaite faire.
Mon but est d'économiser la mémoire RAM...
Ma variable Buffer_RAM[]va contenir des instructions et des données selon un format "maison" que mon programme Arduino va parcourir et interpréter.
Buffer_RAM[] peut contenir une ou plusieurs chaines de caractères, de longueurs variables.
Je voudrais :
- éviter de créer un buffer temporaire pour contenir la chaîne de caractères à afficher.
- éviter de faire de multiples print() caractère par caractère avec une boucle for...next
Je pense qu'on peut, en bidouillant un peu salement avec un pointeur(mais c'est de l'embarqué on a le droit aux optimisations un peu barbares
) définir une variable (ou un pointeur) Buffer_Temp[] en lui donnant comme adresse l'emplacement du début de la chaîne dans Buffer_RAM[].
L'instruction TFT.Print(Buffer_Temp) ne verra que du feu et va sagement imprimer la chaîne à partir de l'adresse de Buffer_Temp[] et jusqu'à l'octet null servant de délimiteur.
Merci
A bientôt
Partager