使用TX2读取USB手柄/方向盘的输出控制

非原创项目需要 留存 摘要:在淘宝上买到的游戏手柄/USB卖家只给了下的驱动,本来以为下没有驱动,没想到网上早已经有人用cpp开发出了USB手柄的驱动,搜索很多博客的方法终于从手柄拿到数据 。
【使用TX2读取USB手柄/方向盘的输出控制】Linux真给力!!
目录
目录1.cat命令2.hexdump命令3.获取游戏手柄的端口输出(1)获取端口(2)读取游戏手柄端口数据4.代码实现warning:deprecated conversion from string constant to ‘char *’主要参考
1.cat命令
cat 是一个文本文件查看和连接工具 。查看一个文件的内容,用cat比较简单,就是cat 后面直接接文件名,如cat .txt
cat –help可以查看cat帮助信息,如各种参数使用方法,当然也可以用man cat来查看,建议大家养成遇到命令不懂用法时,用–help或man来查看帮助信息,养成好习惯 。filename为文件名,即系统中需要查看的文件名字 。与这个命令相似功能的命令有:tac,less,tail,more1 options:2 -b:--number-nonblank 对非空输出行编号,即在每行前显示所在行号3 -n:--number 对输出的所有行编号,即在每行前显示所在行号
注:cat命令
2.命令
命令一般用来查看“二进制”文件的十六进制编码,但实际上它能查看任何文件,而不只限于二进制文件 。
1hexdump [选项] [文件]...
1 options:2 -n length 只格式化输入文件的前length个字节 。3 -C 输出规范的十六进制和ASCII码 。4 -b 单字节八进制显示 。5 -c 单字节字符显示 。6 -d 双字节十进制显示 。7 -o 双字节八进制显示 。8 -x 双字节十六进制显示 。9 -s 从偏移量开始输出 。10 -e 指定格式字符串,格式字符串包含在一对单引号中,格式字符串形如:'a/b "format1" "format2"' 。
注:命令
3.获取游戏手柄的端口输出
(1)获取端口
在插入设备时,linux系统会使用input子系统,操作系统会为每一个设备分配event号,先插上的为,后插上的为,首先获取linux系统为游戏手柄分配的event号 。
当游戏手柄插入电脑时,需要找到手柄的even号:
1 cat /proc/bus/input/devices
注:或者可以使用>将输出写入一个txt文档
1cat /proc/bus/input/devices >log1.txt
获得如下输出
I: Bus=0003 =11ff =001c =0111

使用TX2读取USB手柄/方向盘的输出控制

文章插图
N: Name=“PXN-V3II”
P: Phys=usb-0000:00:14.0-11/
S: Sysfs=//:00/0000:00:14.0/usb1/1-11/1-11:1.0/0003:11FF:001C.0009/input/
U: Uniq=
H: = js0
B: PROP=0
B: EV=1b
B: KEY=1fff0 0 0 0 0
B: ABS=30027
B: MSC=10
1 I: Bus=0003 Vendor=11ff Product=001c Version=01112 N: Name="PXN-V3II"3 P: Phys=usb-0000:00:14.0-11/input04 S: Sysfs=/devices/pci0000:00/0000:00:14.0/usb1/1-11/1-11:1.0/0003:11FF:001C.0009/inpu/input295 U: Uniq=6 H: Handlers=event21 js0 7 B: PROP=08 B: EV=1b9 B: KEY=1fff000000000000 0 0 0 010 B: ABS=3002711 B: MSC=10
在端口处找到设备名字“PXN-V3II”,/js0我们的手柄的接口 。
开始的时候有时候找不到,是手柄中的版本不对,根据产品说明书需要由X-input转换到D-input模式 。(长按home键3秒)X -input适用于XBOX360移植到PC上的即插即玩的游戏,D-input适用于早期单机游戏如极品飞车1-12等 。——要不是要在unbuntu下开发哪来这么多幺蛾子 。。。
(2)读取游戏手柄端口数据
查看输入
1ls /dev/input
可以看见js0和,使用以下代码查看端口输出:
1 cat /dev/input/js0 | hexdump