Qtopia,難以釋懷的鬱悶!

來源:互聯網
上載者:User

       為了使Qtopia支援觸摸平,這兩天真是耗盡了功夫和心思。工作了大約20個小時,仍然沒有結果,鬱悶,鬱悶,極其鬱悶!閱讀了一些文檔,過程艱辛,我下面做個簡單的總結:

      Linux下的觸摸平驅動有兩種,一種是需要應用程式定位的;一種是把定位資訊寫到驅動裡面去的(貌似如此,不甚理解)。對於Mizi 2410來說,裡面的驅動屬於第一種。那麼在移植Qt/E和Qtopia時,如何做才能使Qtopia支援觸控螢幕呢?我現在的理解是有兩種辦法。

      第一種是修改Qt/E裡面的src/kernel/qwsxx_mouse.cpp檔案(檔案名稱字記不清出了,反正差不多),具體方法是首先把在該檔案種添加#define CUSTOMTOUCH(該檔案上面本行被注釋調了,出去注釋即可),然後修改程式原始碼,具體修改的辦法可見Qopia 2.1.1 文檔中pointer handling一文。同時在config Qtopia時,最好在裝置特定設定檔中加入#define QWS_NEED_CALIBRATION,這樣當Qtopia在啟動時會去檢驗在/etc是否有pointcal檔案,沒有的話,就先產生叫使用者校正的過程,並把校正資訊存放在/etc/pointcal檔案中,以後啟動時不再需要校正。如果沒有加入#define QWS_NEED_CALIBRATION配置,那麼為了使Qtopia相應你的觸摸平,你必須在啟動QTOPIA前進行校正(必須用與QT/E裡面相同的演算法),併產生/etc/pointcal檔案,否則Qtopia啟動時會報告打不開該檔案,從而無法相應觸摸平。

     第二種不用修改Qt/E,而是利用tslib。在配置QT/E時加入-tslib,在配置Qtopia時加入#define QWs_NEED_CALIBRATION(如果不加,你必須在啟動Qtopia前進行校正產生/etc/pointcal檔案),這樣第一次啟動Qtopia時,它會調用QT/E裡面的校正函數進行校正。而QT/E的校正函數正是利用tslib提供的統一的介面。那麼具體編譯檔案的順序是什麼呢?由於觸摸平的驅動提供的結構不盡相同,所以tslib其實對不同的觸摸平的驅動做了一個封裝,利用tslib時,只要按照tslib裡面plugin的例子針對你的觸摸平驅動寫一個小小的plugin,然後編譯tslib,再利用你編譯出來的tslib庫編譯Qt/E,進而再編譯Qtopia即可。

    我按照我總結的第二種方法,做好了所有的東西,結果由於板子nfs及其不好,執行qpe時老是串連中斷,一直無法正常運行。沒辦法,只好把flash分出25M來做成jffs2檔案系統,打算把Qtopia檔案拷貝到flash上面去,結果沒有jflash工具,還是只能利用Nfs拷貝,My God! 拷貝時nfs仍然不ok!天不遂人願 ,沒辦法,今天回家先,明天有空的話想辦法把檔案拷貝到flash上再試一試吧。

     倉促之間,亂七八糟寫了這些東西,可能有很多符號不對,先這樣吧,等問題解決,寫一個詳細的過程!上帝啊,救救我吧!問題就要解決了!

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.