用Python读取操纵杆值

用Python读取操纵杆值,python,raspberry-pi,pygame,joystick,Python,Raspberry Pi,Pygame,Joystick,我想阅读罗技罗技极限3D Pro的价值观和覆盆子圆周率。我在用电话 剧本: import pygame import sys import time pygame.joystick.init() print pygame.joystick.get_count() _joystick = pygame.joystick.Joystick(0) _joystick.init() print _joystick.get_init() print _joystick.get_id() print

我想阅读罗技罗技极限3D Pro的价值观和覆盆子圆周率。我在用电话

剧本:

import pygame
import sys
import time

pygame.joystick.init()

print pygame.joystick.get_count()

_joystick = pygame.joystick.Joystick(0)
_joystick.init()
print _joystick.get_init()
print _joystick.get_id()
print _joystick.get_name()
print _joystick.get_numaxes()
print _joystick.get_numballs()
print _joystick.get_numbuttons()
print _joystick.get_numhats()
print _joystick.get_axis(0)
输出:

1
1
0
Logitech Logitech Extreme 3D Pro
4
0
12
SDL_JoystickNumHats value:1:
1
SDL_JoystickGetAxis value:0:
0.0
有4个轴,我把它们都转动了

我找不到问题。我已经试过使用其他轴了


谢谢您的帮助。

如果问题是值始终为0,请在读取值之前尝试执行此操作。我也遇到过类似的问题,这很有帮助。

我遇到了同样的问题。必须编写pygame.event.get()才能从操纵杆读取信息。否则它永远不会更新。

我宁愿等待(在一个线程中甚至更多) 例如:

    axes = [ 0.0 ] * your_joystick.get_numaxes()
    buttons = [ False ] * your_joystick.get_numbuttons()

    while self.keep_alive:
        event = pygame.event.wait()
        if event.type == pygame.QUIT:
             self.keep_alive = False
        elif event.type == pygame.JOYAXISMOTION:
            e = event.dict
            axes[e['axis']] = e['value']
        elif event.type in [pygame.JOYBUTTONUP, pygame.JOYBUTTONDOWN ]:
            e = event.dict
            buttons[e['button']] ^= True

预期的输出是什么?您是否尝试过在
get_axis
上循环,或者处理
JOYAXISMOTION
事件而不是轮询?有可能操纵杆始终将初始位置视为0,因此在
get_init
之后立即调用
get_axis
将始终返回0.0。