Bonjour,
Voici mon programme de test:
void setup()
{
Serial.begin(115200); // Pour pouvoir utiliser la console
Serial.print(char(65)); // Affiche "A"
Serial.print(char(195)); Serial.print(char(169)); // Affiche "é"
}
void loop() {
if (Serial.available()) // Si un caractère est arrivé
Serial.print(char(Serial.read())); // On l'affiche
}
Je travaille avec une Uno, ma console est à 115200 bauds, j'utilise l'IDE 2.0.3 avec une console "Pas de fin de ligne".
Comme attendu, le setup() fait bien un affichage "Aé". Mon problème est que que le loop() ne fonctionne pas avec les caractères à deux ou trois octets. Si j'envoie "A", j'ai bien "A" qui s'affiche, mais pour "é" c'est "??"qui apparaît.
J'ai l'impression que les deux caractères partent bien mais que que le Serial.available()
prend trop de temps et que la console est pressée, du coup elle affiche avent d'avoir reçu le second octet.
Si dans le setup') je mets:
Serial.print(char(195)); delayMicroseconds(1360); Serial.print(char(169)); // Affiche "é"
J'ai bien le "é" qui est affiché, mais si je mets:
Serial.print(char(195)); delayMicroseconds(1380); Serial.print(char(169)); // Affiche "é"
j'ai un double "?"
Pour 1370µs, j'ai de temps en temps "é", et de temps en temps "??"
Mon analyse est-elle juste? Y a-t-il un moyen simple de faire
if (Serial.available()) // Si un caractère est arrivé
Serial.print(char(Serial.read())); // On l'affiche
mais qui fonctionne?
Cela fonctionnait bien avec l'IDE 1.truc.chose...