我正在尝试从Ubuntu上的python中的PS3控制器读取数据,但我运气不太好。我从柳树车库的ps3joy司机开始(http://www.ros.org/wiki/ps3joy)据说它会将PS3控制器的所有重要部分发布到我从未听说过的“uinput”上。显然,这是一个允许用户空间驱动程序提供系统事件的linux功能。。。既然WG驱动程序应该是一个用户空间驱动程序,为什么它需要根用户访问权限,这不是我的问题。在
不管怎么说,我试图让它工作的当前状态是,我已经让驱动程序工作了,我已经验证了它对控制器上按钮的按下做出了响应,但我不知道如何将这些数据提取出来以便我可以使用它。在
我的第一个猜测是使用pygame(希望)读取/dev/uinput(我很确定驱动程序在哪里发送数据):
from pygame import joystick
if not joystick.get_init():
joystick.init()
js = joystick.Joystick(0) # there is only one joystick... even if the driver isn't running(!)
js.init()
print js.get_numbuttons() # perhaps coincidentally correctly prints 17 which is the number of buttons on a PS3 controller
for i in range(js.get_numaxes()):
print js.get_axis(i) # always prints 0, no matter what I'm doing with the controller
但没用。最能说明问题的部分是,如果我根本没有运行WG驱动程序,它会做同样的事情。在
我确信这很简单,我只是没有读到正确的信息,但是google并没有帮助我找到正确的信息,我感到疲惫和绝望。在
你不需要司机。假设控制器将自身公开为HID,则可以使用event subsystem直接从设备读取控制器事件。在
我知道已经太迟了,但是如果有人需要代码或者正在为之挣扎,你可以用我的。我用python编写了一个脚本,从USB获取ps3数据,并通过PC的蓝牙发送到特定的MAC地址(您可以使用ps3)控制器.py仅用于数据)。 这是为我的四轮直升机项目做的。在
https://github.com/urbanzrim/ps3controller
试试看
在pygame.event.pump()
在你读操纵杆之前。我需要它来配合360控制器
相关问题 更多 >
编程相关推荐