如题
屏幕是480*272的电阻屏,刷屏为红色,但只有一大半是红色,直接用Qt的弄ui界面设置480*272运行却没问题。
参考了网上的文章,以下是我修改后的代码,不知道是何处出了问题?
-----------------------------------------------------------------------------------------------------------------
#include <QCoreApplication>
#include <QDebug>
#include <sys/mman.h>
#include <fcntl.h>
#include <unistd.h>
int main(int argc, char *argv[])
{
argc = argc;
argv = argv;
qint32 fd;
quint32 *mmaped = NULL;
fd = open("/dev/fb0",O_RDWR);
if(fd < 0 )
{
qDebug()<<"open fb0 fail";
return 1;
}
/* 将文件映射至进程的地址空间 */
mmaped = (quint32 *)mmap(NULL,480*272*4,PROT_READ|PROT_WRITE,MAP_SHARED,fd,0);
close(fd);
if(mmaped == ((quint32 *)-1))
{
qDebug()<<"mmap fail";
return 1;
}
for(quint32 i=0;i<480*272;i++)
{
mmaped[i] = 0x00ff0000;
}
msync(mmaped,480*272*4,MS_SYNC);
return 0;
}
-----------------------------------------------------------------------------------------------------------------
离线
用代码获取像素深度,有可能不是4个字节,或许是2个字节
离线
用代码获取像素深度,有可能不是4个字节,或许是2个字节
用 ioctl(fd,FBIOGET_VSCREENINFO,&screen_info);读出来x,y是800*480的配置。。。。
离线
改了设备树,分辨率匹配上就好了
离线