Forum: Mikrocontroller und Digitale Elektronik Print_String für GLCD?


von Markus Kempf (Gast)


Angehängte Dateien:

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!

von Freddy (Gast)


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

von Markus Kempf (Gast)


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. :-(

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.