Hallo ich möchte gerne per UART einMenü realisieren zum Beispiel soll bei einem Tastendruck etwa folgendes beim Hyperterminal erscheinen: Was möchten Sie machen? (1) Addition (2) Subtraktion Ihre Eingabe: ----- Bitte 1. Wert eingeben: Bitte 2. Wert eingaben: ----- Ergebnis: xxxx ---------------------------------------------- Etwa so sollte das aussehen. Ich bekomme es nur hin, dass ich ein Zeichen verarbeiten kann. Ich möchte aber gerne größer Zahlen oder Strings zum ATmega schicken etwa 1234 oder "Peter". Dann soll später etwas mit dieser Eingabe gemacht. Geht das irgendwie über eine Schleife, die solange durchlaufen wird, bis das Enter-Signal geschickt wird? Fragen über Fragen....
Kurz zusammengefasst: -------------------------------------- Erste Eingabe über UART: Scholz Zweite Eingabe über UART: Sven Ausgabe über UART: Sven Scholz -------------------------------------- Wie realisiert man das unter BASCOM. Ein Beispielcode wäre echt nicht verkehrt. danke
> Ich möchte aber gerne größer Zahlen oder > Strings zum ATmega schicken etwa 1234 oder "Peter". Dann soll später > etwas mit dieser Eingabe gemacht. > Geht das irgendwie über eine Schleife, die solange durchlaufen wird, bis > das Enter-Signal geschickt wird? > Du bist schon auf der richtigen Fährte. Im Prinzip kann man das genau so machen. Nur benutzt man keine Schleife dazu :-) Was du machst, läuft ungefähr so ab: Zuallererst setzt du die UART erst mal so auf, dass sie dir bei Ankunft eines Zeichens eine Funktion, einen Interrupt Handler aufruft. In dieser Funktion nimmst du das Zeichen entgegen und hängst das Zeichen an einen String an. Auf diese Weise sammeln sich die gesendeten Zeichen in einer String Variablen. Mit einer Ausnahme: Wenn das Zeichen ein Enter ist, dann setzt du eine boolsche Variable auf true und signalisierst damit anderen Programmteilen, dass da jetzt ein kompletter String empfangen wurde. so eine Variable nennt man: ein Flag (engl. Flag: Flagge, Gerät zum signalisieren) Diese anderen Programmteile, konkret dein Hauptprogramm, wartet jetzt in einer Schleife einfach nur darauf, dass besagtes Flag auf true geht. Geht die auf true, dann enthält die Stringvariable den kompletten String. Das Hauptprogramm holt sich den und verarbeitet ihn weiter.
Alles klar, mal schauen ob ich das hinbekomme. Ich dachte vorher immer, ich könnte einfach die fertige INPUT-Funktion dafür nutzen. Da habe ich mich wohl geirrt. Alles muss man selber machen... :-)
Ooops. BASCOM. Da klink ich mich gleich wieder asus. Aber schau mal hier http://www.rowalt.de/mc/avr/avrboard/06/avrb06.htm (mit http://www.google.com in 10 Sekunden gefunden :-)
@Sven Schau Dir mal PRINT und INPUT an. Mit diesen beiden kannst Du ein Menü realisieren. Dazu vielleicht noch Inkey und Waitkey. Also: Ein Menü mit Prints aufbauen und Zahlen zuweisen, dann Input, anschliessend mit Select Case arbeiten (...oder Ifs). oder Ein Menü mit Prints aufbauen, wieder Input und Strings in die Case anweisungen einbauen. Wenn das eingegebene Zeichen/Zahl/String nicht zugeordnet werden kann und das Prog nicht verzweigt, dann soll eine Fehlermeldung zurückgeschickt werden. Auf jeden Fall ist ein CRLF notwendig, ausser bei Inkey und Waitkey. Um in Bascom ein String mit Input zu verbinden, sollte Deine Variable mit z.B. Dim Variable As String * 15 definiert worden sein. Schau mal in die BASCOM-Hilfe - sehr gut erklärt und mit Beispielen So Long
OK, hier mal ein kleiner in 5 Minuten "hingerotzter" Code im Anhang. So long
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.