UART und einfache Menüs

Gast #427299
Lesenswert?
• ▲
▼
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....
Gast #427337
Lesenswert?
• ▲
▼
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
#427368
Lesenswert?
• ▲
▼
> 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.
Gast #427401
Lesenswert?
• ▲
▼
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... :-)
Persönliche Seite #427416
Lesenswert?
• ▲
▼
@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

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.