Wie kann ich ein MultiArray als String ausgeben?
-
Hallo,
ich habe folgendes Problem, ich möchte einzelne Strings aus einem MultArray Char über UART ausgeben bekomme aber keinen Inhalt angezeigt.
for (z=0; z<7;z++) { Uart_SendString(debugUart, InputData[z][0]); Uart_SendString(debugUart, "\r\n"); }
In InputData sind ASCII-Daten hinterlegt wie z.B:
InputData[0][16]="Testdaten 1"
InputData[1][16]="Testdaten 2"
InputData[2][16]="Testdaten 3"
InputData[3][16]="Testdaten 4"
usw.Die Ausgaberoutine:
void Uart_SendString(const char uart, const char *string) // Puts a String to UART { char c; while (*string) // go through string { c = *string++; if (c == 10) // DOS-<Return> Uart_SendByte(uart, 13); Uart_SendByte(uart, c); } }
Die Ausgaberoutine funktioniert einwandfrei mit z.B.:
Uart_SendString(8, "\n\nWelcome to UART8!\n\n");
Wie mache ich es richtig?
Gruß
Jackson
-
InputData[0][16]="Testdaten 1"
sieht mir nach einer komplett falschen Zuweisung aus.
Könntest du mal den gesamten Code (inkl. Deklaration der Variablen InputData) posten?
-
InputData[0][16]="Testdaten 1"
sollte auch mehr als Beispiel dienen, InputData[x][y] wird komplett anders erzeugt:
void Receive(line) { volatile unsigned char c,i,ret; volatile unsigned char pointer=0; for (i=0; i<line; i++) { for(;;) { c=Uart_ReceiveByte_Wait(7); // Byte Empfangen if ((c!='\r') && (c!='\n')) { InputData[i][pointer]=c; pointer++; ret=0; } else if (c=='\r') { ret=1; } else if ((c=='\n') && (ret==1)) { InputData[i][pointer]=0x00; ret=0; pointer=0; break; } } } }
-
Die Definition von InputData wäre hilfreicher.
Ich nehme mal an irgendwas mit
char InputData[X][Y];
Dann ist InputData[i][pointer] ein Zeichen.
Wenn du den String haben willst, musst du den letzten Index weg lassen.puts (InputData[i]);
-
manchmal ist doch ganz einfach...
Danke das klappt!
-
Aber wie konnte das denn dann kompilieren (char vs. const char*)? Oder hast du die Warnungen nicht aktiviert?
PS: Alternativ ginge statt
InputData[i]
auch
&InputData[i][0]
- damit du verstehst was der Ausdruck bedeutet