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 😉


Anmelden zum Antworten