чтение питона HID - PullRequest
       10

чтение питона HID

3 голосов
/ 10 августа 2011

Я хотел бы создать программу, которая принимает данные от HID, подключенных к системе Linux, и генерирует MIDI из них.Я в порядке на стороне MIDI, но я борюсь на стороне HID вещей.Хотя этот подход работает нормально (взято из здесь ):

#!/usr/bin/python2
import struct

inputDevice = "/dev/input/event0" #keyboard on my system
inputEventFormat = 'iihhi'
inputEventSize = 16

file = open(inputDevice, "rb") # standard binary file input
event = file.read(inputEventSize)
while event:
  (time1, time2, type, code, value) = struct.unpack(inputEventFormat, event)
  print type,code,value
  event = file.read(inputEventSize)
file.close()

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

Итак, есть ли лучший способ сделать это в Python?Я бы предпочел не использовать необслуживаемые или старые библиотеки, так как я хотел бы иметь возможность распространять этот код и заставить его работать в современных дистрибутивах (поэтому конечные зависимости легко могут быть доступны в менеджерах пакетов для конечных пользователей)1008 *

1 Ответ

1 голос
/ 07 ноября 2011

Есть много событий, которые не соответствуют вашим требованиям.Вы должны фильтровать события по типу или коду:

while event:
  (time1, time2, type, code, value) = struct.unpack(inputEventFormat, event)
  if type==X and code==Y:
    print type,code,value
  event = file.read(inputEventSize)
...