色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 嵌入式Linux中基于Qt/Embeded觸摸屏驅動的設計

          嵌入式Linux中基于Qt/Embeded觸摸屏驅動的設計

          作者: 時間:2012-05-08 來源:網絡 收藏


          本文引用地址:http://cafeforensic.com/article/171493.htm

          由前面鼠標設備類的派生結構可知,添加驅 動接口先要通過調用QmouseDriverFactory或QmouseDriverPlugin 類根據相應的設備名生成相對應的 QWSCustomMouseHandler 對象,這些具體的設備 接口類都是由 QWSMouseHandler 類派生出來的,都 繼承了 QWSMouseHandler 類。然后再由系統(tǒng)調用QWSCustomMouseHandler:: readMouseData (),獲取到的定位和狀態(tài)信息都直接送到鼠標設備類的抽象層 QWSMouseHandler 類,Qt/Embedded 通過 QWSMouseHandler 類來實現對鼠標設備的操作。

          可以通過兩種方式添加設備驅動接口類,一種是 通過調用 QmouseDriverFactory 生成相應的 QWSCustomMouseHandler,一種是由 QmouseDriverPlugin 添 加生成相應的 QWSCustomMouseHandler。我們采用第 一種方案,在原有的接口 qwsmouselinuxtp_qws.cpp 上 進行修改,以適合新的設備驅動接口。

          首先,我們在 qwsmouselinuxtp_qws.cpp 修改,先 把 TS_EVENT 的結構改為相應設備的數據結構,再把 QWSTPMouseHandlerPrivate 函數中打開的設備 文件節(jié)點由/dev/ts 改為自己的設備文件/dev/ttyS1。然 后修改 readMouseData()函數,按自己的數據結構 讀取設備文件,傳遞給 QPoint 類對鼠標進行定位或轉 換為鼠標按鍵狀態(tài)。這個函數的操作可以參照windows 下的鼠標驅動源代碼。

          其實這樣修改以后,已經能正常使用設備 了,但是為了在該系統(tǒng)平臺上同時使用鼠標和觸摸屏 操作還必須完成兩個步驟:一個是要正確的設置QWS_ MOUSE_PROTO 環(huán)境變量,閱讀 qwindowsystem_ qws.cpp 中 QWSServer:: openMouse () 函數可知,該環(huán) 境變量可同時設置多個設備Driver> [: Device>],多個設備之間以空格隔開,由此可設置 QWS_MOUSE_PROTO=Auto TP, Qt/Embedded 通過該環(huán)境變量生成相應的鼠標和觸摸屏驅動接口,對設備進行操作。然后再對Qt/Embedded的鼠標驅動接口類的源代碼進行修改。由于觸摸屏是采用了系統(tǒng)的串口,而Qt/Embedded 自動搜索鼠標接口時發(fā)現串口正在工作中,就會把它當作一個鼠標設備進行操作,這就發(fā)生了設備沖突。因此,我們要在 qmousepc_qws.cpp 文件中將串口鼠標的子驅動去掉,找到函數 QWSPcMouseHandlerPrivate:: openDevices () 中的代碼如下,把它注釋掉就行了。

          else if (driver==Microsoft) {

          QString dev=device.isEmpty()? QString(/dev/ttyS0) : device;

          fd = open ( dev.latin1 (), O_RDWR | O_NDELAY );

          if ( fd >= 0 )

          sub[nsub++] = newQWSPcMouseSubHandler_ms(fd);

          } else if (driver==MouseSystems){

          QStringdev=device.isEmpty()?QString(/dev/ttyS0). : device;

          fd = open ( dev.latin1 (), O_RDWR | O_NDELAY );

          if ( fd >= 0 ) sub[nsub++] = new QWSPcMouseSubHandler_mous esystems (fd);

          }

          關于觸摸屏的校準,閱讀 qwsmouselinuxtp_qws.h 文件(代碼如下),可知在QWSMouseTPHandler 中已經實現了坐標的校準,一般直接讀取坐標的位置 和狀態(tài)即可。

          class QWSLinuxTPMouseHandler:

          public QWSCalibratedMouseHandler

          {

          };

          最后只需要在配置 Qt/Embedded 的安裝configure 加入選項-qt-mouse-linuxtp>,重新編譯,該 Qt/Embedded平臺上的應用程序即能夠按照定制的要求提供對觸摸屏的支持。

          4、 結束語

          本方案與 Qt 下普通鼠標驅動使用一致的框架,簡潔,條理清楚。已經成功的運用于電能質量監(jiān)測儀平臺,并且運行穩(wěn)定,定位準確,反應靈敏。友好的 GUI 界面和便捷的人機接口,使電能質量檢測儀更具亮點。同時,開放源代碼的優(yōu)勢在此方案中得到充分的體現,通過大量地閱讀源代碼,可以充分的理解軟件工作機制并按用戶的要求進行定制,做出真正適合用戶的產品。

          linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)

          linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)

          linux相關文章:linux教程



          上一頁 1 2 下一頁

          評論


          相關推薦

          技術專區(qū)

          關閉