專案流程
弄清需求
(1)上電,lcd顯示一副
(2)根據配置檔案,決定停留當前介面還是自動顯示下一張
(3)點選一下,出現乙個對話方塊(手動顯示,自動顯示)
(4)上放大,下縮小,左右滑動切換
(5)左右滑動很快時,切換上上/下下一張
設計框架
通過兩部分來完成:
1)輸入程序(如下圖所示)
建立3個執行緒:觸控執行緒、按鍵執行緒、主控執行緒
-觸控執行緒:不停呼叫tslib,當有資料後,封裝成事件,上報給主控執行緒
-按鍵執行緒:沒按下時休眠,按下時便產生中斷,封裝好上報給主控執行緒
-主控執行緒:收到資料後,用socket傳送給顯示程序
2)顯示程序(如下圖所示)
建立7個執行緒
-socket接收執行緒:
用來接收socket,比如收到左劃的資料,便通知事件到主控執行緒
-主控執行緒:
根據得到的事件,然後呼叫驅動通過dma將準備好的資料(位於某個記憶體上)放到視訊記憶體位址framebuffer上.
-其它5個程序(當前,左,右,上,下):
比如當主控顯示完乙個後,則開始準備好(解壓上幅/下幅,放大,縮小等資料),方便主控執行緒直接呼叫,從而提高速度.
資料是通過應用程式用庫libjpeg解壓(將jpeg格式轉換為lcd顯示格式),使用mmap()函式傳到某個記憶體上.
當前執行緒的意義:
之前我們說過,當點選一下,會出現乙個對話方塊,若退出對話方塊後, 便會通知當前執行緒,從而顯示當前。
對話方塊:
按鈕以及邊框直接做成乙個個,呼叫對話方塊時,直接覆蓋lcd視訊記憶體上即可
總結:
使用多執行緒好處在於:每個模組獨立起來,方便以後修改,而且全域性變數在多執行緒裡可以共用.
下章學習:
2.數碼相框-編碼(ascii/gb2312/unicode)介紹,並使lcd顯示漢字字元(2)
專案1 電子書 第1課 數碼相框之系統框架
主 機 vmware ubuntu 16.04.2 x64 100ask 開發板 jz2440 256m nandflash,2m norflash,64m sdram,lcd 4.3寸 bootlorder u boot 2012.04.01,kernel linux3.4.2 編譯器 arm l...
數碼相框 電子書 之 完全分析
模組化思想 編碼格式模組,庫模組,顯示模組,描畫,輸入模組。根據傳入引數 物件導向思想 每個模組建立乙個結構機構體鍊錶,如編碼模組,有乙個編碼鏈表,各編碼格式設定為乙個結構體,註冊入鍊錶 以後我們操作,只需要操作到鍊錶,而不需要到操作到底層各編碼格式的具體函式。操作過程 根據傳入引數,找到支援該編碼...
框架學習1 常見框架的結構和分析1
我們所學習的技術框架有很多,例如struts1 struts2 jsf spring springmvc hibernate ibatis 在上篇部落格我說了我們可能在開發的路途上會要學習這些框架,我也給出了我對框架學習的幾點 我們首先要看一下這個框架屬於開發結構中的那一層。因為我們的開發都是要用分...