Hallo
Ich habe eine Funktion die mir Daten über ein RFM22B Modul sendet.
1
rf22_sendpacket((unsignedchar*)"Hallo",5);
das senden eines Strings klappt.
Nun will ich einen Int wert versenden. Wie konvertiere ich einen in Wert
richtig in einen char* Wert?
im Internet lese ich immer wieder was von folgende Funktion.
OK, das versteh ich, und es sollte auch funktionieren. :-)
Statt 'size' in der letzten Zeile solltest du 5 einsetzen - oder besser:
strlen(buf). Ich kenn die Funktion rf22_sendpacket nicht, vielleicht
reicht auch die Zahl 0 statt 'size'.
Falls dein Programm auf einem Mikrocontroller läuft, wunder dich nicht,
wenn sprintf() langsam arbeitet, die Funktion ist nicht sonderlich gut
dafür geeignet. Grundsätzlich ist eine Übertragung der Zahl im
Binärformat performanter - falls das in diesem Fall in Frage kommt.
hallo
leider bekomme ich über USART folgendes
00452
00453
00454
00455
00456
00457
uws
Teilweise ist ein Leerzeichen dazwischen teilweise nicht
bei rf22_sendpacket((unsigned char*)"Hallo",5)
schaut es so aus
Hallo
Hallo
Hallo
Hallo
usw
ups das *data=buf; gehört hier nicht rein.
was gibt es sonst für eine Möglichkeit??
> Teilweise ist ein Leerzeichen dazwischen teilweise nicht
zeig mal den Code.
> > rf22_sendpacket((unsigned char*)buf,size);
Hast du hier noch size stehen, oder hast du das schon korrigiert?
strlen(buf) wäre richtig.
marius schrieb:> Karl Heinz Buchegger schrieb:>>>> sprintf(char*,"%d",integer);>>>>>>>> ziemlicher Unsinn>> Kannst du das bitte konkretisieren?
Ganz einfach. Was soll das sein? Das ist noch nicht mal einigermassen
korrekte Syntax. Seit wann werden an dieser Stelle bei einem
Funktionsaufruf Datentypen angegeben?
Christoph B. schrieb:> rf22_write(0x07, 0x03); // switch to ready mode> rf22_read(0x03); // clear interrupt status> rf22_read(0x04); // clear interrupt status
Wirklich 'read'?
Ich hab keine Ahnung von den rf22-Funktionen, aber das erscheint mir
nicht logisch...
Christoph B. schrieb:> ok das klappt schonmal.
Gut.
Gibts noch ein Problem, oder wars das?
Mit itoa gehst genauso
char buf[8]; // puffer für den String
itoa( wert, buf, 10 );
rf22_sendpacket((unsigned char*)buf,strlen(buf));
itoa hat an dieser Stelle den Nachteil, oder Vorteil (je nachdem), dass
es keine führenden 0-en generiert. Und die sind auch nicht so einfach zu
ergänzen wie bei sprintf. Wenn das kein Problem ist, dann ist itoa dein
Mann.
Karl Heinz Buchegger schrieb:> Ganz einfach. Was soll das sein? Das ist noch nicht mal einigermassen> korrekte Syntax. Seit wann werden an dieser Stelle bei einem> Funktionsaufruf Datentypen angegeben?
Bleib mal ganz ruhig. Er wollte damit sicherlich nur den Datentyp der
einzusetztenden Variable angeben. So hab ich es zumindest verstanden.
Christoph B. schrieb:> das problem mit den Leerstellen bleibt.
Von wo wird die Funktion aufgerufen?
Aus der Funktion stammen die Leerzeichen nicht (genausowenig wie die
Zeilenvorschübe)
Karl Heinz Buchegger schrieb:> Ganz einfach. Was soll das sein?
Das war ein Beispiel, was Christoph W. anscheinend verstanden und
angewendet hat. Funktioniert hat es anscheinend auch und das Problem ist
gelöst.
Manchmal ist ein durchdachtes Beispiel eben sinnvoller, als inhaltlich
100%ig richtiges Fachchinesisch. Auch wenns evtl am Ego kratzt...
Karl Heinz Buchegger schrieb:> Aus der Funktion stammen die Leerzeichen nicht (genausowenig wie die> Zeilenvorschübe)
Seh ich genauso. Ich könnt mir denken, dass das Programm, das für den
Empfang der Daten verwendet wird, automatisch einen Zeilenvorschub
einfügt, wenn ein paar Millisekunden lang keine neuen Daten kommen.
marius schrieb:> Karl Heinz Buchegger schrieb:>> Ganz einfach. Was soll das sein?>> Das war ein Beispiel, was Christoph W. anscheinend verstanden und> angewendet hat.
Das glaub ich nicht
Er hat sein Posting mitlerweile verändert, die ursprüngliche Antwort auf
dein Posting war: Da bekomme ich aber 6 Fehler
> Manchmal ist ein durchdachtes Beispiel eben sinnvoller, als> inhaltlich 100%ig richtiges Fachchinesisch.
Eben. Pass dein Beispiel auf die Variablen an, die er benutzt und gut
ists.
Damit, dass du deine eigenen Syntaxabkürzungen verwendest, hilfst du
keinem