Salut les amis,
Toujours en train de jouer avec mon minitel, je voudrais me simplifier la vie en insérant des codes dans mes chaines de caractères.
Par exemple, pour lui faire afficher "Accélération", je dois lui envoyer ça :
Serial.print (F("Acc")); // envoyer "Acc"
Serial.write(m_SS2); // envoyer 0x19 (passage en jeu étendu)
Serial.write(0x42); // envoyer 0x42 (accent aigu)
Serial.print(F("el")); // envoyer "el"
Serial.write(m_SS2); // envoyer 0x19 (passage en jeu étendu)
Serial.write(0x42); // envoyer 0x42 (accent aigu)
Serial.print(F("eration ")); // envoyer "eration"
Ca marche, mais c'est bien long. Oui, en minitel, il faut écrire l'accent, puis la voyelle à accentuer. J'ai donc essayé ça :
Serial.print (F("Acc\x19\x42el\x19\x42eration "));
Il affiche "Acclration" (remplacer les * par des flèches). Alors je regarde, et c'est comme s'il avait interprété (0x19, 0x2E) qui est justement la séquence pour afficher une flèche...
J'ai donc envoyé :
Serial.print (F("Acc\x19\x42dl\x19\x42eration ")); // le premier 'e' est remplacé par un 'd'
Bim, il m'affiche "Acc#l*ration", où # est la flèche (0x19, 0x2D)
J'ai alors envoyé :
Serial.print (F("Acc\x19\x442el\x19\x442eration ")); // en pensant que le premier 4 est passé à la trappe.
Il m'affiche toujours "Acclration".
J'ai essayé sans le F(),
Serial.print ("Acc\x19\x42el\x19\x42eration ");
Ca ne change rien.
Réflexion intime : est-ce que le compilateur n'interpréterait pas \0x42e comme un code, 'e' faisant partie des chiffres hexa... En le passant en 8 bits, alors il ne reste plus que 0x2e.
J'ai alors essayé ceci :
Serial.print (F("Acc\x19\66el\x19\66eration ")); // en remplaçant 0x42 par 66 (décimal)
la réponse du minitel : "Acc_el_eration". sachant que pour le minitel, afficher un '_' correspond à dire qu'il y a une erreur dans le code étendu (caractère inconnu). Donc le 66 n'est pas bien passé...
Bon, quelqu'un a-t-il la recette magique du \ et du format des codes? La plus étonnant est que le \0x19 semble bien passer, mais pas la suite...
Merci à vous