《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計應(yīng)用 > 基于嵌入式技術(shù)的智能儀器觸摸屏接口設(shè)計
基于嵌入式技術(shù)的智能儀器觸摸屏接口設(shè)計
摘要: 作者在開發(fā)面向機械故障診斷的智能儀表過程中,對觸摸屏輸入接口進行了研究。設(shè)計了四線電阻式觸摸屏與PXA255處理器的接口電路,分析了Linux框架下的字符設(shè)備驅(qū)動程序設(shè)計原理,完成了觸摸屏的接口驅(qū)動程序開發(fā),并設(shè)計了用觸摸屏作為輸入設(shè)備的MiniGUI用戶程序。觸摸屏作為儀器的輸入設(shè)備,人機交互直截了當(dāng),大大方便了現(xiàn)場操作人員的使用
Abstract:
Key words :

0 引言

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

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

1 硬件結(jié)構(gòu)和工作原理

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

圖1 電阻式觸摸屏結(jié)構(gòu)

圖1 電阻式觸摸屏結(jié)構(gòu)

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

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

圖2 ADS7843與PXA255的接口電路

圖2 ADS7843與PXA255的接口電路

2 觸摸屏接口驅(qū)動程序

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

圖3 觸摸屏驅(qū)動程序結(jié)構(gòu)流程

圖3 觸摸屏驅(qū)動程序結(jié)構(gòu)流程

2.1 驅(qū)動的編寫

觸摸屏驅(qū)動在Linux框架下屬于字符設(shè)備驅(qū)動。

驅(qū)動的入口函數(shù)為ads7843 _ ts_ init ( ) , 在該函數(shù)中,初始化I/O口, 注冊筆中斷和設(shè)備節(jié)點, 完成設(shè)備文件系統(tǒng)創(chuàng)建標(biāo)準(zhǔn)字符設(shè)備的初始化工作[ 8 - 10 ]。觸摸屏設(shè)備操作的結(jié)構(gòu)通過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,

};

這樣, 只需根據(jù)實際需要正確定義該結(jié)構(gòu)中的幾個函數(shù)過程, 就可完成設(shè)備驅(qū)動的開發(fā)。

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

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) ;

}

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

2.2 觸摸屏的校準(zhǔn)

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

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

圖4

圖4 觸摸屏的校準(zhǔn)

 3 觸摸屏用戶應(yīng)用程序

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

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

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

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

圖5 MiniGU I中的觸摸屏輸入

圖5 MiniGUI 中的觸摸屏輸入

MiniGUI 通過觸摸屏設(shè)備驅(qū)動程序接收原始的輸入數(shù)據(jù), 把它轉(zhuǎn)換為MiniGUI 抽象的觸摸屏事件和數(shù)據(jù)。

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

4 結(jié)論

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

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
亚洲国产精品99久久久久久久久| 亚洲精品你懂的| 国产欧美日韩伦理| 欧美成人国产一区二区| 亚洲永久免费| 亚洲人成啪啪网站| 欧美一区二区视频在线观看| 日韩午夜三级在线| 国产欧美精品在线| 欧美日韩国产免费| 欧美ed2k| 久久久久久日产精品| 亚洲一区视频| 一本色道88久久加勒比精品| 亚洲国产mv| 亚洲综合好骚| 国产精品99久久久久久www| 亚洲国产精品国自产拍av秋霞| 国产啪精品视频| 欧美性大战xxxxx久久久| 欧美激情第五页| 久久午夜精品一区二区| 欧美在线三级| 午夜久久福利| 亚洲一区激情| 亚洲视频香蕉人妖| 亚洲视频综合| 亚洲深夜福利| 一本一本大道香蕉久在线精品| 亚洲国产精品久久久| 先锋影音网一区二区| 亚洲午夜av在线| 99这里只有精品| 99在线精品视频在线观看| 亚洲精品国产精品国自产在线| 亚洲国产电影| 亚洲高清视频在线| 国产一区二区日韩精品欧美精品| 国产精品视频免费在线观看| 国产精品久久久91| 欧美午夜电影网| 欧美天天在线| 国产精品久久97| 国产精品美女久久久久久2018| 国产精品三区www17con| 韩日精品视频一区| 亚洲黑丝在线| 亚洲淫片在线视频| 亚洲国产欧美久久| 中文国产成人精品久久一| 亚欧美中日韩视频| 美女视频黄免费的久久| 欧美日韩精品伦理作品在线免费观看| 国产精品国产三级国产专播品爱网| 国产欧美一区二区三区另类精品 | 欧美图区在线视频| 国产欧美在线看| 亚洲国产欧美一区二区三区丁香婷| 99视频在线精品国自产拍免费观看 | 亚洲人成在线播放| 亚洲欧美美女| 最新国产成人在线观看| 亚洲在线第一页| 久久久亚洲精品一区二区三区 | 国产欧美一区二区三区久久| 原创国产精品91| 中日韩美女免费视频网站在线观看| 欧美一区二区三区视频在线 | 欧美精品一区三区| 国产乱肥老妇国产一区二| 亚洲国产精品专区久久| 亚洲女爱视频在线| 亚洲免费观看| 久久久久久亚洲精品中文字幕| 欧美激情在线狂野欧美精品| 国产毛片精品视频| 亚洲精品一区二区三区在线观看| 欧美在线精品免播放器视频| 亚洲午夜激情在线| 美女国产一区| 国产区日韩欧美| 亚洲精品护士| 久久精品视频免费播放| 亚洲欧美日韩区| 欧美黄色片免费观看| 韩国精品久久久999| 亚洲深夜福利| 亚洲精品免费在线观看| 久久精品亚洲精品| 国产精品久久国产精品99gif| 在线观看一区二区视频| 欧美一级二区| 香港成人在线视频| 欧美丝袜第一区| 亚洲品质自拍| 亚洲国产黄色| 久久精品九九| 国产精品毛片一区二区三区| 亚洲日韩视频| 亚洲日本无吗高清不卡| 久久亚洲电影| 国产一区二区成人| 亚洲欧美日韩第一区| 亚洲视频专区在线| 欧美三级韩国三级日本三斤| 亚洲国产精品成人综合色在线婷婷| 欧美一区二区三区视频免费| 欧美一区二区三区四区夜夜大片| 欧美视频一区二区三区在线观看| 亚洲欧洲日韩女同| 亚洲欧洲日本在线| 免费高清在线一区| 亚洲第一综合天堂另类专| 亚洲第一页中文字幕| 久久国产精品免费一区| 国产免费观看久久黄| 亚洲欧美日本在线| 西西裸体人体做爰大胆久久久| 欧美午夜视频在线| 一区二区精品在线| 亚洲图片激情小说| 欧美日一区二区三区在线观看国产免| 亚洲毛片av在线| 9久re热视频在线精品| 欧美另类99xxxxx| 亚洲免费激情| 在线一区视频| 欧美特黄一级大片| 亚洲一区二区高清| 欧美有码在线视频| 国产一区二区无遮挡| 亚洲成人资源网| 蜜桃av噜噜一区| 亚洲国产小视频| 日韩视频在线一区二区| 欧美日韩精品二区| 亚洲图片激情小说| 久久成人综合网| 今天的高清视频免费播放成人| 亚洲人成在线免费观看| 欧美国产日韩一区二区| 夜夜躁日日躁狠狠久久88av| 亚洲午夜电影| 国产热re99久久6国产精品| 午夜视频在线观看一区二区| 久久五月天婷婷| 亚洲国产美国国产综合一区二区| 亚洲免费电影在线观看| 欧美天堂亚洲电影院在线观看 | 久久久精彩视频| 在线播放视频一区| 夜夜狂射影院欧美极品| 国产精品久久久久av免费| 亚洲欧美日韩国产成人精品影院| 久久精品国产69国产精品亚洲| 国模一区二区三区| 日韩亚洲精品视频| 国产精品久久久久久久久久直播 | 亚洲人久久久| 欧美日韩高清区| 亚洲制服少妇| 久久欧美中文字幕| 亚洲人成绝费网站色www| 亚洲欧美bt| 狠狠色狠狠色综合日日91app| 亚洲国产精品久久人人爱蜜臀| 欧美精品久久久久久久久老牛影院| 夜夜嗨一区二区三区| 久久精品女人的天堂av| 亚洲欧洲日产国产综合网| 亚洲自拍偷拍福利| 一区二区三区在线免费视频| 一本色道久久综合亚洲精品婷婷 | 99视频超级精品| 国产日韩欧美| 亚洲精品在线视频| 国产精品私人影院| 亚洲人体一区| 国产精品日日摸夜夜添夜夜av| 久久精品免费电影| 欧美亚日韩国产aⅴ精品中极品| 欧美专区在线| 欧美日韩福利在线观看| 午夜免费久久久久| 欧美黄色aaaa| 欧美一级播放| 欧美三级欧美一级| 亚洲第一黄色| 国产精品久久久久久影视 | 一本一本久久a久久精品综合妖精| 久久激情中文| 一区二区av| 欧美大片免费| 香蕉久久夜色精品国产| 欧美日韩一区二区三区四区五区 | 久久不射中文字幕| 欧美性猛交xxxx乱大交退制版 | 韩国美女久久| 亚洲欧美一级二级三级| 亚洲人永久免费|