新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 在ARM linux上使用usb接口的觸屏

在ARM linux上使用usb接口的觸屏

作者: 時(shí)間:2016-11-09 來(lái)源:網(wǎng)絡(luò) 收藏
應(yīng)公司需要,在現(xiàn)有設(shè)備上面要使用觸摸屏,顯示器的尺寸是15寸,于是自己從淘寶上面買(mǎi)了個(gè)15寸4線(xiàn)電阻屏回來(lái),帶Windows下的驅(qū)動(dòng),售后告訴我不支持Linux。在pc上面使用很不錯(cuò)。接下來(lái)的任務(wù)是用到ARM開(kāi)發(fā)板上面。

當(dāng)把4根線(xiàn),直接連接到開(kāi)發(fā)板上面,為電阻屏預(yù)留的4個(gè)AD上面后,確實(shí)能夠使用,不過(guò)鼠標(biāo)并不能實(shí)時(shí)跟隨觸屏,會(huì)有跳動(dòng),而且在左側(cè)區(qū)域按下后,鼠標(biāo)跟隨過(guò)來(lái),當(dāng)松開(kāi)觸摸屏后,鼠標(biāo)并沒(méi)有固定在按下的區(qū)域,而是回到右側(cè)區(qū)域,類(lèi)似于回到原點(diǎn)一樣。觸摸屏的最還沒(méi)有反映,但是在Windows下觸屏是沒(méi)有問(wèn)題的。查看了內(nèi)核的AD輸出結(jié)果,看不出來(lái)什么原因,不得已只好放棄。

本文引用地址:http://butianyuan.cn/article/201611/317925.htm

在Windows下的驅(qū)動(dòng)文件中找到了一份使用手冊(cè),里面介紹了USB的協(xié)議,比較詳細(xì)。然后查找看看內(nèi)核是不是能夠支持USB的觸摸屏,在網(wǎng)上找到資料說(shuō)能夠支持,文件在Linux3.6.9/drivers/input/touchscreen/usbtouchscreen.c,找到后,跟協(xié)議進(jìn)行比較,發(fā)現(xiàn)egalax的數(shù)據(jù)協(xié)議和手冊(cè)里面描述的基本一樣。看到了曙光!對(duì)內(nèi)核進(jìn)行配置Device Drivers--->Input Device Support--->Touchscreens--->USB TouchScreen Driver--->eGalax, eTurboTouch CT-410/510/700 device support。這樣就配置好了內(nèi)核,編譯移植到開(kāi)發(fā)板,確實(shí)可以用,但是總有一個(gè)軸是反的(從左向右滑動(dòng)時(shí),鼠標(biāo)從右向左運(yùn)動(dòng),當(dāng)我把4根觸屏線(xiàn),顛倒后,變成從上到下滑動(dòng)時(shí),鼠標(biāo)從下向上運(yùn)動(dòng)),單獨(dú)顛倒x軸或者y軸的兩個(gè)線(xiàn)也解決不了。最后想到可以認(rèn)為的通過(guò)軟件顛倒一下。協(xié)議使用的是11位數(shù)據(jù),即2048。所以在usbtouchscreen.c中更改egalax_read_data函數(shù),在dev->x = ((pkt[0] & 0x0F) << 7) | (pkt[4] & 0x7F);下增加一行dev->x = 2048 - dev->x;重新編譯移植。Ok?。?!觸屏完全可以使用。下圖是使用的觸摸屏。

經(jīng)過(guò)之后的驗(yàn)證,這種方式不能算作是觸摸屏,而更應(yīng)該稱(chēng)之為觸摸板,類(lèi)似于筆記本的觸摸板一樣。如果要求沒(méi)那么嚴(yán)格倒是可以使用。



關(guān)鍵詞: ARMlinuxusb接口觸

評(píng)論


技術(shù)專(zhuān)區(qū)

關(guān)閉