可以簡單的實現電子相冊的瀏覽圖片的功能,同時也可以通過往目標文件夾中添加圖片文件來瀏覽
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)
2019-12-19 20:20 上傳
點擊文件名下載附件
內涵項目源代碼 下載積分: 黑幣 -5
|