Forum: Mikrocontroller und Digitale Elektronik UART Befehl auswerten und uint8_t zu Char


von Gerd (Gast)


Lesenswert?

Hallo,

ich bin µC Anfänger, wie man aus dem Betreff schließen kann. Nun möchte 
ich zunächst Befehle vom PC an den µC senden.

Der µC Empfängt so lange Zeichen bis \n empfangen wird. Das 
funktioniert, ich kann die Zeichenkette wieder ausgeben. Sende ich vom 
PC "o" + Enter, ist if (Text[0] == 'o') gleich True. Sende ich aber 
"LED" + Enter, bekomme ich keine "wahre" If-Abfrage hin ('LED'; 'LED\n' 
etc.)
Wie muss diese aussehen bzw. wie muss der String "beschnitten" werden?

Das zweite Problem hat sich ergeben, als ich zur Information den 
uinit8_t Schleifenzähler-Wert an den PC senden wollte. Der Wert ist 
nicht größer als 5. Ich kann Text[0] = Schleifenzähler zuweisen aber es 
wird nicht der Wert übertragen. Wenn ich einer unit8_t-Variable den Wert 
= '5' zuweise, geht das Ganze aber. Wie bekomme ich das mit dem 
Schleifenzähler hin?

Danke für eure Hilfe und Nachsicht ;).

von Fabian O. (xfr)


Lesenswert?

Gerd schrieb:
> Der µC Empfängt so lange Zeichen bis \n empfangen wird. Das
> funktioniert, ich kann die Zeichenkette wieder ausgeben. Sende ich vom
> PC "o" + Enter, ist if (Text[0] == 'o') gleich True. Sende ich aber
> "LED" + Enter, bekomme ich keine "wahre" If-Abfrage hin ('LED'; 'LED\n'
> etc.)
> Wie muss diese aussehen bzw. wie muss der String "beschnitten" werden?

http://www.mikrocontroller.net/articles/FAQ#Wie_funktioniert_String-Verarbeitung_in_C.3F

> Das zweite Problem hat sich ergeben, als ich zur Information den
> uinit8_t Schleifenzähler-Wert an den PC senden wollte. Der Wert ist
> nicht größer als 5. Ich kann Text[0] = Schleifenzähler zuweisen aber es
> wird nicht der Wert übertragen. Wenn ich einer unit8_t-Variable den Wert
> = '5' zuweise, geht das Ganze aber. Wie bekomme ich das mit dem
> Schleifenzähler hin?

http://www.mikrocontroller.net/articles/FAQ#Wie_kann_ich_Zahlen_auf_LCD.2FUART_ausgeben.3F

von Sebastian W. (wangnick)


Lesenswert?

Hallo Gerd,

typisch Anfänger, deine Fragen sind nicht beantwortbar weil total aus 
dem Zusammenhang gerissen.

Beispiel: "Sende ich aber "LED" + Enter, bekomme ich keine "wahre" 
If-Abfrage hin ('LED'; 'LED\n' etc.)"

Das kann viele Ursachen haben, aber ohne den kompletten Code zu sehen 
ist es müßig zu spekulieren. 'LED' zum Beispiel ist ja schon syntaktisch 
falsch.

Also, Fragen sinnvoll zu stellen will auch gelernt sein ;)

LG, Sebastian

von Svenska (Gast)


Lesenswert?

Möglicherweise ist ENTER im Terminal auch ein \r und kein \n.

von Gerd (Gast)


Lesenswert?

Hallo und danke für eure Hilfe.

@Fabian: Mit strcmp() kann ich nun die Befehle auswerten und mit itoa() 
die Zahlen in sendbare Strings wandeln.

@Sebastian: Wenn ich weitere Fragen habe, werde ich mich bemühen diese 
konkreter zu formulieren und Code anzuhängen.

@Svenska: \r hatte ich eigentlich auch gemeint ;)

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.