现在的位置: 首页 > 综合 > 正文

Qtopia,难以释怀的郁闷!

2013年09月18日 ⁄ 综合 ⁄ 共 1295字 ⁄ 字号 评论关闭

       为了使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上再试一试吧。

     仓促之间,乱七八糟写了这些东西,可能有很多符号不对,先这样吧,等问题解决,写一个详细的过程!上帝啊,救救我吧!问题就要解决了!

抱歉!评论已关闭.