linux下使用fb改变显示器颜色

来源:互联网 发布:mac 安全设置 编辑:程序博客网 时间:2024/05/16 15:06
有的打不开fb,你可以参考一下这个
http://blog.chinaunix.net/uid-10554711-id-2948396.html

代码如下:

#include <linux/fb.h>#include <stdio.h>#include <sys/ioctl.h>#include <linux/types.h>#include <linux/stat.h>#include <fcntl.h>#include <sys/ioctl.h>#include <linux/mman.h>#include <string.h>#include <errno.h>#include <malloc.h>int main(){//打开fb0int fb = open("/dev/fb0",O_WRONLY);if(fb < 0){printf("fail to open the file ");return -1;}struct fb_var_screeninfo var;//得到fb的相关参数if(ioctl(fb,FBIOGET_VSCREENINFO,&var) < 0){printf("fail to setup");return -1;}printf("width = %d ",var.xres);printf("height = %d ",var.yres);printf("bpp = %d\n",var.bits_per_pixel/8);//fb0的大小int size = var.xres * var.yres * (var.bits_per_pixel/8);char *ch = (char*)malloc(size);int i;/*for(i = 0 ; i < size/2;i += 2){ch[i] = 0x00;ch[i+1] = 0xf8;}*///设置颜色(此处按照16色565标准),即对ch赋值    //ps:16位对应两个字节(ch[i],ch[i+1]),赋值是反着赋值(有的不是),    //即红色对应的二进制是1111 1000 0000 0000 应该赋值ch[i]=0xf8,ch[i+1]=0x00for(i = 0;i<size;i += 2){ch[i] = 0xf8;ch[i+1] = 0x00;}//memset(ch,0xff,size);//把ch写入fb,实现改变屏幕的颜色write(fb,ch,size);//关闭fbclose(fb);return 0;}

***********************************************
在linux下测试,需要切换到文本界面(ctrl+alt+f1)

原创粉丝点击