您的位置 首页 知识

在ARM linux上运用usb接口的触屏

应公司需要,在现有设备上面要使用触摸屏,显示器的尺寸是15寸,于是自己从淘宝上面买了个15寸4线电阻屏回来,带Windows下的驱动,售后告诉…

应公司需求,在现有设备上面要运用触摸屏,显示器的尺度是15寸,所以自己从淘宝上面买了个15寸4线电阻屏回来,带Windows下的驱动,售后告诉我不支撑Linux。在pc上面运用很不错。接下来的使命是用到ARM开发板上面。

当把4根线,直接连接到开发板上面,为电阻屏预留的4个AD上面后,的确能够运用,不过鼠标并不能实时跟从触屏,会有跳动,并且在左边区域按下后,鼠标跟从过来,当松开触摸屏后,鼠标并没有固定在按下的区域,而是回到右侧区域,类似于回到原点相同。触摸屏的最还没有反映,可是在Windows下触屏是没有问题的。查看了内核的AD输出成果,看不出来什么原因,不得已只好抛弃。

在Windows下的驱动文件中找到了一份运用手册,里边介绍了USB的协议,比较具体。然后查找看看内核是不是能够支撑USB的触摸屏,在网上找到材料说能够支撑,文件在Linux3.6.9/drivers/input/touchscreen/usbtouchscreen.c,找到后,跟协议进行比较,发现egalax的数据协议和手册里边描绘的根本相同。看到了曙光!对内核进行装备Device Drivers—>Input Device Support—>Touchscreens—>USB TouchScreen Driver—>eGalax, eTurboTouch CT-410/510/700 device support。这样就装备好了内核,编译移植到开发板,的确能够用,可是总有一个轴是反的(从左向右滑动时,鼠标从右向左运动,当我把4根触屏线,倒置后,变成从上到下滑动时,鼠标从下向上运动),独自倒置x轴或许y轴的两个线也解决不了。最终想到能够以为的通过软件倒置一下。协议运用的是11位数据,即2048。所以在usbtouchscreen.c中更改egalax_read_data函数,在dev->x = ((pkt[0] & 0x0F) << 7) | (pkt[4] & 0x7F);下添加一行dev->x = 2048 – dev->x;从头编译移植。Ok!!!触屏完全能够运用。下图是运用的触摸屏。

通过之后的验证,这种方法不能算作是触摸屏,而更应该称之为触摸板,类似于笔记本的触摸板相同。假如要求没那么严厉却是能够运用。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/zhishi/277191.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部