Je souhaite récupérer la saisie de l'utilisateur de la console dans une fonction.
En gros j'ai une fonction qui récupère ce qui a été écrit dans la console et qui retourne le tout en string. Une sorte d'input quoi.
Le problème c'est que j'ai pas de problème pour lire ce qui a été écrit quand je suis dans la void loop() mais impossible de faire fonctionner le même script dans une fonction...
En regardant votre tuto je retombe sur des choses que j'avais déjà essayé sans succès me^me en modifiant mon code comme cela:
String inputStr()
{
String r;
while (Serial.available()) {
r = Serial.read();
}
return(r);
}
Cela ne fonctionne toujours pas...
Arduino lit une string vide et ne check seulement une seule fois si quelque chose est rentré par l'utilisateur. Alors qu'avec la while il devrait rechercher continuellement...
//------------------------------------- Ligne de commandes
bool cmdNouvelleRecue = false; // Si une nouvelle commande a été reçue
String cmdTexte = ""; // Texte de la commande
void setup()
{
Serial.begin(115200);
Serial.setTimeout(50);
}
void loop()
{
serialInput(); // Ecouter la console
if (cmdNouvelleRecue) // Si une nouvelle commande depuis la console
{
cmdExecute(cmdTexte);
cmdTexte = "";
cmdNouvelleRecue = false;
}
}
void cmdExecute(String commande)
{
Serial.println("Execution de " + commande);
}
/*-----------------------------------------------------------------------
Réception de commandes depuis le moniteur
'*------------------------------------------------------------------------
*/
void serialInput()
{
if (Serial.available())
{
cmdTexte = Serial.readString();
cmdTexte.replace("\n", ""); // Nettoyer l'entrée
cmdTexte.replace("\r", "");
cmdNouvelleRecue = true;
}
}
Mais il faut savoir, que, dans le moniteur, tu ne peux pas saisir la saisie de l'opérateur "à la volée", la saisie doit obligatoirement se terminer avec un Enter au clavier.