我想将framebuffer复制到运行raspbian的覆盆子pi上的LCD显示器上。为此,我使用以下代码:
#include <stdio.h>
#include <stdlib.h>
#include "RAIO8870.h"
#include <bcm_host.h>
int main(int argc, char **argv)
{
DISPMANX_DISPLAY_HANDLE_T main_display_handle;
DISPMANX_RESOURCE_HANDLE_T screen_resource_handle;
VC_RECT_T rectangle;
int ret;
uint32_t image_prt;
uint16_t image[ PICTURE_PIXELS ];
bcm_host_init();
if ( !bcm2835_init() )
return ( -1 );
TFT_init_board();
TFT_hard_reset();
RAIO_init();
RAIO_SetBacklightPWMValue( 255 );
uint32_t screen=0;
printf("Open display[%i]...\n", screen );
// open main framebuffer device
main_display_handle = vc_dispmanx_display_open( screen );
if ( !main_display_handle )
{
printf("\n Unable to open display %i Handle: %i",screen,main_display_handle);
return( -1 );
}
程序总是在if条件下退出,因为vc_dispmanx_display_open
确实返回0.我无法找到有关此函数的任何文档。
那么为什么它会返回一个无效的句柄以及如何避免这种情况呢?