a一级爱做片免费观看欧美,久久国产一区二区,日本一二三区免费,久草视频手机在线观看

新聞中心

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

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

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

以其開源性、內核的健壯性和穩定性、可裁減性,以及有著專業的商業公司和世界頂尖的自由軟件開發者的支持和維護等各方面優勢,吸引了系統開發商的目光,成為操作系統的新寵。由于其友善的人機交互性、操作簡單靈活、輸入速度快,大大簡化了嵌入式系統的輸入而被廣泛運用。本文介紹了嵌入式 系統平臺上 Qt/Embedded 的。該方案已成功運用于工程機械安全儀和電能質量監測儀項目,實現了 GUI(圖形用戶操作接口)界面對的支持,并能根據觸摸屏的不同進行定制。

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

1、Qt/Embedded 簡介

Qt/Embedded 是著名的 Trolltech 公司發布的專門面向嵌入式系統的GUI 和應用開發的開發庫。它是一種全面的 C++圖形界面應用開發架構,繼承了Qt 的全部標準 API,提供了比 Xlib 和 XWindows 系統更加緊湊的窗口生成系統,對 FrameBuffer 直接進行操作(見圖 1)。完全模塊化的和高效的編譯系統減少了內存的消耗,這些使 Qt/Embedded 成為嵌入式環境中,功能強大而全面的GUI開發工具。由于Qt/Embedded 的強大功能,被廣泛用于各種領域,從消費電子(移動電話、掌上電腦、機頂盒)到工業控制(醫療成像 設備、 移動信息系統)。

2 、 下的設備基礎

Linux 系統主要將設備分成 3 種類型:字符設備、塊設備和網絡接口。每個模塊通常實現其中一種類型,相應的模塊可分為字符模塊、塊模塊和網絡模塊 3 種。然而這種分類方式并不是非常嚴格,程序員可以構造一個大的模塊,在其中實現不同類型的設備程序。為了實現良好的伸縮性和擴展性,通常還要為每個功能創建一個不同的模塊。

字符設備是能夠像字節流一樣被訪問的設備,由字符設備驅動程序來實現這種特性。它通常至少 需要實現 open、close、read 和 write 系統調用。字 符設備可以通過文件系統節點來訪問,比如字符終端(/dev/console)和串口(/dev/ttyS0)就是字符 設備的例子。塊設備也是通過/dev 目錄下的文件系統節點被訪問的。塊設備能夠容納文件系統。Linux 允許應用程序像字符設備那樣讀寫塊設備,可以一次傳遞任意多字節的數據。因此,塊設備與字符設備的區別僅僅在于內核內部管理數據的方式。也就是內核和驅動程序的接口不同。另外,塊設備的接口必須支持掛裝文件系統。

網絡接口是一個能夠和其他主機交換數據的設備。 它由內核中的網絡子系統驅動,負責發送和接收數據包,它無須了解每項事務是如何映射到實際傳輸的數據包的。

Linux 中還存在其他類型的驅動程序模塊,這些模塊利用內核提供的公共服務來處理特定類型的設備。 因此我們能夠和通用串行總線(USB)模塊、串口模塊等通信。

在本系統中,控制器將觸摸屏采集的原始電壓信號通過專用 A/D 轉換為坐標數據,經過 RS-232 總線傳送給嵌入式系統(見圖 2)。Linux 系統利用內核提供的串口模塊來處理觸摸屏設備,將該設備以文件/dev/ttyS0 的形式存放在/dev 目錄下,提供了 open、read、write、close 等系統調用。我們只需像操作普通 數據文件一樣對串口設備進行操作,將觸摸屏的坐標 數據送往上層的 Qt/Embedded 應用層。

10.jpg

3 、Qt 下觸摸屏的驅動

Qt/Embedded 中與用戶輸入事件相關的信號,是建立在對底層輸入設備的接口調用之上的,一般通過 對設備文件的 I/O 讀寫來實現。大部分這樣的驅動程序已經被封裝進 Qt 庫當中,形成了相應的設備驅動接口,如顯示卡驅動、鼠標、鍵盤、串口和并口等。其中鼠標設備的抽象基類為 QWSMouse Handler,從該類又重新派生出一些具體的鼠標類設備的實現類。在 3.3.4 版本系列的 Qt/Embedded 中,鼠標類設備的派生結構如圖 3 所示。

111.jpg

圖 3 鼠標類設備的派生結構圖(灰色線框表示可省略類結構)

鼠標類設備的加載方式與 KeyBoard 設備加載方 式是類似的,在系統構造 QWSServer 對象時,調用成 員函數 QWSServer:: openMouse,程序在QWSServer:: openMouse 函數中再調用QmouseDriverFactory::create () 或QmouseDriverPlugin:: create ()。該函數根據 Linux 系統的環境變量QWS_MOUSE_PROTO獲得鼠標類設備的設備類型和設備節點。打開并返回相應設備的基類指針 QWSMouseHandler 給系統,系統通過操作該基類派生出的具體子類設備指針QWSCustomMouseHandler。

觸摸屏和鼠標類設備在功能上基本是一致的,因 此,在 Qt 庫中一般把觸摸屏模擬成鼠標設備來實現對觸摸屏設備的操作。但由于觸摸屏和鼠標底層接口并不一樣,會造成對上層接口的不一致。例如,從鼠 標驅動接口中幾乎不會得到絕對位置信息,一般只會讀到相對移動量。另外,鼠標的移動加速度也需要考慮在內,而觸摸屏接口則幾乎是清一色的絕對位置信息和壓力信息。針對此類差別,Qt/Embedded 將同一類設備的接口部分也給予區別和抽象,具體實現在 QmouseDriverInterface 類中。

在本系統中,Linux 系統從 COM1 口讀入觸摸屏的坐標數據,但由于與觸摸屏的底層接口并不一致,需通過添加 QWSCustomMouseHandler 程序接口類來實現對觸摸屏的控制。查看Qt/Embedded源代碼qwsmouselinuxtp_qws.cpp 和 qwsmousevr41xx_qws.cpp,可知 Qt 提供了 linuxtp 和 vr41xx 觸摸屏的驅動接口類。如果使用的就是這兩種觸摸屏接口,可直接在執行 Qt 的 configure 配置時加入配置選項-qt-mouse-driver>。由于我們的觸摸屏并非以上兩種,因此需添加驅動接口。


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

linux相關文章:linux教程



上一頁 1 2 下一頁

評論


相關推薦

技術專區

關閉