www.mikrocontroller.net

Forum: Compiler & IDEs Serielle Eingabe von Buchstaben oder Zahlen


Autor: Jonas H. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Ich möchte meinen AVR-Controller über die Serielle Schnittstelle
einstellen. Routinen zum Einlesen von Zeichen habe ich schon, wie kann
ich jedoch eine Zahl einlesen?

Das ganze soll am Ende so Aussehen:
Ich gebe einen Buchstaben für den jeweiligen Modus ein und danach den
Zahlenwert für die Initialisierung: z.B. A123. Wie kann ich jetzt den
Buchstaben in eine Variable "Zif" und die Zahl in eine Variable
"Num" einlesen?

Gruß Jonas

Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Assembler oder C?

Autor: Jonas H. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
in C...

Autor: Ronny Schulz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Irgendwo hast Du den String ja dann gepuffert. Wenn dein input immer so
aussieht A123, dann ist das ja nicht so kompliziert:

char buffer[20]; // einlese-puffer, da steht dann auch A123 drin


zif = *buffer;
num = atoi(buffer + 1);

Wenn Du atoi nicht benutzen willst, musst Du den String halt zu Fuß
auseiandernehmen und einfach rechnen.

Autor: Marco (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Jonas

Ich habe über den Hyperterminal an meinen ATmega 8 Zeichen gesendet.
Diese wurden in einen Buffer gesetzt und mit der Funktion
strcmp(buffer,"gewünschte Zeichenkette") verglichen.

#include <string.h>
char ch=inp(UDR);    //Zeichen aus dem Leseregister holen
  buffer[pos] = ch;  //Zeichen in den Buffer an momentane
                                //Position setzen
buffer[pos+1]=0;    //nachfolgendes Zeichen ist immer
                                //eine Null (momentanes
                                //Zeichenkettenende)
if(pos<31)      //Wenn maximale Zeichenlänge nicht
                                //erreicht ist, ...
{
pos++;        //... erhöhe die Position im Buffer!
}

if (strcmp(buffer , "1") == 0) dann mache das und das! z.B.

Ich kann dir auch gerne den kompletten Quellcode mal reinsetzen...bei
Bedarf

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.