Как я могу сделать evdev геймпад, если функция оператора печатать глобально? - PullRequest
0 голосов
/ 24 марта 2020

вместо индивидуальной печати, как печатать в глобальном масштабе как для связи через сокет, например (90 90)

print(steering, throttle)
from evdev import InputDevice, categorize, ecodes
gamepad = InputDevice('/dev/input/event8')
print(gamepad)
for event in gamepad.read_loop():
    if event.type == ecodes.EV_ABS:
        if event.code == 0:
            steering = event.value/2047*180
            steering = steering-0
            print('steering', steering)

        elif event.code == 1:
            throttle = event.value/2047*180
            print('throttle', throttle)

1 Ответ

0 голосов
/ 25 марта 2020
from evdev import InputDevice, categorize, ecodes
gamepad = InputDevice('/dev/input/event8')

steering = 0
throttle = 0

def otherthings():
    ...

def sticks():
    global steering, throttle

    for event in gamepad.read_loop():
        if event.type == ecodes.EV_ABS:
            if event.code in (0, 1):
                if event.code == 0:
                    steering = event.value/2047*180

                elif event.code == 1:
                    throttle = event.value/2047*180

def main():
    while True:
        # do things
        sticks()
        print(f'steering: {steering}, throttle: {throttle}')
        # maybe do other things

if __name__ == '__main__':
    main()
...