PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : WriteString mit Variable



neo3000
26.10.2010, 19:51
Hallo,

Ich möchte mit writeString einen Text und damit verbunden eine Variable ausgeben.

Bsp.: writeString_P("Batteriespannung:" ubat);

Ich weiß dass man normalerweise darunter writeInteger(ubat); schreiben würde. Es ist für mich aber notwendig alles in einer Ausgabe zu verbinden.

Wie mache ich dass ?

Danke

markusj
26.10.2010, 20:02
Hallo Markus,

entweder du baust den ganzen String via printf oder "zu Fuß" (itoa) zusammen.
Warum musst du überhaupt so einen Klimmzug machen? Beide Varianten kommen doch aufs gleiche raus - Und wenn sich ubat ändern könnte, hättest du immer noch die Möglichkeit einer lokalen Kopie ..

mfG
Markus

neo3000
26.10.2010, 20:51
Danke, das funktioniert ja schon sehr gut.
Gibt es dazu noch eine alternative die nicht so viel Speicher benötigt??

Danke

Jaecko
27.10.2010, 07:12
Zum Speicher sparen müsste man selber was aufsetzen. Printf/Sprintf zu verwenden, frisst leider unheimlich Ressourcen.

neo3000
27.10.2010, 09:42
Ich habe es jetzt geschaft, jedoch wie ich denke etwas umständlich die Daten die der RP6 an den PC schickt auszuwerten.
Hier kurz der VB.net code bzw der RP6 Code

RP6:

writeString_P("ubat");
writeInteger(ubat);
writeString_P"&H");

vb.net:

dim buffer as string
....
buffer = serialport1.readto("&H")
if buffer.startswith("ubat") then
textbox1.text = buffer.remove(0,4)
end if
....

Das ganze funktioniert ja so auch ganz gut, jedoch denke ich mir dass es da doch sicher noch eine
effizentere Methode geben sollte die daten von den ganzen Sensoren auszuwerten.

Danke

Jaecko
27.10.2010, 10:48
Wenn du alle Daten vom RP6 aus mit nem Startzeichen und dann getrennt durch z.B. Kommas schickst, also was wie #5.34,1,53,22\r\n (z.B. 5.34V, 1 Batterie drin, 53m gefahren, 22°C Temperatur etc.), und wenn die Reihenfolge/Anordnung der Daten gleich bleibt, dann könntest du am PC einfach den Befehl "Split" verwenden. Der Teilt dir dann die einzelnen Werte in nen Array auf.