直接通過framebuffer直接寫屏

2021-05-24 02:01:29 字數 1160 閱讀 6240

幀緩衝(framebuffer)是 linux 為顯示裝置提供的乙個介面,把視訊記憶體抽象後的一種裝置,他允許上層應用程式在圖形模式下直接對顯示緩衝區進行讀寫操作。這種操作是抽象的,統一的。使用者不必 關心物理視訊記憶體的位置、換頁機制等等具體細節。這些都是由framebuffer 裝置驅動來完成的,所以可知其具有良好的移植性。

幀緩衝裝置對應的裝置檔案為/dev/fb*,如果系統有多個顯示卡,linux 下還可支援多個幀緩衝裝置,最多可達32 個,分別為/dev/fb0 到/dev/fb31,當前預設的幀緩衝裝置通常指向/dev/fb0。當然在嵌入式系統中支援乙個顯示裝置就夠了。幀緩衝裝置為標準字元裝置,主裝置號 為29,次裝置號則從0到31。分別對應/dev/fb0-/dev/fb31。在mid上,裝置資訊是/dev/graphics/fb0,在pc機上 有顯示卡的原因是找不到fb的。   

通過/dev/fb,應用程式的操作主要有這幾種: 

1.讀/寫(read /write)/dev/fb:相當於讀/寫螢幕緩衝區。在mid上,採用的方式是cat /dev/graphics/fb0 tmp和cat tmp > /dev/graphics/fb0可以實現螢幕記憶體儲存和重現,但是本人試了沒有效果(原因不知)。

2.對映(map)操作:由於 linux 工作在保護模式,每個應用程式都有自己的虛擬位址空間,在應用程式中是不能直接訪問物理緩衝區位址的。為此,linux 在檔案操作 file_operations 結構中提供了 mmap 函式,可將檔案的內容對映到使用者空間。對於幀緩衝裝置,則可通過對映操作,可將螢幕緩衝區的物理位址對映到使用者空間的一段虛擬位址中,之後使用者就可以通過 讀寫這段虛擬位址訪問螢幕緩衝區,在螢幕上繪圖了。

mmap將乙個檔案或者其它物件對映進記憶體。檔案被對映到多個頁上,如果檔案的大小不是所有頁的大小之和,最後乙個頁不被使用的空間將會清零。 munmap執行相反的操作,刪除特定位址區域的物件對映。成功執行時,mmap()返回被對映區的指標,munmap()返回0。

基於檔案的對映,在mmap和munmap執行過程的任何時刻,被對映檔案的st_atime可能被更新。如果st_atime欄位在前述的情況下沒有得 到更新,用prot_write 和 map_shared標誌建立起來的檔案對映,其st_ctime 和 st_mtime在對對映區寫入之後,在msync()通過ms_sync 和 ms_async兩個標誌呼叫之前會被更新。

logo.h

logo.c

直接通過DAO讀寫Access檔案

直接利用dao來建立 讀寫access檔案,總的說來,比直接通過odbc讀 寫excel檔案來講,要簡單一些。在下面的示例中,我們將用到兩種方法 sql和dao類函式來混合實現它們,這樣做的目地,我想可以使大家更加方便靈活的運用它們來完成你想要做的東西。在示例程式中預設指定建立資料庫名為 demo....

tomcat 直接通過IP訪問web專案

1 在開發時訪問web專案是這樣的http localhost 8080 專案名稱 也可以直接通過ip訪問web專案 http localhost 專案名稱 方法為1 修改tomcat埠為80 修改server.xml 改為redirectport 8443 enablelookups false ...

直接通過ADO操作Access資料庫

直接通過ado操作access資料庫 rename eof adoeof 其中路徑名可以根據自己系統安裝的ado支援檔案的路徑來自行設定。當編譯器遇到 import語句時,它會為引用元件型別庫中的介面生成包裝類,import語句實際上相當於執行了api涵數loadtypelib import語句會在...