Forum: Compiler & IDEs Serielle Eingabe von Buchstaben oder Zahlen


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Jonas H. (Gast)


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

von Markus (Gast)


Lesenswert?

Assembler oder C?

von Jonas H. (Gast)


Lesenswert?

in C...

von Ronny Schulz (Gast)


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.

von Marco (Gast)


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]
  • [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.