Hallo, das TFT-Display eDIPTFT43-A liefert bei der Hardcopyfunktion Bilder im G16-Format (ein Demobild im Anhang). Es gibt vom Displayhersteller einen Bildeditor, mit dem man die Bilder öffnen und als Bitmap (*.BMP) speichern kann. Dieser Zwischenschritt ist etwas lästig... Hat jemand eine Beschreibung, wie dieses G16-Format aufgebaut ist? Ich habe im Internet keinen vernünftigen Treffer gefunden. Im Editor-Programm wird dieses merkwürdige Format als "Bitmap/Animation/Font (*.G16)" angezeigt. Oder noch besser: hat jemand mal eine Routine geschrieben, mit der man das G16-Format in ein BMP konvertieren kann? Ich würde diese gerne in meinem ATmega128 laufen lassen, sofern es nicht zu sehr kompliziert ist. Beim blau-weißen Display vom selben Hersteller habe ich eine Routine geschrieben, die das interne BLH-Format in BMP´s konvertiert (siehe Anhang). Gruß Martin
Häng doch mal ein *.G16 mit der konvertierten *.bmp dran. Vieleicht ist das Format recht einfach zu entschlüsseln.
anbei die Demodatei als BMP (es handelt sich um ein Demobild des Displayherstellers).
Nachtrag: Das Forumprogramm hat aus dem BMP ein PNG gemacht. Nun das BMP als Textdatei (Datei umbenannt)
Beim Hersteller steht was vom RLE "Run Length Encoding" Format. Ist also komprimiert. Das wird dann doch nicht so einfach :(
ich habe ein externes RAM auf dem Board, da könnte ich die decodierte RLE-Bilddatei zwischenspeichern und anschließend ein BMP draus machen. Oder wenn das externe RAM nicht groß genug wäre: eine SD-Karte hängt auch noch am AVR.
herstellersoftware installieren. in einem unterverzeichnis ist eine textdatei mit der beschreibung des formats
> eDIPTFT43-A liefert bei der Hardcopyfunktion Bilder im
G16-Format
ist aber nicht mit RLE
@kleiner hunger: danke für den Hinweis. Ich hatte nur bei den Beispieldateien geschaut, die das Installationsprogramm in "eigene Dateien" ablegt. Ich habe die Datei mal angehängt. Mal schauen, wie ich das mit der Konvertierung im AVR hin bekomme....
Da du ja nur ein spezielles Format konvertieren willst würde ich es folgendermaßen machen: Ein Bild von Display erzeugen, in BMP wandeln. Dann jeweils den Header vom Bild wegwerfen (der wird wohl immer gleich sein) und für die Konvertierung einfach den header des BMP rauschreiben + der dekomprimierten RLE Daten.
Habe es nun fast geschafft: Die Daten aus dem Display kommen nicht in RLE codiert raus, das macht die Sache einfacher. Wenn man eine Zeile scannt, deren Pixelanzahl ein Vielfaches von 4 ist, sind die Daten bei BMP und G16 identisch. Man muß nur das Bild zeilenmäßig von unten nach oben scannen, da das Bild sonst auf dem Kopf steht. Bisher habe ich folgendes getestet: * blaues Bild mit ein paar einzelnen farbigen Pixeln auf dem Display ausgegeben * BMP-Header vom AVR auf der Schnittstelle zum PC ausgegeben (Längenangaben usw. sind bisher noch fest im Programm hinterlegt) * die obersten 2 Zeilen "gescannt" und über den AVR auf der Schnittstelle zum PC ausgegeben. Die Ausgabe erfolgt direkt, der Zwischenschritt über das externe RAM wird nicht benötigt. Geht bisher prima. Nächstes Wochenende werde ich versuchen, die restlichen Zeilen auf der Schnittstelle zum PC auszugeben. Mal sehen wie das mit den Farbangaben im Header des BMP ist. Ich befürchte, man muß dort alle Farben definieren, die in dem Bild vorkommen. Nochmals danke für die Hilfen und Tipps.
Hallo Martin, kurze Frage: Hast du die Routine noch irgendwo bzw. stellst du sie zur Verfügung? (Welcher Anhang war gemeint?) Martin M. schrieb: > Beim blau-weißen Display vom selben Hersteller habe ich eine Routine > geschrieben, die das interne BLH-Format in BMP´s konvertiert (siehe > Anhang). Herzlichen Dank und Gruß, Iris
Hallo Iris, mit Anhang habe ich eigentlich das Bild "einstellen_zeiten.png" gemeint und nicht den Quellcode. Das mit dem blauweißen Display ist schon ewig her. Anbei ein Auszug aus der Software. Nicht gerade professionell programmiert... Das Display hat irgend wann mal nicht mehr die Daten einer ganzen Zeile ausgespuckt. Ursache war damals total unklar. Daher mußte ich die Daten einer Zeile in mehrere Teilstücke zerlegen. Das macht den Quellcode nicht gerade übersichtlich. Soweit ich mich erinnere, muß man erst einen Header auf der Schnittstelle ausgeben, dann Zeile für Zeile scannen und ausgeben. Wichtig ist, daß es glaub von unten nach oben gescannt wird, sonst steht das BMP auf dem Kopf. Gruß Martin
herstellersoftware installieren. in einem unterverzeichnis ist eine textdatei mit der beschreibung des formats Ist das eine Vermutung oder Tatsache? Gibt es ein Gesetz welches es verbietet konkrete Informationen zur Verfügung zu stellen? Welche Datei in welchem Unterverzeichnis??
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.