mikrocontroller.net

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


Autor: Markus Kempf (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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!

Autor: Freddy (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Markus Kempf (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.