• 大小: 10KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-10
  • 语言: 其他
  • 标签: linux  fb  帧缓冲  

资源简介

linux fb-test-帧缓冲 两个例子(完整源代码),在Ubuntu上实验通过。

资源截图

代码片段和文件信息

#if 0
#include 
#include 
#include 
#include 
#include 
#include 

int main()
{
    int fbfd = 0;
    struct fb_var_screeninfo vinfo;
    struct fb_fix_screeninfo finfo;
    long int screensize = 0;
    char *fbp = 0;
    int x = 0 y = 0;
    long int location = 0;
    fbfd = open(“/dev/fb0“ O_RDWR);
    if (!fbfd) {
        printf(“Error: cannot open framebuffer device.\n“);
        exit(1);
    }
    printf(“The framebuffer device was opened successfully.\n“);
    if (ioctl(fbfd FBIOGET_FSCREENINFO &finfo)) {
        printf(“Error reading fixed information.\n“);
        exit(2);
    }
    if (ioctl(fbfd FBIOGET_VSCREENINFO &vinfo)) {
        printf(“Error reading variable information.\n“);
        exit(3);
    }
    printf(“%dx%d %dbpp\n“ vinfo.xres vinfo.yres vinfo.bits_per_pixel );
    screensize = vinfo.xres * vinfo.yres * vinfo.bits_per_pixel / 8;
    fbp = (char *)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(“lsq--1->The framebuffer device was mapped to memory successfully.\n“);
    x = 100;
    y = 100;
    for ( y = 100; y < 300; y++ )
        for ( x = 100; x < 300; x++ ) {
            location = (x + vinfo.xoffset) * (vinfo.bits_per_pixel / 8) +
                       (y + vinfo.yoffset) * finfo.line_length;
            if ( vinfo.bits_per_pixel == 32 ) {
                *(fbp + location) = 100;
                *(fbp + location + 1) = 15 + (x - 100) / 2;
                *(fbp + location + 2) = 200 - (y - 100) / 5;
                *(fbp + location + 3) = 0;
            } else  {
                int b = 10;
                int g = (x - 100) / 6;
                int r = 31 - (y - 100) / 16;
                unsigned short int t = r << 11 | g << 5 | b;
                *((unsigned short int*)(fbp + location)) = t;
            }
        }
    munmap(fbp screensize);
    close(fbfd);
    printf(“lsq--2->  close(fbfd).\n“);
    return 0;
}

#endif

#include 
#include 
 #include 
 #include 
 #include 
 #include 
 #include 

 int main()
 {
     int fbfd = 0;
     struct fb_var_screeninfo vinfo;
     struct fb_fix_screeninfo finfo;
     long int screensize = 0;
     char *fbp = 0;
     int x = 0 y = 0;
     long int location = 0;
     int startx=0 starty=0;
     int width height;

     // Open the file for reading and writing
     fbfd = open(“/dev/fb0“ O_RDWR);
     if (fbfd == -1) {
         perror(“Error: cannot open framebuffer device“);
         exit(1);
     }
     printf(“The framebuffer device was opened successfully.\n“);

     // Get fixed screen information
     if (ioctl(fbfd FBIOGET_FSCREENINFO &finfo) == -1) {
         perror(“Error reading fixed information“);
         exit(2);
     }

     // Get variable sc

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       4925  2017-05-12 15:23  linux fb-test-帧缓冲 两个例子(完整源代码)\fb-test1.c

     文件       1945  2017-05-12 15:16  linux fb-test-帧缓冲 两个例子(完整源代码)\fb-tst2.c

     文件      13224  2017-05-12 15:23  linux fb-test-帧缓冲 两个例子(完整源代码)\test1

     文件       9344  2017-05-12 15:22  linux fb-test-帧缓冲 两个例子(完整源代码)\test2

     文件        724  2017-05-12 16:03  linux fb-test-帧缓冲 两个例子(完整源代码)\在Ubuntu16.04系统下测试帧缓冲(frame buffer)的说明.txt

     目录          0  2017-06-18 18:05  linux fb-test-帧缓冲 两个例子(完整源代码)

----------- ---------  ---------- -----  ----

                30162                    6


评论

共有 条评论