手头有一个小项目,我认为这将是学习 python 的一个很好的借口。使用我这里的游戏手柄(Logitech F310),操纵杆的 X 轴和 Y 轴的值在 0-255 之间变化,当它们在中心“空闲”时为 127 或 128。
使用此代码(来自http://www.lafavre.us/robotics/IoT_LogitechF310.pdf)
from evdev import InputDevice, categorize, ecodes, KeyEvent
gamepad = InputDevice('/dev/input/event3')
for event in gamepad.read_loop():
if event.type == ecodes.EV_ABS:
absevent = categorize(event)
if ecodes.bytype[absevent.event.type][absevent.event.code] == 'ABS_RZ':
if absevent.event.value > 128:
print 'reverse'
print absevent.event.value
elif absevent.event.value < 127:
print 'forward'
print absevent.event.value
if ecodes.bytype[absevent.event.type][absevent.event.code] == 'ABS_Z':
if absevent.event.value > 128 :
print 'right'
print absevent.event.value
elif absevent.event.value < 127:
print 'left'
print absevent.event.value
我能够获得上、下、右、左的位置;到目前为止我未能完成的是,当操纵杆位于 X 轴和 Y 轴之间时,如何检索 X 和 Y 的值,这是狭窄的间隔(准确地说是 4)。