Forum: Compiler & IDEs Serielle Eingabe von Buchstaben oder Zahlen


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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.