LCD屏应用层 设备文件是 /dev/fb0(设备节点)
可以通过api函数获取屏幕的相关参数----ioctl
相关应用层开发求助与网络方法(framebuffer应用层开发)
在应用层是不会直接操作LCD设备文件,是通过LCD屏幕的映射内存进行操作,进而操作LCD屏
方法:采用映射方式,将屏幕映射到当前进程空间 利用mmap函数
之后就可以在屏幕中进行写入操作。
不仅仅可以映射设备文件也可以映射普通文件
eg:w.c
#include <stdio.h>
#include <string.h>
#include <sys/mman.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
/*
LCD屏(framebuffer)应用层 设备文件一般为/dev/fb0
获取屏幕的参数 使用ioctrl
应用层使用read即可
操作:采用内存映射方式,将屏幕映射到当前进程空间api--mmap
适用于屏幕
通过内存映射的方式写入内容 内采映射api-mmap
*/
int main()
{
int fd = open("1.txt",O_RDWR);//先打开相应的文件
char *addr =(char *)mmap(NULL,1024,PROT_READ|PROT_WRITE,MAP_SHARED,fd,0);
/*mmap参数------注意不能映射空文件
1.映射的起始地址,一般为NULL,让内和自动选择
2.映射的长度
3.操作方式
4.共享还是私有
5.指定的文件描述符
6.偏移量
*/
if(addr == (void *)-1)//判断内存映射是否成功
{
perror("mmap");
return -1;
}
memset(addr,0,1024);//将开辟的映射空间先进行清0
char buf[100];
while(1)
{
scanf("%s",buf);
strcat(addr,buf);
}
return 0;
}
r.c
#include <stdio.h>
#include <string.h>
#include <sys/mman.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
/*
LCD屏(framebuffer)应用层 设备文件一般为/dev/fb0
获取屏幕的参数 使用ioctrl
应用层使用read即可
操作:采用内存映射方式,将屏幕映射到当前进程空间api--mmap
适用于屏幕
通过内存映射的方式写入内容 内采映射api-mmap
*/
int main()
{
int fd = open("1.txt",O_RDWR);//先打开相应的文件
char *addr =(char *)mmap(NULL,1024,PROT_READ|PROT_WRITE,MAP_SHARED,fd,0);
/*mmap参数------注意不能映射空文件
1.映射的起始地址,一般为NULL,让内和自动选择
2.映射的长度
3.操作方式
4.共享还是私有 共享属于直接操作源文件 私有相当于拷贝一份文件进行操作,并没有操作到源文件
5.指定的文件描述符
6.偏移量
*/
if(addr == (void *)-1)//判断内存映射是否成功
{
perror("mmap");
return -1;
}
getchar();
while(1)
{
printf("%s\n",addr);
sleep(1);
}
return 0;
}