Abfrage von Buchstaben im seriellen Monitor

Guten Abend,
ich hätte mal eine Nachfrage zu einem Arduinoprogramm, was wir gerade in der Schule zum Üben programmieren.

Es soll eine Eingabe im Seriellen Monitor abgefragt werden und ausgegeben werden.

Das Programm haben wir soweit fertig. Das Problem besteht jetzt darin, das die Enter-Taste ebenfalls als Buchstabe erkannt wird und man nach Eingabe eines Buchstabens und drücken der Enter-Taste zwei Zeilen ausgegeben werden.

Sobald ich im seriellen Monitor "kein Zeilenende" einstelle, funktioniert alles super.

Wäre das schon die Lösung?

char taste;
bool merker = false;
void setup() {
  Serial.begin(9600);
}

void loop() {
  if (merker == false) {
    Serial.println("\n\nBitte geben Sie die Noten als Buchstaben ein!");
    merker = true;
  }
  if (Serial.available() > 0) {
    taste = Serial.read();
    Serial.print("Eingegebener Buchstabe: ");
    Serial.println(taste);
  }
}

Ja, denn der Zeilenvorschub ist auch ein Zeichen.
Andere Variante, diesen abfangen.

Gruß Tommy

timschillert:
Sobald ich im seriellen Monitor "kein Zeilenende" einstelle, funktioniert alles super.

Wäre das schon die Lösung?

Nein.

taste = Serial.read();
    if (isAlpha(taste)) // Prüfung ob alphanumerisch
    {
    Serial.print("Eingegebener Buchstabe: ");

Alternativ:

if (!isControl(taste)) // Prüfung ob KEIN Steuerzeichen
    {
    Serial.print("Eingegebener Buchstabe: ");

Edit:
Alternative 2 und vielleicht die Bessere:

if (isPrintable(taste)) // Prüfung ob druckbar
    {
    Serial.print("Eingegebener Buchstabe: ");

Neben "Neue Zeile" gibt es doch auch noch andere Zeichen, die anders behandelt werden sollen, oder?
Das kannst du gleich in einem behandeln:

  • Erwartete Zeichen (Aktion)
  • Falsche Zeichen (Fehler melden)
  • Ignorierte Zeichen (nichts tun)

Im einfachsten Fall verzichtest du auf "Fehler melden" und ignorierst alles nicht erwartete.

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.