www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik UART und einfache Menüs


Autor: Sven Scholz (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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....

Autor: Sven Scholz (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Sven Scholz (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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... :-)

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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 :-)

Autor: Marc Meise (bytewood) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Marc Meise (bytewood) Benutzerseite
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
OK, hier mal ein kleiner in 5 Minuten "hingerotzter" Code im Anhang.

So long

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.