USB-джойстик для чтения Python3

Я очень зеленый для Python и Python3. Большая часть моего опыта связана с работой на микропроцессорах, таких как Arduinos и Basic Stamp.

Поэтому я пишу что-то, что позволяет управлять IP-камерой с помощью джойстика. План состоит в том, чтобы использовать что-то вроде Pi для запуска кода. Программа прочитает USB-джойстик и преобразует его в URL для API камер. Я получил это далеко, но с проблемой.

код должен быть запущен на Linux OS Uber Ubuntu или Rasbian

Я так далеко продвинулся и, кажется, хорошо работаю, за исключением того, что наткнулся на часть кода, который я использую для чтения джойстика.

это просто фрагмент остальной части кода

import sys

pipe = open('/dev/input/js0', 'rb') #open joystick 
action = []
while True:
    StickValue = readStik(pipe)
    print ("StickValue")

    def readStick(pipe):
        action = []
        while stop == 1:
            for character in pipe.read(1):
                action += [int(character)]
                if len(action) == 8:
                    StickValue = action
                    action = []
                    stop = 2
                    ##when joystick is stationary code hangs here.
                    return  StickValue


#do some more stuff here while waiting for new joystick inputs apposed to hanging

Я могу понять, почему он зависает, ожидая, пока все 8 байтов не будут считаны, прежде чем остановить цикл while, но я пытаюсь понять, как мне это обойти, или есть лучший способ чтения джойстика. Сейчас я смотрю на pygame, но это будет означать серьезную переписку оставшейся части кода.

Спасибо

1 ответ

Попробуйте отключить буферизацию, добавив buffering=0 к open вызов.

Другие вопросы по тегам