找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5134|回复: 0
收起左侧

linux+ARM6818开发板电子相册源程序

[复制链接]
ID:668660 发表于 2019-12-19 20:21 | 显示全部楼层 |阅读模式
可以简单的实现电子相册的浏览图片的功能,同时也可以通过往目标文件夹中添加图片文件来浏览

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, 下载次数: 119)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表