Forum: Mikrocontroller und Digitale Elektronik Anfängerfrage zu Strings am LCD


von Jura (Gast)


Lesenswert?

Ich versuche zwei Strings am LCD ausgeben.
Die erste Zeile wird am LCD ausgegeben. Die zweite gar nicht. Warum?
1
void item_ausgabe(void)
2
{
3
  char zahl[16]="HALLO";
4
  lcd_clear();
5
  lcd_setcursor( 0, 1 );
6
   lcd_string("Hallo"); // Ausgabe der 1. Zeile
7
   
8
  lcd_setcursor( 0, 2 );
9
  lcd_string(zahl); // Ausgabe der 2. Zeile
10
}

1
void lcd_string( const char *data )
2
{
3
  while( *data != '\0' )
4
  lcd_data( *data++ );
5
}

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Hat das Display drei Zeilen?

Jura schrieb:
> lcd_setcursor( 0, 2 );

Was geschieht, wenn Du daraus

> lcd_setcursor( 0, 0 );

machst?

von Christian S. (roehrenvorheizer)


Lesenswert?

Hallo,

was passiert, wenn Du schreibst:

lcd_string (&zahl);


MfG

von Jura (Gast)


Lesenswert?

Christian S. schrieb:
> lcd_string (&zahl);

O man, danke!, tatsächlich der Adressoperator)

Der Compiler meckert aber etwas:
Warning  1  passing argument 1 of 'lcd_string' from incompatible pointer 
type [enabled by default]

von Jay K. (deeplyembedded)


Lesenswert?

Christian S. schrieb:
> Hallo,
>
> was passiert, wenn Du schreibst:
>
> lcd_string (&zahl);
>
>
> MfG

Naja da Array entweder &zahl[0] übergeben oder zahl[0].

Dann wird der Compiler nur noch meckern weil &zahl[0] vom Typ char* ist 
und nicht const char* wie von der Funktion lcd_string erwartet

von Christian S. (roehrenvorheizer)


Lesenswert?

&

Weiß noch jemand, wie man die Fehlermeldung weg bekommt? Liegt das an 
dem const?

von Jay K. (deeplyembedded)


Lesenswert?

Jay K. schrieb:
> Christian S. schrieb:
>> Hallo,
>>
>> was passiert, wenn Du schreibst:
>>
>> lcd_string (&zahl);
>>
>>
>> MfG
>
> Naja da Array entweder &zahl[0] übergeben oder zahl[0].
>
> Dann wird der Compiler nur noch meckern weil &zahl[0] vom Typ char* ist
> und nicht const char* wie von der Funktion lcd_string erwartet

Copy paste-Fehler:

Naja da Array entweder &zahl[0] übergeben oder zahl (Name des Arrays 
zerfällt zu pointer auf das erste Element.

von Jura (Gast)


Lesenswert?

Danke für die Hilfe.

Wie ist es wenn ich einen Text im Array, der in einer Struktur 
gespeichert ist ausgeben möchte.
1
struct item 
2
{
3
  char zeile_eins[16];  // Ausgabe der 1. Zeile
4
  char zeile_zwei[16];  // Ausgabe der 2. Zeile
5
  uint8_t wert;  // Aktueller Wert der Einstellung
6
};
7
8
  struct item a10 =
9
  {
10
    "Anzahl Schritte",
11
    "4",
12
    4,
13
    
14
  };

So geht es nicht
1
  lcd_string(a10.zeile_eins); // Ausgabe der 2. Zeile


Der Versuch den String in eine Hilfsariable zu kopieren und diese dann 
auszugeben scheitert ebenfalls.
1
  char zahl[16];
2
  strcpy(zahl, a10.zeile_eins[0]);

Ich muss dringend meine C-Kenntnise auffrischen, aber wenn jemand helfen 
kann, bitte ich darum)

von Jura (Gast)


Lesenswert?

ok habs, es war ein Problem mit den Strukturinitialisierung, es waren 
keine Werte drin(

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.