Print_String für GLCD?

Gast #61586
Lesenswert?
• ▲
▼
Hi,
ich bin momentan dabei für mein Graphik-Display diverse routinen zu
schreiben. Ich hänge nun an einer Print_String routine. Die print_char
klappt prima, nun versuche ich diese mit print_string aufzurufen und
ein charakter nach dem anderen zu übergeben. Klappt jedoch leider
nicht. Das Display giebt nur eine "8" aus.
Den wichtigsten code hier: (den gesammten im dateianhang)

void print_char (int c)
{
int i;
 for(i=0; i<5; i++)
  {
  send_data(Font5x7[((c - 0x20) * 5) + i]);
  current_line ++;
  }
send_data(0x00);
current_line ++;
}

void print_string(int *text)
{
int i;
for(i=0; i<5; i++)
  {
   print_char(text[i]);
  }
}

[...]
char text[32];
[...]
text[0] ="Hallo";
set_pos(1,0);
print_string(text);

Villeicht hat jemand ne Idee und lust mir zu helfen. Danke!
Angehängte Dateien:
Gast #61587
Lesenswert?
• ▲
▼
Hallo Markus,

ich bin zwar kein profi, aber ich glaube mich noch dunkel daran
erinnern zu können, dass ein String nur bei der Definition an ein
charrakterarray übergeben werden kann. Danach muss man den String in
das char-array zeichenweise kopieren ( strcpy(); ).

Der print_string-Routine übergibst du einen Zeiger vom typ "char".
Geschrieben hast du jedoch "int". ( void print_string(char *text) )

Das müsste es eigentlich gewesen sein.

MfG Freddy
Gast #61588
Lesenswert?
• ▲
▼
So,
Ich habe nun nach langem rumprobieren eine Lösung gefunden:
void print_char (int c)
{
int i;
 for(i=0; i<5; i++)
  {
  send_data(Font5x7[((c - 0x20) * 5) + i]);
  current_line ++;
  }
send_data(0x00);
current_line ++;
}

void print_string(char *data)
{
int i,x;
x = strlen(data);

for(i=0;i<=x; i++)
  {
  print_char(*data);
  data ++;
  }
}
[..]
char text[21] = "Ein superlanger Test";
print_string(text);

Das Fuktioniert zwar, aber so ganz Glücklich binn ich noch nicht
darüber. Weiss jemand wie die lcd_putsf Funktion von CodeVision AVR
genau funktioniert? Da kann ich den string nämlich direckt mit dem
Funktionsaufruf angeben. So: lcd_putsf("Das ist ein Test");
Das hätte ich auch gerne für mein Graphik-Display, bekomm es aber nicht
hin. :-(

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren