2015-06-06 6 views
5

Ich versuche, ein Bitmap-Bild auf einem Verifone VX 520-Bildschirm anzuzeigen.So zeigen Sie ein Bitmap-Bild auf dem Verifone VX 520-Bildschirm an

Ich habe versucht, mit der put_BMP() Funktion, aber es gibt -1 zurück und das Bild wird nicht angezeigt. Das Bild ist einfarbig und 128x128 Pixel. Hier ist der Code:

int main() { 
    char bg[] = "background.bmp"; 
    int display = open(DEV_CONSOLE, O_WRONLY); 
    put_BMP(bg); 
    return 0; 
} 

Wie bewerkstellige ich das?

+1

was errno Satz ist? – David

Antwort

12

Hier sind einige Dinge zu überprüfen: "[put_BMP()] nur in Pixel-Modus verfügbar ist"

1) Um das Terminal in den Pixelmodus zu versetzen, rufen Sie set_display_coordinate_mode(PIXEL_MODE); an. Vergessen Sie nicht, es zurückzusetzen, indem Sie set_display_coordinate_mode(CHARACTER_MODE); aufrufen, wenn Sie fertig sind.

2) "Die Datei muss unkomprimiert sein."

3) "Die Datei muss monochrom oder 4-Level-Grau sein." (Ich sehe, Sie tun dies)

4) "Die Datei 128 Pixel sein sollte breit und entweder 64 Pixel hoch (Vx510, 570, 610) oder 128 Pixel hoch (Vx 670)." Beachten Sie, dass 520 nicht auf dieser Liste ist, jedoch sind die 520 und 570 in vielerlei Hinsicht sehr ähnlich und die Bildschirmgröße ist eine davon. Wenn Sie ein Bild verwenden, das 128 Pixel hoch ist, sehen Sie nur die obere Hälfte davon.

5) Vergessen Sie auch nicht, kopieren Sie die Datei auf das Terminal - ich mache das öfter, als ich zugeben möchte.

der folgende Code:

set_display_coordinate_mode(PIXEL_MODE); 
put_BMP("StackOverflow.bmp"); 
set_display_coordinate_mode(CHARACTER_MODE); 

verwendet ein Logo, das 128 x 64 Pixel und die Ergebnisse in ist:

put_BMP result

+1

Was ist der Unterschied zwischen CHARACTER_MODE und PIXEL_MODE? – farshid

+2

Alles, was ich weiß, ist, dass APIs, die sich mit der Manipulation roher Pixel befassen, PIXEL_MODE benötigen und APIs, die den Bildschirm mit ASCII-Zeichen manipulieren, CHARACTER_MODE erfordern. Ich gehe davon aus, dass APIs, die nicht mit der Konsole interagieren, sich nicht darum kümmern, in welchem ​​Modus Sie sich befinden, aber ich habe noch nie damit experimentiert. Was ich sicher sagen kann, ist, dass CHARACTER_MODE der Standard ist und für die überwiegende Mehrheit der Anrufe funktioniert. Es tut mir leid, dass das die beste Antwort ist, die ich habe ... – David

Verwandte Themen