在ARM linux上使用usb接口的触屏
来源:互联网 发布:exe mac要怎么打开 编辑:程序博客网 时间:2024/05/22 01:44
应公司需要,在现有设备上面要使用触摸屏,显示器的尺寸是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!!!触屏完全可以使用。下图是使用的触摸屏。
经过之后的验证,这种方式不能算作是触摸屏,而更应该称之为触摸板,类似于笔记本的触摸板一样。如果要求没那么严格倒是可以使用。
- 在ARM linux上使用usb接口的触屏
- 在ARM Linux上使用OpenGL
- 在ARM Linux上使用Apache+PHP
- 在ARM Linux上使用Apache+PHP
- 在ARM Linux上使用OpenGL
- 在ARM Linux上使用OpenGL
- 在ARM Linux上使用OpenGL
- 在ARM板上,下载不同的东西使用不同的下载接口(加深理解)。
- 在嵌入式Linux上使用CF接口的蓝牙模块
- 在嵌入式Linux上使用CF接口的蓝牙模块
- 关于linux在arm上的移植
- 在arm linux 上构建的系统
- tslib在arm上的安装使用
- Eigen在ARM上的使用
- 在ARM平台上的C使用#pragma arm section
- usb上的Linux
- 在vbox上启用usb设备接口
- osip/eXosip在Linux-2.6.37+@ARM上使用的问题
- Android SDk下的文件夹
- 多继承无虚函数覆盖下的vftb排列
- IPython extra space issue
- 中英文字体对照表
- 3.结构体与链表
- 在ARM linux上使用usb接口的触屏
- 第一个struct
- [C++]KMP算法实现
- LeetCode-21 Merge Two Sorted Lists(合并两个有序链表)
- 树形DP进阶之背包问题
- 第八章 List Dictionaries
- C#设计模式(单例
- windows下安装MongoDB
- iOS UITextField 限制用户输入小数点后位数的方法