PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Routine für eigenen Font für Grafik-LCD



malthy
25.02.2007, 20:49
Ich möchte in Bascom eine Routine für ein Grafik-LCD schreiben, mit der ich einen eigenen Font, bestehend aus kleinen Bildchen, auf dem LCD darstellen kann. Die Hardware funktioniert soweit, ich kann per $bgf eingebunde Bilder mit Showpic auf das Display zaubern. Es wäre nun natürlich sehr günstig, wenn ich nicht jedes Zeichen per if erfragen müsste, um dann das Bild darzustellen. Ich meine folgendes:

zahl=3
if zahl = 1 then
showpic x,y, eins
endif
if zahl = 2 then
showpic x,y, zwei
endif
if zahl = 3 then
showpic x,y, drei
endif
(usw.)
...
eins:
$bgf "eins.bgf"
zwei:
$bgf "zwei.bgf"
drei:
$bgf "drei.bgf"
(usw.)

schöner wäre etwas nach der folgenden Art:

zahl=3
showpic x,y, zeichen(zahl)
...
zeichen(1):
$bgf "eins.bgf"
zeichen(2):
$bgf "zwei.bgf"
zeichen(3):
$bgf "drei.bgf"
(usw.)


Das es so nicht geht ist klar. Gibt es irgendeinen Weg, zumindest dieses Prinzip zu verwenden, beispielsweise in dem man die Adressen von den Bildern herausfindet, diese in ein Array schreibt, und dieses mit dem entsprechenden Index an showpic übergibt?

Entschuldigt meine etwas seltsame Darstellung des Problems, ich hoffe man hat mich dennoch in etwa verstanden.

Vielen Dank für jede Unterstützung!
malthy

linux_80
25.02.2007, 22:12
Hallo,

Code man man mit den Code-Tags besser darstellen.

Zuerst hätte ich eine Frage:
Warum verwendest Du nicht die eingebauten Funktionen einen Zeichensatz zu verwenden.
Es gibt sogar einen Font-Editor im Bascom.
Dann ist es möglich mit den ganz normalen LCD-Befehlen und der Angabe des gewünschten Textes oder Variablen etwas auf dem LCD darzustellen.

Schau Dir mal die Beispiele unter Samples/Lcdgraph im Bascom-Verzeichnis an.

Geht dann zB mit:

Setfont font8x8
Lcdat 1 , 1 , "Text auf LCD ausgeben."
Die Position kann teilweise auch Pixelgenau angegeben werden, das hängt aber auch vom LCD-Controller und der verwendeten Lib ab.

Oder hat es einen besonderen Grund das über die Bildchen zu machen ?

Welches LCD verwendest Du, welchen Controller hat das ?

malthy
26.02.2007, 15:17
Hallo,

Erstmal vielen Dank für die Antwort! Es handelt sich um ein 240*128 Pixel Display mit einem T6963C Controller. Ich möchte sehr große Zahlen (und evnt. auch Buchstaben) darstellen, die ich bei Verwendung der eingebauten Font-Routine zusammenstückeln müsste. Außerdem wollte ich Proportional-Fonts (also unterschiedlich breite Zeichen) verwenden. Ich werde nochmal überlegen, ob ich die interne Font-Funktion benutzen kann. Aber mal angenommen ich käme zu dem Schluss, dass das nicht praktikabel ist, gibt es eine Lösung, die dem von mir o.g. Prinzip gleichkäme?

Gruß,
malte

linux_80
26.02.2007, 18:57
Wie gross man die Zeichen mit dem eingebauten Font-Editor machen kann weiss ich grad nicht, bei Showpic ist es aber auch so, das man nur jedes 8. Pixel bei der Position angeben kann (laut Hilfe), und das die grösse (länge&breite) der Grafik durch 8 Teilbar sein soll, also bringt es keinen Vorteil es über Showpic zu machen.
Das mit Proportional geht dann so auch nicht, evtl. noch jedes Zeichen direkt selber on the fly malen :-)

Mit dem Zeichensatz (Bascom-funktionen) kann man zumindest auf der X-Achse Pixelgenau positionieren.

Bastler5
27.02.2007, 09:06
Hallo zusammen!

Hilft dir der Befehl "select case" weiter?
Hab grad kein Beispiel da.
Der ist aber in der Hilfe beschrieben.

mfg bastler5