Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: что находится в /dev/hidraw  (Прочитано 2020 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Peter_I

  • Автор темы
  • Старожил
  • *
  • Сообщений: 3269
    • Просмотр профиля
что находится в /dev/hidraw
« : 23 Июня 2016, 23:43:08 »
Здравствуйте!

Не знает ли кто, как формируются данные для /dev/hidraw? Есть джойстик с кнопками,
правильно читать его состояние получением событий от /dev/input/js0, но мне удобнее читать
/dev/hidraw0. При этом оказалось, что чем больше период опроса, тем больше задержка между
изменением состояния джойстика и получением информации об этом с /dev/hidraw0.
Например, если файл, связанный с /dev/hidraw0, открыт постоянно, опрос происходит с периодом
500ms и каждый раз исполняется одна команда read(), то задержка составляет 64 периода.
Т.е. я нажал кнопку, а из /dev/hidraw0 её изменившееся состояние считлось только через 64 периода.
Помогает многократный вызов read(), для периода 500ms это 48 операций чтения, чтобы считались последние данные, для периода 48ms это 4 вызова read(). Такая же задержка, в 64 периода по 500ms, если читать /dev/hidraw0 как потоковый файл.
Если каждый раз при опросе открывать этот файл и после чтения закрывать, то задержка
вроде меньше, но всё равно есть, в этом случае я её не измерял.

Почему так происходит, ведь с /dev/input/js0 событие по изменению состояния излучается
без задержки? И можно ли это как-то побороть? При чтении /dev/hidraw0 как потокового
файла я пробовал вызывaть для него fflush() перед чтением, но это не помогло. Правда,
подробно я это вариант не проверял.
Пётр.

 

Страница сгенерирована за 0.02 секунд. Запросов: 22.