粤嵌gec6818开发板自动切换图片

编程入门 行业动态 更新时间:2024-10-23 11:30:27

粤嵌gec6818<a href=https://www.elefans.com/category/jswz/34/1769228.html style=开发板自动切换图片"/>

粤嵌gec6818开发板自动切换图片

粤嵌gec6818开发板自动切换图片

#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <string.h>
#include <sys/mman.h>

void show_bmp(char path)
{
char bmp_buf[800
4803];
int lcd_buf[800
480];

bzero(bmp_buf,sizeof(bmp_buf));
bzero(lcd_buf,sizeof(lcd_buf));//1、打开LCD
int lcd_fd = open("/dev/fb0",O_RDWR);
if(lcd_fd < 0)
{perror("open LCD");return -1;
}
//2、打开图片
int bmp_fd = open("path,O_RDONLY);
if(bmp_fd < 0)
{perror("open BMP");return -2;
}//3、去掉不是像素的字节
int ret = lseek(bmp_fd,54,SEEK_SET);
if(ret < 0)
{perror("lseek");return -3;
}//4、读图片像素
int ret1 = read(bmp_fd,bmp_buf,sizeof(bmp_buf));
if(ret1 < 0)
{perror("read");return -4;
}//5、关闭图片
close(bmp_fd);//6、将RGB ----> ARGB
int i;
for(i=0; i<800*480; i++)
{lcd_buf[i] = bmp_buf[i*3]<<0 | bmp_buf[i*3+1]<<8 | bmp_buf[i*3+2]<<16;
}//7、内存映射
int *fd_map = NULL; 
fd_map = mmap(NULL,800*480*4,PROT_READ | PROT_WRITE,MAP_SHARED,lcd_fd,0);
if(fd_map == NULL)
{perror("mmap");return -1;
}	//8、将图片翻转
int x,y;
for(y=0; y<480; y++)
{for(x=0; x<800; x++){*(fd_map+(479-y)*800+x) = lcd_buf[800*y+x];}
}

​ //9、解除映射
​ munmap(fd_map,8004804);
​ //10、关闭LCD
​ close(lcd_fd);

}
int man(void){

show_bmp("./01.bmp");
sleep(1);
show_bmp("./02.bmp");
sleep(1);
show_bmp("./03.bmp");
sleep(1);

}

更多推荐

粤嵌gec6818开发板自动切换图片

本文发布于:2024-02-26 10:01:45,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1702114.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:开发板   图片   粤嵌

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!