Toujours dans mes expérimentations de SERIAL, je viens de tomber sur un truc pas banal :
Je rédige un programme pour apprendre à récupérer du texte sur la ligne série.
Ce dernier étant dans une chaine, je l'affiche en retour.
Voici mon programme :
char TEXTE[21]; // Place pour 20 caractères.
byte I = 0; // Pointeur dans la chaine TEXTE.
void setup() { Serial.begin(115200); TEXTE[0] = '\0'; }
void loop() {
/* Si FIFO non vide récupérer les octets */
while(Serial.available() > 0) {TEXTE[I] = Serial.read(); I = I++; };
TEXTE[I] = '\0'; // Placer la sentinelle en fin de texte.
/* Afficher la chaine contenue dans TEXTE */
if (I > 0) {
I = 0; // Pointer le début de la chaine TEXTE.
while(TEXTE[I] != '\0') {Serial.write(char(TEXTE[I])); I = I++; }; };
if (I > 0) {Serial.println(); I=0;}; // TEXTE "vidé".
}
Vu l'écriture, il me semble que normalement le texte saisi devrait être affiché sur la même ligne. (1) Ensuite, je fais passer l'affichage à la ligne suivante pour une nouvelle saisie.
BEN ... chaque caractère de mon tableau est affiché sur une ligne différente.
Pourquoi ça ? ? ?
(1) Du reste j'ai bien tous les caractères affichés sur une ligne si j'enlève l'instruction println().