Serielle Eingabe von Buchstaben oder Zahlen

Gast #76306
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
Gast #76309
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.
Gast #76310
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

Eine eigene Frage? Dieser Thread ist über 22 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.