亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        Linux文本模式下觸摸屏的驅(qū)動設(shè)計及校準

        2018-04-15 21:13:03
        關(guān)鍵詞:觸摸屏電阻驅(qū)動

        (北京明航科技發(fā)展有限公司 湖南分公司,長沙 410205)

        引 言

        本文是在Linux文本模式下對電阻式觸摸屏進行校準。Linux系統(tǒng)是一套開源的操作系統(tǒng),可以根據(jù)實際需要進行裁剪、移植,而且可以非常方便地在Linux系統(tǒng)上開發(fā)擴展設(shè)備的驅(qū)動。

        1 觸摸屏工作原理

        首先簡單介紹一下觸摸屏的工作原理,用手指或其他物體觸摸安裝在顯示器前端的觸摸屏,然后系統(tǒng)根據(jù)手指觸摸的圖標或菜單位置來定位選擇信息輸入。觸摸屏由觸摸檢測部件和觸摸屏控制器組成;觸摸檢測部件安裝在顯示器屏幕前面,用于檢測用戶觸摸位置,接受后送觸摸屏控制器;而觸摸屏控制器的主要作用是從觸摸點檢測裝置上接收觸摸信息,并將它轉(zhuǎn)換成觸點坐標,再送給CPU,它同時能接收CPU發(fā)來的命令并加以執(zhí)行。

        電阻式觸摸屏其實就是一種傳感器,這種屏幕可以用四線、五線、七線或八線來產(chǎn)生屏幕偏置電壓,同時讀回觸摸點的電壓,電壓值和位置信息成正比。這里以四線為例進行說明,當在觸摸屏上按下觸筆時,觸摸屏的4個引腳會產(chǎn)生不同的電壓值,這樣觸摸屏控制器就能檢測到這種變化,從而產(chǎn)生INT_TC中斷,表示觸筆按下。然后在得到CPU指示的情況下,通過A/D轉(zhuǎn)換,觸摸屏控制器可以根據(jù)4個引腳上的位置得到不同電壓值,這就是觸摸屏的工作原理。

        2 觸摸屏驅(qū)動

        觸摸屏的類型有電阻式觸摸屏、電容式觸摸屏、表面聲波觸摸屏、紅外觸摸屏等??梢栽诰W(wǎng)上下載Linux內(nèi)核源碼,在Linux源碼中有各種觸摸屏的驅(qū)動,根據(jù)觸摸屏的類型選取適合的觸摸屏驅(qū)動。在硬件連接正常的情況下,如果觸摸屏在圖形模式下點擊沒有反應(yīng),則需要根據(jù)實際情況對觸摸屏的驅(qū)動進行修改。本文就USB接口的電阻式觸摸屏進行介紹。

        在Linux源碼中driverinput ouchscreen,提供了各種類型的觸摸屏驅(qū)動,選取合適的驅(qū)動進行修改。觸摸屏的驅(qū)動和其他外設(shè)驅(qū)動的架構(gòu)類似,包括設(shè)備初始化、設(shè)備打開、設(shè)備關(guān)閉、中斷處理等。本文以usbtouchscreen.c為例,對需要改動的部分進行說明。

        static struct usb_device_id usbtouch_devices[] = {

        #ifdef CONFIG_TOUCHSCREEN_USB_EGALAX

        /* ignore the HID capable devices, handled by usbhid */

        {USB_DEVICE_HID_CLASS(0x0eef, 0x0001), .driver_info = DEVTYPE_IGNORE},

        {USB_DEVICE_HID_CLASS(0x0eef, 0x0002), .driver_info = DEVTYPE_IGNORE},

        /* normal device IDs */

        {USB_DEVICE(0x3823, 0x0001), .driver_info = DEVTYPE_EGALAX},

        {USB_DEVICE(0x3823, 0x0002), .driver_info = DEVTYPE_EGALAX},

        {USB_DEVICE(0x0123, 0x0001), .driver_info = DEVTYPE_EGALAX},

        ....

        上文中的0x0123, 0x0001分別為廠商號和設(shè)備號,這兩個一般作為設(shè)備的標識符。先確定自身的觸摸屏的廠商號和設(shè)備號,然后將觸摸屏信息添加進去。driver_info 包含驅(qū)動信息,其類型為usbtouch_device_info。以DEVTYPE_EGALAX為例:

        static struct usbtouch_device_info usbtouch_dev_info[] = {

        #ifdef CONFIG_TOUCHSCREEN_USB_EGALAX

        [DEVTYPE_EGALAX] = {

        .min_xc= 0x0, //X軸最小坐標

        .max_xc= 0x07ff, //X軸最大坐標

        .min_yc= 0x0, //Y軸最小坐標

        .max_yc= 0x07ff, //Y軸最大坐標

        .rept_size= 16, /位數(shù)

        .process_pkt = usbtouch_process_multi,

        //用于中斷回調(diào)函數(shù),用于上傳數(shù)據(jù)

        .get_pkt_len = egalax_get_pkt_len,

        .read_data = egalax_read_data,

        //用于中斷回調(diào)函數(shù),用于讀取數(shù)據(jù)

        },

        #endif

        上文中X、Y軸的最大坐標為0x07ff,這與rept_size = 16相關(guān),16表示觸摸屏的轉(zhuǎn)換位數(shù),16位的最大轉(zhuǎn)換值為0x07ff。

        程序修改完成后,在命令行make menuconfig中通過Device Drivers→Input device support→Touchscreens→USB Touchscreen Driver選取需要的touchscreen類型。內(nèi)核配置完成后,對內(nèi)核進行重新編譯,編譯完成后重啟加載觸摸屏驅(qū)動。

        3 觸摸屏校準

        觸摸屏驅(qū)動加載完成后還需要對觸摸屏進行校準,根據(jù)電阻式觸摸屏的工作原理可知電壓和坐標位置成正比,將電壓值通過A/D轉(zhuǎn)換器進行轉(zhuǎn)換,從而計算出觸摸屏的X軸和Y軸坐標的數(shù)值,而校準就是去計算(0, 0)坐標點的電壓值轉(zhuǎn)換值是多少。

        在圖形模式下進行觸摸屏校準比較方便。觸摸屏廠家一般都會提供圖形模式下的校準程序,只需要執(zhí)行命令文件即可。在Windows系統(tǒng)下進行校準后,將校準數(shù)據(jù)保存,當切換到Linux圖形系統(tǒng)后,觸摸屏一般不需要再次校準,對觸摸屏進行操作時,將會調(diào)用Windows系統(tǒng)保存的校準數(shù)據(jù),從而實現(xiàn)觸摸屏的校準。

        文本模式下調(diào)用觸摸屏時,由于文本界面和圖形界面的差異,圖形界面下觸摸屏的校準數(shù)據(jù)不能實現(xiàn)文本模式下的觸摸屏校準。下面就文本模式下的觸摸屏校準進行詳細說明。

        觸摸屏的校準一般采用的是5點校準法,進入校準界面后,根據(jù)提示觸摸出現(xiàn)的校準點,完成后,校準程序?qū)⒌玫降男蕯?shù)據(jù)保存到存儲設(shè)備中,校準以后,在使用觸摸屏時,將此數(shù)據(jù)為基準進行校準。

        本文通過tslib軟件對觸摸屏設(shè)備進行校準,tslib是電阻式觸摸屏用于校準的一個軟件庫,是一個開源的程序,能夠為觸摸屏驅(qū)動獲得的采樣提供諸如濾波、去抖、校準等功能,通常作為觸摸屏驅(qū)動的適配層,為上層的應(yīng)用提供了一個統(tǒng)一的接口。在Linux系統(tǒng)下觸摸屏進行校準的步驟為:

        首先將USB觸摸設(shè)備接入系統(tǒng)中,在系統(tǒng)中查看該USB觸摸屏的設(shè)備號,即通過cat /proc/bus/input/devices獲取環(huán)境變量中觸摸屏的event值。

        根據(jù)獲取的event值,修改/etc/profile,具體修改如下:

        export TSLIB_ROOT=/usr/local/bin

        export TSLIB_TSDEVICE=/dev/input/eventX

        export TSLIB_CALIBFILE=/etc/pointercal

        export TSLIB_CONFFILE=$TSLIB_ROOT/etc/ts.conf

        export TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts

        export TSLIB_FBDEVICE=/dev/fb0

        export TSLIB_CONSOLEDEVICE=none

        export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$TSLIB_ROOT/lib

        修改tslib/tests/ts_calibrate中的/dev/input/eventX,和環(huán)境變量中觸摸屏的event值相匹配。修改tslib/etc/ts.conf,將# module_raw input前的“#”以及module_raw input前的空格去掉。

        運行tslib中的./run.sh后,在config.h中添加#define USE_INPUT_API 1。

        運行make;make install。

        在/usr/local/bin/bin中運行./ts_calibrate即可看到校準界面;校準后將校準數(shù)據(jù)保存,通過以上步驟可以實現(xiàn)tslib在Linux文本模式下的觸摸屏校準。

        結(jié) 語

        [1] 王建,宋永昌.觸摸屏實用技術(shù)(三菱)[M].北京:機械工業(yè)出版社,2012.

        [2] 科波特.LINUX設(shè)備驅(qū)動程序(第3版)[M]. 魏永明,耿岳,鐘書毅,等譯.北京:中國電力出版社,2009.

        猜你喜歡
        觸摸屏電阻驅(qū)動
        基于模糊PI控制的驅(qū)動防滑仿真系統(tǒng)分析
        屈宏斌:未來五年,雙輪驅(qū)動,砥礪前行
        電阻大小誰做主
        PLC和觸摸屏在衛(wèi)生間控制系統(tǒng)的應(yīng)用
        軌旁ATC系統(tǒng)門控柜接收/驅(qū)動板改造
        巧測電阻
        皮膚“長”出觸摸屏
        電阻焊
        基于S3C6410的Wi-Fi驅(qū)動移植實現(xiàn)
        基于multisim13.0負電阻在電源中作用的仿真
        在线看无码的免费网站| 一夲道无码人妻精品一区二区| 国产av综合影院| 99精品国产在热久久| 亚洲精品久久久久高潮| 永久无码在线观看| 日本精品免费一区二区三区| 少妇一区二区三区乱码| 国产性感主播一区二区| 日韩三级一区二区三区四区| 丝袜美腿视频一区二区 | 牛鞭伸入女人下身的真视频| a午夜国产一级黄片| 最全精品自拍视频在线| 国产精品久久婷婷六月丁香| 日韩人妻免费视频一专区| 免费成人电影在线观看| 三级做a全过程在线观看| 男女性高爱潮免费网站| 国产精品无码日韩欧| 丝袜 亚洲 另类 欧美| 亚洲中文字幕诱惑第一页| 日韩精品一区二区三区av| 亚洲蜜臀av一区二区三区| 人人妻人人狠人人爽天天综合网| 激情欧美日韩一区二区| 国产a级精精彩大片免费看| 亚洲一区二区三区在线| 日韩av天堂一区二区| 精品无码国产一区二区三区麻豆| 色噜噜av亚洲色一区二区| 图图国产亚洲综合网站| 亚洲一区二区不卡日韩| 日本一区二区三区亚洲| 真人做人试看60分钟免费视频| 亚洲欧美综合在线天堂| 蜜臀av一区二区三区人妻在线| 一本大道久久a久久综合精品| 精品综合久久久久久888蜜芽| 在线高清理伦片a| 精品国产福利久久久|