找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 6043|回復: 0
打印 上一主題 下一主題
收起左側

linux+ARM6818開發(fā)板電子相冊源程序

[復制鏈接]
跳轉到指定樓層
樓主
ID:668660 發(fā)表于 2019-12-19 20:21 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
可以簡單的實現電子相冊的瀏覽圖片的功能,同時也可以通過往目標文件夾中添加圖片文件來瀏覽

1、linux下 一切皆是文件
    那么對于屏幕的操作也是文件操作 只不過這個文件是一個設備
   
    所以屏幕操作分為以下幾步:
    //第一步:打開
    //第二步:寫數據
    //第三步:關閉文件
2、屏幕介紹:
    800*480 32位真彩色
    800*480 表示片屏幕大小 單位是像素 480行 每一行 800個像素點
    32位真彩色 每一個像素點是由32位數據表示的
        對應4字節(jié) 分別為 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 個字節(jié)
   
    每一張bmp圖片都有54字節(jié)的文件頭 其決定文件的類型 大小 色深等信息  
    接下來我們看以下具體的內容:
        見圖片
   
        
作業(yè):將項目中讀取文件列表 與今日內容整合  實現 自動循環(huán)播放 24位bmp圖
    請實現32位的bmp圖
6、通過觸摸屏切換顯示
    linux輸入子系統(tǒng):
        linux下的輸入設備主要有: 鍵盤 鼠標 麥、寫字板、觸摸屏等等
        
        linux將所有的輸入設備歸于一個驅動設備文件管理 該設備被稱之為 事件文件  位于
            GEC210 位于 /dev/event0
            GEC6818 位于 /dev/input/event0
            
        在linux下獲取輸入事件其本質就是在輸入設備文件中讀取數據 而這個數據的格式由輸入子系統(tǒng)決定 本質就是一個結構體
            即struct input_event
            該結構體位于 linux/input.h頭文件下!
        結構體解析:
            struct input_event{
                struct timeval time; //事件觸發(fā)的時間
                _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開發(fā)板將 壓力值歸為EV_KEY中    即0x01 中 壓力值的宏為 0x14a
               
        //第一步:打開觸摸屏
        //第二步:讀取數據
        //第三步:解析
        //第四步從第二步開始循環(huán)
                直到一次操作完位置
               
        思考: 怎么判斷一次操作的開始 當第一次value>0 就按下
                                結束 當第一次value == 0就是離開
                                
全部資料51hei下載地址:
項目電子相冊.zip (1.13 MB, 下載次數: 120)

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表