當前位置:首頁 > 嵌入式 > 嵌入式軟件
[導讀]基于嵌入式技術的智能儀器觸摸屏接口設計

摘要: 研究開發(fā)了嵌入式智能儀器觸摸屏接口; 分析了電阻式觸摸屏的工作原理; 設計了觸摸屏與微處理器的接口電路; 開發(fā)了嵌入式L inux框架下的觸摸屏設備驅動程序; 闡述了采用觸摸屏作為輸入的MiniGU I應用程序的編寫方法。

設計的觸摸屏接口已成功應用在故障診斷儀器產品上, 增強了儀器的人機交互功能, 方便了現場操作人員使用。

0 引言

在現代化生產中, 為了確保機械設備安全可靠地運行, 通常要采用適宜的儀器儀表, 利用故障診斷技術及時發(fā)現故障, 并采取合理的維修或保護措施來排除故障, 預防和避免事故的發(fā)生。基于對儀器尺寸、便攜性和操作方便性的考慮, 在工業(yè)領域如煤炭、鋼鐵、冶金、電力、化工等行業(yè)中大量的儀器儀表和設備, 都逐漸選用觸摸屏作為系統(tǒng)的輸入設備。

針對這一情況, 作者在開發(fā)面向機械故障診斷的智能儀表過程中, 對觸摸屏輸入接口進行了研究。設計了四線電阻式觸摸屏與PXA255 處理器的接口電路, 分析了Linux框架下的字符設備驅動程序設計原理, 完成了觸摸屏的接口驅動程序開發(fā), 并設計了用觸摸屏作為輸入設備的MiniGU I用戶程序。觸摸屏作為儀器的輸入設備, 人機交互直截了當, 大大方便了現場操作人員的使用。

1 硬件結構和工作原理

依據工作原理和傳輸介質的不同, 觸摸屏主要分電阻式、電容式、紅外線式以及表面聲波式等多種類型。電阻式觸摸屏是一塊4層透明的復合薄膜屏,如圖1所示。下面是玻璃或有機玻璃構成的基層; 上面是一層外表面經過硬化處理從而光滑防刮的塑料層; 中間是兩層金屬導電層, 在導電層之間有許多細小的透明隔離點把兩層隔開。兩個金屬導電層是觸摸屏的工作面, 其兩端各涂有一條銀膠, 稱為觸摸屏工作面的一對電極。四線式觸摸屏的X 工作面和Y 工作面分別加在兩個導電層上, 共有4根引出線, 分別連到觸摸屏的X 電極對和Y 電極對上。在觸筆觸摸屏幕時, 兩導電層在接觸點處接觸。電阻式觸摸屏作為輸入設備與顯示屏配合使用時, 其工作的實質就是通過測量X、Y兩個方向電阻的分壓, 確定觸摸屏的觸點坐標, 并將該坐標映射到顯示屏坐標上, 從而實現人機交互。由于電阻式觸摸屏工作面與外界完全隔離, 受環(huán)境影響小, 所以具有不怕灰塵和水汽、穩(wěn)定性高、不漂移等優(yōu)點, 特別適合工業(yè)現場使用。

圖1 電阻式觸摸屏結構

在設計過程中, 選用ADS7843 作為觸摸屏接口的AD轉換芯片,它具有12 位的轉換精度, 最大支持4 096 ×4 096點陣的LCD, 滿足儀器設計要求。

儀器系統(tǒng)處理器選用Intel Xscale架構的PXA255處理器,用其GPIO口模擬SPI接口與ads7843進行通信。其接口原理如圖2所示。ADS7843完成采集通道的切換和接觸點處電壓的采集, 其操作時序主要由控制字輸入、電壓采集和模數轉換組成, 詳見參考文獻。只要在驅動程序中根據時序要求向D IN口發(fā)送控制字, 即可從DOUT處得到相應通道的采集結果。

圖2 ADS7843與PXA255的接口電路

[!--empirenews.page--]

2 觸摸屏接口驅動程序

Linux驅動程序是系統(tǒng)內核的一部分, 它把軟件和硬件分離開來, 并向上提供應用程序訪問硬件的通信接口, 向下管理保護系統(tǒng)硬件。觸摸屏在Linux下被定義為字符設備, 其驅動主要完成觸點電壓的采集, 并向用戶空間傳遞X 坐標、Y坐標和筆動作(按下、抬起或拖拽) 數據。當觸筆按下時, ADS7843的11腳輸出低電平, 觸發(fā)PXA255通用IO口的12腳產生外部中斷, 開啟定時器, 實現觸摸屏的動作。觸摸屏的驅動流程如圖3所示。

圖3 觸摸屏驅動程序結構流程

2.1 驅動的編寫

觸摸屏驅動在Linux框架下屬于字符設備驅動。

驅動的入口函數為ads7843 _ ts_ init ( ) , 在該函數中,初始化I/O口, 注冊筆中斷和設備節(jié)點, 完成設備文件系統(tǒng)創(chuàng)建標準字符設備的初始化工作[ 8 - 10 ].觸摸屏設備操作的結構通過ads7843_ts_fop s定義。

  STatic struct file_operatiONs ads7843_ts_fop s = {

  read: ads7843_ts_read,

  poll: ads7843_ts_poll,

  ioctl: ads7843_ts_ioctl,

  fasync: ads7843_ts_fasync,

  open: ads7843_ts_open,

  release: ads7843_ts_release,

  };

這樣, 只需根據實際需要正確定義該結構中的幾個函數過程, 就可完成設備驅動的開發(fā)。

[!--empirenews.page--]

當觸摸屏設備被打開時, 首先執(zhí)行到ads7843_ts_open ( )函數, 并在該函數中, 初始化一個緩沖區(qū), 用于存儲坐標數據。在觸摸屏被按下后, 系統(tǒng)首先觸發(fā)中斷, 在ads7843_ts_interrup t ( )中斷程序中, 判斷in_timehandle全局變量的狀態(tài), in_ timehandle在定時器函數中被改變, 也就是說進入中斷后, 先經過定時器延時20ms, 完成觸摸屏的軟件去抖, 再判斷觸摸屏是否被按下。然后通過read_xy ( )函數分別切換至X和Y 通道, 完成觸點電壓的AD轉換, 并讀取12 位坐標值。

  static void ads7843_ ts_ interrup t ( int IRq, void 3 dev_ id,

  struct p t_regs3 regs)

  {

  sp in_lock_irq (&tsdevlock) ;

  if ( in_timehandle > 0)

  {

  sp in_unlock_irq (&tsdevlock) ;

  return;

  }

  disable_irq ( IRQ_GPIO_ADS7843) ;

  ads7843_ts_starttimer ( ) ;

  sp in_unlock_irq (&tsdevlock) ;

  }

應用程序調用read ( ) 函數時, 進入驅動的ads7843_ts_read ( )接口函數。在該接口函數中獲取采樣結果, 判斷是否要對坐標進行校準, 將最終結果寫入到緩沖區(qū)中, 并通過copy_to_user ( )函數將其從內核空間復制到用戶空間, 以使應用程序能夠使用。在ads7843_ts_read ( )函數中采用了非阻塞型操作, 使得在沒有數據到達的時候立即返回, 然后用異步觸發(fā)fasync ( )來通知數據的到來。ads7843 _ ts_poll ( )函數用于驅動程序的非阻塞操作, ads7843_ts_fasync ( )函數用于驅動異步觸發(fā)。ads7843_ts_ioctl ( )函數中, 提供了可從用戶態(tài)控制的參數, 如觸摸屏是否在驅動中校準、屏幕的最大最小坐標值等。ads7843_ts_release( )函數用來關閉觸摸屏設備。

2.2 觸摸屏的校準

在儀器開發(fā)過程中,觸摸屏作為輸入設備與LCD配合使用。為了能使從觸摸屏采樣得到坐標與屏幕的顯示坐標對應, 還需要做一個映射, 也就是要對觸摸屏進行校準。如圖4所示, 所用的觸摸屏和液晶屏都是標準的矩形, 只要安裝合理, 可以認為觸摸屏的X 方向坐標只與顯示屏X 方向相關, Y方向坐標只與顯示屏的Y方向相關。假設顯示屏的分辨率是W ×H, 顯示區(qū)域的左上角對應的觸摸屏采樣坐標是( x1 , y1 ) ,右下角對應的坐標是( x2 , y2 ) , 那么觸摸屏上任意一點采樣坐標( x, y) 與顯示屏坐標( xd , yd ) 的對應關系可以按照如下公式計算:

這樣, 在測得( x1 , y1 ) 和( x2 , y2 ) 點觸摸屏的采樣值后, 利用上述公式編制校準函數, 在觸摸屏工作的過程中, 計算出實際觸摸點對應的顯示坐標,完成觸摸屏的校準。

圖4 觸摸屏的校準

3 觸摸屏用戶應用程序

創(chuàng)建的Linux設備文件系統(tǒng)觸摸屏節(jié)點為/dev/ts.在應用程序中, 可以像打開文件一樣用open函數打開設備文件, 然后用read ( )函數讀取由驅動傳遞到用戶空間的數據。儀器應用程序的開發(fā)采用MiniGU I進行, MiniGU I是由北京飛漫公司開發(fā), 可應用于實時嵌入式系統(tǒng)中的輕量級圖形用戶界面支持系統(tǒng)。其函數接口與Windows SDK類似, 開發(fā)方便。

MiniGU I的輸入抽象層( IAL: Input Abstract Layer)提供了對觸摸屏、鼠標等輸入設備的豐富支持, 并支持PXA255處理器平臺。只要經過簡單的設置就可以在應用程序中使用觸摸屏。配置安裝MiniGU I時, 使用22enable2px255bial項, 由于在安裝MiniGU I時采用了內嵌資源的靜態(tài)編譯方式, 所以在編譯之前, 需在MiniGU I的src / sysres/目錄下建立mgetc2pxa1c 文件,并在其中用下面語句設置系統(tǒng)參數, 將觸摸屏設為輸入設備。

static char * SYSTEM_VALUES[ ] = { " fbcon" ," PX255B" , " /dev/ ts" , " none" };

MiniGU I對觸摸屏輸入的處理方式如圖5 所示。

圖5 MiniGU I中的觸摸屏輸入

MiniGU I通過觸摸屏設備驅動程序接收原始的輸入數據, 把它轉換為MiniGU I抽象的觸摸屏事件和數據。

相關的底層事件處理例程把這些觸摸事件轉換為上層的觸摸消息, 放到相應的消息隊列中。應用程序通過消息循環(huán)獲取這些消息, 交由窗口過程處理。編制針對觸摸屏的應用程序時, 需要做的只是在窗口接收到諸如MSG _LBUTTONDOWN 等觸屏消息時, 調用相應的語句, 完成預期操作。

4 結論

嵌入式智能儀器觸摸屏接口增強了儀器系統(tǒng)的人機交互功能, 方便了操作人員的使用; 接口電路和驅動程序的模塊化方便了儀器的后續(xù)改進和新產品的開發(fā), 并可根據需要移植應用到各種不同場合。設計的觸摸屏接口已經成功應用在故障診斷巡檢儀器中, 其工作穩(wěn)定, 運行可靠, 具有很好的實用價值。

本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內容真實性等。需要轉載請聯(lián)系該專欄作者,如若文章內容侵犯您的權益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或將催生出更大的獨角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數字化轉型技術解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關鍵字: AWS AN BSP 數字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術公司SODA.Auto推出其旗艦產品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關鍵字: 汽車 人工智能 智能驅動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務中斷的風險,如企業(yè)系統(tǒng)復雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務連續(xù)性,提升韌性,成...

關鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據媒體報道,騰訊和網易近期正在縮減他們對日本游戲市場的投資。

關鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數據產業(yè)博覽會開幕式在貴陽舉行,華為董事、質量流程IT總裁陶景文發(fā)表了演講。

關鍵字: 華為 12nm EDA 半導體

8月28日消息,在2024中國國際大數據產業(yè)博覽會上,華為常務董事、華為云CEO張平安發(fā)表演講稱,數字世界的話語權最終是由生態(tài)的繁榮決定的。

關鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應對環(huán)境變化,經營業(yè)績穩(wěn)中有升 落實提質增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務引領增長 以科技創(chuàng)新為引領,提升企業(yè)核心競爭力 堅持高質量發(fā)展策略,塑強核心競爭優(yōu)勢...

關鍵字: 通信 BSP 電信運營商 數字經濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術學會聯(lián)合牽頭組建的NVI技術創(chuàng)新聯(lián)盟在BIRTV2024超高清全產業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現場 NVI技術創(chuàng)新聯(lián)...

關鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關鍵字: BSP 信息技術
關閉
關閉