Forum: PC-Programmierung Zahlen über SerialPort senden


von Joachim L. (appin)


Lesenswert?

Hallo.

Ich möchte eine Zahl, die vom Benutzer eingegeben wird, an meinen Atmega 
über UART senden und diese in meinem Atmega als Anzahl von Schleifen 
durchläufen nutzen.

Wenn ich jedoch diese zahl sende, wird sie als String interpretiert.

Ich bräuchte nun entweder eine Möglichkeit diese Eingabe direkt als 
Integer zu Übertragen oder eine Möglichkeit in meinem Atmega diesen 
String in einen Int zu wandeln.

Vielen Dank für eure Hilfe!

von Lehrer (Gast)


Lesenswert?

Joachim Lunz schrieb:
> Ich bräuchte nun entweder eine Möglichkeit diese Eingabe direkt als
>
> Integer zu Übertragen oder eine Möglichkeit in meinem Atmega diesen
>
> String in einen Int zu wandeln.

Richtig!
Das ist eine Feststellung. Wo ist jetzt eine Frage?

von Nilix (Gast)


Lesenswert?

int Zahl;
char Zeichen;

Zahl=atoi(Zeichen);

oder

Zahl=Zeichen | 0xF;

von bluppdidupp (Gast)


Lesenswert?

Um welche Programmiersprache gehts überhaupt?

von Karl H. (kbuchegg)


Lesenswert?

bluppdidupp schrieb:
> Um welche Programmiersprache gehts überhaupt?

Das wäre gut zu wissen, denn je nachdem verschiebe ich das ganze dann 
entweder ins GCC-Forum oder ins allgemeine µC-Forum

von Karl H. (kbuchegg)


Lesenswert?

Nilix schrieb:
> int Zahl;
> char Zeichen;
>
> Zahl=atoi(Zeichen);

fast.
atoi ist kein schlechter Ansatz, aber die Datentypen stimmen nicht.

von Nilix (Gast)


Lesenswert?

>atoi ist kein schlechter Ansatz, aber die Datentypen stimmen nicht.

stimmt sorry in der Eile nicht aufgepasst.

von Karl H. (kbuchegg)


Lesenswert?

Joachim Lunz schrieb:

> Wenn ich jedoch diese zahl sende, wird sie als String interpretiert.

Jo. Das ist ja erst mal nicht schlecht. Vermeidet Probleme wenn deine 
Zahlen größer als 255 werden.

Und hoffentlich schickst du in deinem String hinten nach auch noch ein 
'Jetzt ist die Zahl zuende' Zeichen. Denn sonst kann sich dein µC 
brausen gehen, wenn er aus der Übertragung

   17845

rausfinden soll, ob das jetzt die Zahlen

   1 7 84 und 5
waren. Oder doch eher

   17 8 45

oder vielleicht

   178 45

oder möglicherweise

   1 784 5

oder ....

mit einem Trennzeichen, welches eine Zahl abschliesst, gibt es da keine 
Missverstädnisse. Denn zb mit einem abschliessendem ';' nach jeder Zahl 
ist eindeutig klar, wie das empfangene

   17;8;4;5

zu interpretieren ist. Und es ist auch klar, dass die letzte 5 noch 
nicht die komplette Zahl ist, sondern dass da noch was fehlt, was mit 
der nächsten UART Übertragung kommen wird.

> Ich bräuchte nun entweder eine Möglichkeit diese Eingabe direkt als
> Integer zu Übertragen oder eine Möglichkeit in meinem Atmega diesen
> String in einen Int zu wandeln.

Dann zeig halt mal deinen AtMega Code, damit man weiß, in welchen 
Kontext das ganze einzubetten ist. Denn wie immer: viele Wege führen 
nach Rom.

von Robert L. (lrlr)


Lesenswert?

alle

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.