⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tpxs.c

📁 通过linux的帧缓冲设备在ARM嵌入式系统的显示设备上显示图片
💻 C
字号:
#include "stdio.h"
#include "fcntl.h"
#include "linux/fb.h"
#include "sys/mman.h"
#include "sys/ioctl.h"

#define FBIO_GETSTD _IOR('F',0X25,u_int32_t)

int main()
  {
    int fbfd=0;
    struct fb_var_screeninfo vinfo;
    long int screensize=0;
    int i,x,y,std;
    
    fbfd=open("/dev/fb/0",O_RDWR);
    if(fbfd==-1)
    { 
      printf("Error:Can't open framebuffer\n");
      exit(1);
    }
    printf("The framebuffer device was opened successfully!\n");  
    
    if(ioctl(fbfd,FBIO_GETSTD,&std)==-1)
    {
      printf("Error:Get video standard from display device driver\n");
      exit(2);
    }
    
    if(ioctl(fbfd,FBIOGET_VSCREENINFO,&vinfo)==-1)
    { printf("Error:Reading variableinformation\n");
      exit(3);
    }
    
    vinfo.xres=720;
    vinfo.yres=576;
    vinfo.bits_per_pixel=16;
    if(ioctl(fbfd,FBIOPUT_VSCREENINFO,&vinfo)==-1)
    {
      printf("Set video display format failed\n");
      exit(5);
    }
    
    screensize=vinfo.xres*vinfo.yres*vinfo.bits_per_pixel/8;
    
    unsigned short *fbp=(unsigned short*)mmap(0,screensize,PROT_READ|PROT_WRITE,MAP_SHARED,fbfd,0);
    if((int)fbp==-1)
    {
      printf("Error:Failed to MAP framebuffer device to memory\n");
      exit(4);
    }
    printf("The framebuffer device was mapped to memory successfully\n");
    
    for(i=0;i<720*576;i++)
      fbp[i]=0xffff;
      
    for(y=0;y<100;y++)
      for(x=0;x<100;x++)
        {*(fbp+y*720*2+x*2+720*10+30)=0xf800;}
    printf("Video success!!!!\n");
    sleep(1);
    
    }
    
    
    
    
    


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -