USB Device 数据读取方式的研究
来源:互联网 发布:斯塔夫里阿诺斯 知乎 编辑:程序博客网 时间:2024/06/05 15:17
作者:Sam (甄峰) sam_code@hotmail.com
随着越来越多的设备通过USB接口与主机连接,我们需要读取USB设备的数据。现就几种不同读取USB Device Data的方法进行探讨。非常欢迎网友补充。
方法一:读取/dev/input/eventX
此方法只对HID设备有效。只要USB设备注明是HID Input设备,则它的数据就会被解析为输入设备并填入/dev/input/eventX.
对此设备的操作和数据读取。见:
http://blog.sina.com.cn/s/blog_602f87700101dno6.html
要系统自动创建/dev/input/eventX. 则需要在Kernel配置中作如下动作:
Device Drivers ---> Input device support ---> -*- Generic input layer (needed for keyboard, mouse, ...)
Device Drivers ---> Input device support ---> <<font color="#ed1c24">* > Event interface
优点:ioctl众多,可以得到输入设备非常多的信息。且数据结构明显。读取数据方便。
缺点:数据只包括HID Input 数据,其它非Input Event数据如Raw Data。 则无法从这里得到。
方法二:读取/dev/hidrawX 设备:
/dev/hidrawX设备解释:
当支持不是标准的User interface Device的HID Device时。/dev/hidrwa与稍候会提到的/dev/hiddev的区别是:这个Device不处理hid Event. not parsing, no lookups.
要避免使用用户层库 libhid/libusb. (Sam对Kernel中这个说明也不太明白,因为发现hidraw与libusb可以同时使用的)
要支持/dev/hidraw. 则需要Kernel作如下配置:
Device Drivers ---> [*] HID Devices ---> [*] /dev/hidraw raw HID device support
读取过程:
首先看其数据结构:
#hexdump /dev/hidraw2
0000000 fe04 0054 0000 0000 0001 0000 0000 0000
0000010 0000 0000 0000 ff00 00ff 0000 2300 005a
0000020 fe04 0054 0000 0000 0001 0000 0000 0000
0000030 0000 0000 0000 ff00 00ff 0000 2300 005a
0000040 fe04 0054 0000 0000 0001 0000 0000 0000
0000050 0000 0000 0000 ff00 00ff 0000 2300 005a
以Sam这个设备为例:可以发现每32个字节,数据有个重复。所以推测USB设备每个数据包32字节。
所以可以使用open,read 等方式得到USB Device Raw Data.
阅读全文
0 0
- USB Device 数据读取方式的研究
- usb 的device class
- Linux下USB HID device driver研究
- USB Host和USB Device的区别
- Android Usb的研究
- Linux下 USB HID device driver研究(三)--probe
- Linux下USB HID device driver研究(三)--probe
- Linux下USB HID device driver研究(二)
- Linux下USB HID device driver研究(一)
- Linux下USB HID device driver研究(一)
- Linux下USB HID device driver研究(二)
- Linux下USB HID device driver研究(二)
- android 通过usb 读取数据
- android读取usb设备数据
- js读取usb扫码枪数据
- USB device
- usb device
- 关于通过驱动程序读取usb接口数据的问题?
- 输入几个数逆序输出
- 高数 08.05 一阶微分方程的解法练习
- 通过adb命令查看当前activity(更新版)
- Minimum Snap Grid Size is 10mil
- Android新特性介绍,ConstraintLayout完全解析
- USB Device 数据读取方式的研究
- 1到n 的平方和立方
- PyCharm如何设置源代码字体的大小
- PHP入门——语法
- 反身理论
- mybatis小坑总结帖
- 如何实现网页鼠标浏览左边的导航右边显示对应的页面
- 关于SQL SERVER 的授权问题
- mt2503 [PHB]如何在IDLE界面拨打SDN号码时能显示其名称?