J'ai un Arduino Leonardo et j'essaie de l'utiliser comme un convertisseur série vers USB. Sur Serial1
j'ai une chaîne se terminant par un nombre. Ce numéro que j'essaie d'obtenir via USB sur le PC. Cela fonctionne très bien mais j'ai besoin d'un '\n'
à la fin et je ne sais pas comment. Quand je l'essaye sur la ligne Keyboard.println
ou Keyboard.write
, j'obtiens un nombre différent de lignes avec le nombre prévu en splitté.Impossible d'ajouter un saut de ligne à la chaîne
#include <Keyboard.h>
String myEAN ="";
const int myPuffergrosse = 50;
char serialBuffer[myPuffergrosse];
void setup() {
Keyboard.begin();
Serial1.begin(9600);
delay(1000);
}
String getEAN (char *stringWithInt)
// returns a number from the string (positive numbers only!)
{
char *tail;
// skip non-digits
while ((!isdigit (*stringWithInt))&&(*stringWithInt!=0)) stringWithInt++;
return(stringWithInt);
}
void loop() {
// Puffer mit Nullbytes fuellen und dadurch loeschen
memset(serialBuffer,0,sizeof(myPuffergrosse));
if (Serial1.available()) {
int incount = 0;
while (Serial1.available()) {
serialBuffer[incount++] = Serial1.read();
}
serialBuffer[incount] = '\0'; // puts an end on the string
myEAN=getEAN(serialBuffer);
//Keyboard.write(0x0d); // that's a CR
//Keyboard.write(0x0a); // that's a LF
}
}
Un clavier envoie des clés et non des caractères. La bibliothèque traduit simplement le caractère de saut de ligne dans la touche "Entrée". –
Bienvenue dans Stack Overflow! Veuillez lire [Comment poser une bonne question?] (Http://stackoverflow.com/help/how-to-ask) avant d'essayer de poser d'autres questions. –
pourquoi est-ce que vous définissez le dernier caractère à 'null' c'est ce que' \ 0' est-ce que vous réalisez? Cela délimite la chaîne pas "\ n" vous avez besoin de mettre le '\ n' AVANT le' \ 0 'le plus probable. –