如何在Verifone VX 520屏幕上显示位图图像

far*_*hid 5 point-of-sale verifone

我正在尝试在Verifone VX 520屏幕上显示位图图像.

我尝试使用该put_BMP()功能,但它返回-1,图像不显示.图像为单色,128x128像素.这是代码:

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

我该如何做到这一点?

Dav*_*vid 12

以下是一些要检查的事项:

1)"[ put_BMP()]仅在像素模式下可用." 要将终端设置为像素模式,请调用完成时set_display_coordinate_mode(PIXEL_MODE); 不要忘记通过调用将其恢复set_display_coordinate_mode(CHARACTER_MODE);.

2)"文件必须是未压缩的."

3)"文件必须是单色或4级灰色." (我看到你这样做了)

4) "该文件应是128个像素宽,或者64个像素高(Vx510,570,610)或128个象素高(Vx的670)." 请注意,520不在此列表中,但520和570在许多方面非常相似,屏幕大小是其中之一.如果你使用128像素高的图片,你只会看到它的前1/2.

5)另外,不要忘记将文件复制到终端 - 我这样做的次数比我承认的要多.

以下代码:

set_display_coordinate_mode(PIXEL_MODE);
put_BMP("StackOverflow.bmp");
set_display_coordinate_mode(CHARACTER_MODE);
Run Code Online (Sandbox Code Playgroud)

使用128 x 64像素的徽标,结果如下:

put_BMP结果

  • 我所知道的是,处理操作原始像素的API需要PIXEL_MODE,而使用ASCII字符操作屏幕的API需要CHARACTER_MODE.我猜想那些不与控制台交互的API并不关心你所处的模式,但我从未尝试过它.我可以肯定地说,CHARACTER_MODE是默认设置,适用于绝大多数的呼叫.对不起,这是我的最佳答案...... (2认同)