C CHARs und INTs in einem STRING zusammenfügen

Opthimo

Newbie
Registriert
Apr. 2016
Beiträge
5
Guten Morgen :)

zurzeit arbeite ich an einem kleinen Projekt mit einem Roboter, den ich mit einem STM32F4 Discovery Boars und einem QSC32 über die UART Schnittstelle ansteuere.

Das klappt soweit auch ganz gut.

Der Befehl zum Senden sieht wie folgt aus:

UB_Uart_SendString(COM2, "#10P500T1000",LFCR);

um den fett markierten Text geht es.

# <Nummer des Servos>
P <Pulse zwischen 500 und 2500 für die Richtung des Servos>
T <in welcher Zeit er an der Stelle sein soll>

Wenn ich den Befehl wie oben ausführe klappt es auch, alllerdings will ich ja manche Bewegungen berechnen lassen und möchte wie folgt mit Funktionen zur Bewegung arbeiten.

Code:
void bewege(int gelenk,int wert,int zeit)
{

UB_Uart_SendString(COM2, "[B]"#"gelenk"P"wert"T"zeit[/B]",LFCR);

return;
}

o.g. ist nur zu Veranschaulichung.

ich habe schon einiges ausprobiert aber nichts funktioniert bis jetzt.

beim printf kann ja wunderbar alles aneinanderreihen, aber ich weiß halt nicht wie ich diese Zeichenkette dann in einem String bekomme. (?)

habe die übergebenen int Werte in chars umgewandelt und versucht mit mehrere strcat Befehlen aneinanderzuketten.
Da kam aber nur ein ? beim anschließenden Printbefehl raus.

Die einzelnen Werte und Zeichen hintereinander zu senden (mit anschließendem LFCR) funktionierte auch nicht.

ist es denn wirklich so schwierig?

Ich hoffe da gibt es eine simple Lösung. Soll ja nicht jedes mal ein riesiger Rechenaufwand sein, wenn ich ein Gelenk bewegen will.

Lieben Gruß

Thimo
 
sprintf ?

int sprintf ( char * str, const char * format, ... );
Write formatted data to string
Composes a string with the same text that would be printed if format was used on printf, but instead of being printed, the content is stored as a C string in the buffer pointed by str.
 
Nimm lieber snprintf(). Aber liest wahrscheinlich eh wieder keiner.
 
Zuletzt bearbeitet:
asdfman schrieb:
Nimm lieber snprintf(). Aber liest wahrscheinlich eh wieder keiner.
Und warum? Die Funktion kannte ich noch garnicht.
 
asdfman schrieb:
Nimm lieber snprintf(). Aber liest wahrscheinlich eh wieder keiner.

Wo liegt da denn genau der Unterschied? Habe jetzt eben schnell geschaut, weil ich auf dem Sprung bin, kann aber keinen großen Unterschied feststellen.
 
Opthimo schrieb:
Wo liegt da denn genau der Unterschied? Habe jetzt eben schnell geschaut, weil ich auf dem Sprung bin, kann aber keinen großen Unterschied feststellen.

Mit der einen kann man anders sein Programm abstürzen lassen als mit der anderen.

OK, Ernst beiseite: snprintf() enthält eine zusätzliche Konvention 'n' für die Länge des Puffers, in den man den String schreibt. Das soll Programmierfehler vermindern und wird als generell empfehlenswert angesehen.
 
Steht doch in der Doku ;).

The size of the buffer should be large enough to contain the entire resulting string (see snprintf for a safer version).

Du überschreibst im schlimmsten Fall den Speicher nach deinem String und weißt gar nicht was du dir damit kaputt machst. Wenn die Werte bei snprintf zu groß für den String sind macht er das nicht.
 
blöderidiot schrieb:
Mit der einen kann man anders sein Programm abstürzen lassen als mit der anderen.

Wenn Abstürze das Problem wären, Hätte ich mir gar nicht die Mühe gemacht, zu posten.
 

Ähnliche Themen

A
Antworten
22
Aufrufe
2.040
M
Antworten
4
Aufrufe
4.529
Mr. Snoot
M
Zurück
Oben