Enter probleem bij het invoeren

Hoi,

Ik gebruik Serial.readString om iets in te voeren.
Maar als ik dit wil vergelijken met iets dan is het nooit gelijk omdat de enter meegaat in de invoer variable.

Wat is het beste manier om de enter te verwijderen of niet te laten toevoegen aan de input variable.

Je hebt opties in de seriele monitor om CR en/of LF niet mee te sturen. Dit is voor de seriele monitor in IDE 1.8.19; in IDE 2.x zit de "No line ending" ergens rechts boven in the seriele monitor.

De CR (Carriage Return) en LF (Line Feed), zijn 2 ASCII karakters.
Deze worden aan het eind van een regel toegevoegd als je de Enter toets op je keyboard gebruikt.
Zoals sterretje je al liet zien, kun je dat uit zetten in de IDE.
Maar wanneer je een andere invoer methode gebruikt, zou dat wel eens niet tot de mogelijkheden kunnen behoren.
Daarom is het wellicht beter om die karakters uit je antwoord te slopen.
Het gaat daarbij om ASCII code 13 (0xD) voor CR, en 10 (0xA) voor LF.
Het ligt er aan hoe je de data binnenhaalt.
Wanneer je dat byte voor byte binnenhaalt (dat doe je dus niet met Serial.readString), dan kun je meteen controleren of 1 van deze 2 binnenkomt, en ze dan niet in je buffer zetten.
Je kunt ze dan meteen wel gebruiken om te registeren dat de enter toets is ingedrukt en de ingave van die regel / waarde / commando klaar is, en deze doorsturen voor verwerking in je sketch.

Met Serial.readString, krijg je een complete regel binnen.
Dan kun je daarna vast gaan stellen hoe groot de String is, en vervolgens kijken of de laatste karakters ASCII 10 en / of 13 zijn, waarna je ze uit de string knipt (bijvoorbeeld door alleen de tekens die voor de laatste 2 kwamen tijdelijk op te slaan in een 2e string (buffer)).

kan ik daar substr voor gebruiken dan of beter allemaal converteren naar een \0 ?

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