可以简单的实现电子相册的浏览图片的功能,同时也可以通过往目标文件夹中添加图片文件来浏览
1、linux下 一切皆是文件
那么对于屏幕的操作也是文件操作 只不过这个文件是一个设备
所以屏幕操作分为以下几步:
//第一步:打开
//第二步:写数据
//第三步:关闭文件
2、屏幕介绍:
800*480 32位真彩色
800*480 表示片屏幕大小 单位是像素 480行 每一行 800个像素点
32位真彩色 每一个像素点是由32位数据表示的
对应4字节 分别为 a透明度 r red g green b blue
3、屏幕文件所在路径
/dev/fb0
4、颜色对照表 是24位的没有透明度
显示时将透明度补充为00 即可
5、bmp图片简介
bmp图片是windows下标准的位图格式
位图就是显示在屏幕像素上的点一位位数据表示出来 不经过任何压缩算法 所以
bmp图片一般比较大
800*480 32位图 的大小为 800*480*4+54 个字节
每一张bmp图片都有54字节的文件头 其决定文件的类型 大小 色深等信息
接下来我们看以下具体的内容:
见图片
作业:将项目中读取文件列表 与今日内容整合 实现 自动循环播放 24位bmp图
请实现32位的bmp图
6、通过触摸屏切换显示
linux输入子系统:
linux下的输入设备主要有: 键盘 鼠标 麦、写字板、触摸屏等等
linux将所有的输入设备归于一个驱动设备文件管理 该设备被称之为 事件文件 位于
GEC210 位于 /dev/event0
GEC6818 位于 /dev/input/event0
在linux下获取输入事件其本质就是在输入设备文件中读取数据 而这个数据的格式由输入子系统决定 本质就是一个结构体
即struct input_event
该结构体位于 linux/input.h头文件下!
结构体解析:
struct input_event{
struct timeval time; //事件触发的时间
_u16 type;
表示输入事件的类型
_u16 code;
表示输入事件的数据即输入事件类型的子集
_s32 value; //值 子集对应的键值
}
type: 取值有以下几个:
#define EV_SYN 0x00 表示同步事件
#define EV_KEY 0x01 表示按键事件 //键盘
#define EV_REL 0x02 表示相对事件 //鼠标
#define EV_ABS 0x03 表示绝对事件 //触摸屏
根据type的取值不同 code取值也不同
如果type == EV_KEY
code 取值如下
KEY_A 按键A
KEY_B 按键B
......
如果type == EV_ABS
code取值如下:
#define ABS_X 0x00 表示触摸屏x轴坐标
#define ABS_Y 0x01 表示触摸屏y轴坐标
#define ABS_PRESSURE 0x18 表示触摸点的压力 用来判断是按下还是离开
压力值是一个量化值:
对于value而言 type和code的值共同决定其值的含义:
如果type == EV_ABS && code == ABS_x 则 value就是x轴的坐标
如果type == EV_ABS && code == ABS_Y 则 value就是Y轴的坐标
如果type == EV_ABS && code == ABS_PRESSURE 则 value就是压力值的大小 value == 0 表示离开 value > 0表示按下
如果type == EV_KEY && code == KEY_A 则value对应 按键键值 1 表示按下 0表示松开
注意: 6818开发板将 压力值归为EV_KEY中 即0x01 中 压力值的宏为 0x14a
//第一步:打开触摸屏
//第二步:读取数据
//第三步:解析
//第四步从第二步开始循环
直到一次操作完位置
思考: 怎么判断一次操作的开始 当第一次value>0 就按下
结束 当第一次value == 0就是离开
全部资料51hei下载地址:
项目电子相册.zip
(1.13 MB, 下载次数: 120)
|