基於qvfb的應用小程式開發

2021-08-26 07:56:39 字數 1527 閱讀 7524

這篇文章其實也不算是原創,看了前輩們的資料加上自己的一些理解。在文章末尾,我提供幾篇好的資料。

如果有必要那麼我們可以使用qvfb開發自己的gui圖形引擎,qvfb是乙個模擬/dev/fb0的framebuffer顯示方式的應用程式,使用共享記憶體,外部程式比如minigui傳遞資料到qvfb建立的共享記憶體,之後qvfb將資料重新整理到qvfb軟體介面上,需要注意的是,qvfb並不是嚴格意義上的framebuffer,當minigui將資料傳送到qvfb的共享記憶體之後,qvfb並不會立即將修改的資料反應到qvfb的軟體介面上,

而是需要外部程式,比如minigui,首先設定qvfb建立的共享空間結構體下面的update矩形失效範圍,即(left,top)和(right,bottom),

然後設定qvfb建立的共享空間結構體下面的dirty控制字為1,

這樣qvfb檢測到drity標誌為1後,將取出update中待重新整理矩形描述區間,然後將update指定

區間中的資料重新整理到qvfb介面上,之後qvfb將共享空間的drity標誌置0,同時將update設為無效的(0,0)和(-1,-1)

qvfb的原理很簡單,它建立了乙個system v共享記憶體,使用者只需將需要顯示的影象按畫素格式要求放到共享記憶體裡qvfb就可以顯示了。

system v共享記憶體連線的步驟是:

1.通過ftok拿到key

2.使用shmget拿到shmid

3.使用shmat連線到共享記憶體

這裡需要注意的是,key的生成需要向ftok傳入乙個雙方約定好的檔名,對於qvfb螢幕裝置,這個檔案是/tmp/.qtvfb_mouse-0。

qvfb建立的共享記憶體包含乙個私有的資料頭,用於指示畫素格式、寬高等資訊。這個頭結構定義如下:

typedef struct tagrect_t rect_t; typedef struct tagqvfbheader qvfbheader;

開發的過程中,我覺得幾點比較重要。

1、程式規範

這裡的規範不僅僅是風格上面的規範,更重要的為合法性校驗,記憶體洩露問題。

如下**,我們必須對程式的返回結果進行校驗,這樣的**比較健壯。

if(dis_qvfb_init()) /*open input device */ if(open_inputdev()) 在main()函式結束之前,我們必須還close開啟的裝置檔案。

dis_qvfb_exit(); close_inputdev();2、我的main函式裡面有乙個while(1)函式,在內部不斷從滑鼠檔案中讀取滑鼠資訊,然後顯示到qvfb的螢幕裝置上。

在做gui的開發,往往都有這樣的乙個流程:

a.往資料位址寫資料;

1、**qvfb影象顯示原理和滑鼠鍵盤資訊獲取方法

2、使用qvfb在x11下開發framebuffer應用程式

3、qvfb

4、linux下framebuffer及qvfb程式設計示例

5、framebuffer driver

以上純屬個人學習筆記,如果**錯了,希望提出。願和大家一起共同學習,一起進步。我的郵箱位址是:[email protected]

基於Oracle ADF的應用程式開發

adf簡介 1 開發環境 大部分j2ee框架都沒有與之配套的開發工具,oracle為adf提供了jdeveloper開發工具,它和adf實現了完美的結合,方便了程式的開發。2 平 立 adf能夠執行在任何符合j2ee標準的應用伺服器上。3 技術選擇 對於應用程式的不同層,開發人員可以使用自己擅長的技...

開發基於Google街景服務應用程式

開發街景服務的思路很簡單,只須將包含經緯度資訊的intent 意圖 呼叫內建的com.google.android.street應用程式即可。街景資料格式為 google.streetview.cbll latitude,longitude 應用程式介面如下 查詢按鈕click 如下 btn.set...

小程式開發

這次小程式開發所有功能和元件全部都是自己手寫 的,因為之前也沒意識到用別人的外掛程式,所以花費了比較大的力氣,幾乎每天晚上都是7點半之後才下班,雖然辛苦了幾個月,但是還是有所收穫的,記下筆記,放下下次可以快速上手 1.小程式的模態框有以下幾種,差不過等於alert confirm,而且自動居中,這些...