转自:http://blog.csdn.net/figthter_cui/article/details/6145272

版权声明:本文为博主原创文章,未经博主允许不得转载。

今天为了测试我的LCD有没有坏点写了一个简单的刷屏程序,效果还不错,分析给大家。代码如下:

#include <unistd.h>
#include <stdio.h>
#include <fcntl.h>
#include <linux/fb.h>
#include <sys/mman.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>

int main(int argc,char *argv[])
{
 int fbfd = 0;
 struct fb_var_screeninfo vinfo;
 struct fb_fix_screeninfo finfo;
 long int screensize = 0;
 char *fbp = 0;
 char inbuf[240*320*2];
    int i = 0;
 /*open /dev/fb0 */
 fbfd = open("/dev/fb0",O_RDWR);
 if(fbfd<=0)
 {
  printf("Error:cannot open framebuffer devices./n");
  return -1;
 }
 printf("The framebuffer devices was opened successfully./n");
 /*get framebuffer infomation*/
 if(ioctl(fbfd,FBIOGET_FSCREENINFO,&finfo))
 {
  printf("Error: reanding fixed informatin./n");
  return -1;
 }
    if(ioctl(fbfd,FBIOGET_VSCREENINFO,&vinfo))
     {
   printf("Error: reanding var informatin./n");
   return -1;
  }
 
 /*set screensiez*/
 screensize = vinfo.xres*vinfo.yres*vinfo.bits_per_pixel/8;
    /*mmap*/
 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");
   return -4;
 }
    
  printf(" The framebuffer device was mapped to memory sucessfully./n");
  memcpy(inbuf,fbp,screensize);//保存刷屏前显存中的数据
     for(i = 0;i<0xff;i++)
  {
   memset(fbp,i,screensize);
   sleep(1);
  }
   memcpy(fbp,inbuf,screensize);//将保存的显存数据复原回去
   munmap(fbp,screensize);
  printf("The framebuffer device was munmaped successfully./n");
  close(fbfd);
  printf("The framebuffer device was closed successfully./n");
  return 0;

}

最新文章

  1. QT操作EXCEL
  2. PostgreSQL保存文件到数据库
  3. /proc/sysrq-trigger该文件能做些什么事情-转载
  4. 【javascript激增的思考01】模块化编程
  5. Listbox与Listbox with key的区别
  6. 易出错的C语言题目之二:指针
  7. Linux--Ubuntu中文文件夹转英文
  8. Android Support Font 安卓系统支持字体(配图)
  9. Comparison of B-Tree and Hash Indexes
  10. Android 上的代码阅读器 CoderBrowserHD 修改支持 go 语言代码
  11. vs2010 编译curl-7.42.1
  12. BYTE、WORD与DWORD类型
  13. 使用Keil软件编写汇编源程序应注意事项
  14. //读取配置文件(属性文件)的工具类-ConfigManager
  15. Crossin 8-3;8-4
  16. sed命令详解 vim高级技巧 shell编程上
  17. sublime 学习笔记
  18. nginx添加ssl证书
  19. 微信授权(Net Mvc)
  20. 大数据开发实战:Stream SQL实时开发三

热门文章

  1. PHP.27-TP框架商城应用实例-后台4-使用Gii生成品牌表的代码
  2. 途牛banner自动轮播
  3. 通过slf4j/log4j的MDC/NDC 实现日志追踪
  4. PyCharm 解决有些库(函数)没有代码提示
  5. 六 APPIUM Android 定位方式
  6. 更改maven本地仓库地址
  7. Oracle 学习----:ora-00054 资源正忙 ,但指定以nowait方式获取资源 ,或者超时失效---解决方法
  8. CandyCrush 糖果传奇
  9. (转\整)UE4游戏优化 多人大地型游戏的优化(一)游戏线程的优化
  10. try-catch-finally容易犯的错误