Forum: Mikrocontroller und Digitale Elektronik char an Funktion übergeben


von Johannes (Gast)


Lesenswert?

Hallo, ich möchte einen text und eine Zahl einer FUnktion übergeben. 
Diese funktion soll diese sachen dann auf ein display anzeigen
1
void writeDisplay(unsigned char Tx[16], unsigned int Rx)//Display Data on the LCD
2
{
3
    unsigned int i, n, temp;
4
    send_command_byte(0x02); // first line
5
    for (n=0; n<'\''; n++) send_data_byte(Tx[n]);
6
7
8
    send_command_byte(0xC0); // second line
9
    temp = Rx;
10
    for (i=0; i<16; i++) {
11
        line2[15 - i] = temp % 2 + 48;
12
        temp = temp / 2;
13
    }
14
    for (n=0 ; n<=16 ; ++n) send_data_byte(line2[n]);
15
}

aufgerufen wird das ganze mit
1
"writeDisplay("Hallo",123);

jedoch bekomme ich den Fehler
Main.c:72:11: error: incompatible types when assigning to type 'unsigned 
char[16]' from type 'unsigned char *'

am anfang habe ich schon
1
unsigned char line1[16];
2
unsigned int line2[16];
erstellt.
also eigentlich sollte er alles kennen.

Wenn ich in der FUnktion nur
1
    send_command_byte(0x02); // first line
2
    for (n=0; n<'\''; n++) send_data_byte(line1[n]);
schreibe und in line1 vorher etwas reinschreibe, zeigt er es mir richtig 
auf dem display an. jetzt möchte ich aber gerne den Text variable halten 
und der Funktion mit übergeben.

muss ich da noch etwas ändern?
ich denke schon, sonst käme ja kein Fehler. Jedoch habe ich keinen 
schimmer was ich ändern soll.

Johannes

von Peter II (Gast)


Lesenswert?

Johannes schrieb:
> muss ich da noch etwas ändern?
1
void writeDisplay(char* Tx, unsigned int Rx)

das ist vermutlich auch falsch

1
for (n=0; n<'\''; n++)

von Decius (Gast)


Lesenswert?

Nimm mal das unsigned beim char weg! Schreib nur "char".

von Decius (Gast)


Lesenswert?

Grr. Hab durch den Zeilenumbruch zu spät gesehen, das vor dem char[16] 
auch ein unsigned stand.

von Johannes (Gast)


Lesenswert?

peter || hatte recht.
das
1
for (n=0; n<'\''; n++)
hatte eigentlich funktioniert. so war es egal, wie viele zeigen 
dargestellt werden sollen, die restlichen waren lehr. jetzt zeigt er mir 
komische symbole an. und mit
1
for (n=0; n<=sizeof(Tx); n++)
werden nicht alle zeichen dargestellt.
aber danke für die Hinweise

von Peter II (Gast)


Lesenswert?

Johannes schrieb:
> for (n=0; n<'\''; n++) hatte eigentlich funktioniert. so war es egal,
> wie viele zeigen
> dargestellt werden sollen, die restlichen waren lehr. jetzt zeigt er mir
> komische symbole an. und mitfor (n=0; n<=sizeof(Tx); n++) werden nicht
> alle zeichen dargestellt.
> aber danke für die Hinweise

sizeof(Tx) ist genauso falsch an diese stelle.
Was wolltest du überhaupt mit '\'' erreichen?

eigentlich macht man es so
1
char* tmp = Tx;
2
while( *tmp ) {
3
   send_data_byte(*tmp);
4
   tmp++;
5
}

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.