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
вызов.