Hallo,
Zitat von
Zehplusplus
SerWrite("\r\nWäremwert links:",19);
Sleep(250);
SerWrite(temps[0],9);
SerWrite("\r\nWäremwert rechts:",18);
Sleep(250);
SerWrite("temps[1]",9);
Also, Zehplusplus, erstmal, was für ein bizarre Code...
Die Definition von SerWrite lautet:
void SerWrite(unsigned char *data,unsigned char length);
D.h. *data ist der String, den du ausgeben und lenght dessen Länge.
z.B. Wenn du Hallo ausgeben willst schreibst du SerWrite("Hallo",5);
Soweit so gut, aber damit kannst du keine Zahlen ausgeben!
Wenn du zum Beispiel int meineZahl = 50; ausgeben willst, brauchst du etwa so eine Funktion (aus der AsuroLib2.7, leicht modifiziert):
Code:
void PrintInt (
int wert)
{
char text [7]; // "-12345"
itoa (wert, text, 10);
SerPrint (text);
}
void SerPrint (
char *data)
{
unsigned char i = 0;
while (data [i] != 0x00)
UartPutc (data [i++]);
}
void UartPutc (
unsigned char zeichen)
{
UCSRB = 0x08; // enable transmitter
UCSRA |= 0x40; // clear transmitter flag
while (!(UCSRA & 0x20)) // wait for empty transmit buffer
;
UDR = zeichen;
while (!(UCSRA & 0x40)) // Wait for transmit complete flag (TXC)
;
UCSRB = 0x00; // disable transmitter / powersave
}
Erklärung: die Funktion itoa in PrintInt wandelt die Zahl in einen String um, UartPutc() ist eine Methode um einzelne Zeichen zu senden, der Rest müsste klar sein
Dann musst du noch
Code:
int temperaturLinks = 50;
int temperaturRechts = 100;
SerWrite("Links:",6);
PrintInt(temperaturLinks);
SerWrite(""\n\rRechts:,9);
PrintInt(temperaturRechts);
schreiben und es erscheint
Links:50
Rechts:100
im Terminal.
ASUR0
P.S. zugegeben, deine Frage wirkt schon sehr unqualifiziert und du hast Glück dass mir gerade langweilig war...
Lesezeichen