Как остановить буферизацию USB? - PullRequest
5 голосов
/ 16 июля 2010

Я читаю данные в реальном времени через USB, но данные буферизируются.Как мне остановить буферизацию?

1 Ответ

5 голосов
/ 16 июля 2010

Linux

Используйте udev для изменения параметра latency_timer.

В ubuntu создайте правило для /etc/udev/rules.d для вашего устройства.Например, 99-xsens.rules

Создайте в этом файле правило, соответствующее вашему устройству, и укажите значение latency_timer.Например, для моего устройства это:

KERNEL=="ttyUSB[0-9]*", SUBSYSTEMS=="usb-serial", DRIVERS=="ftdi_sio", ATTR{device/latency_timer}="2"

Это заставляет устройство ждать более короткое время, прежде чем решить, что больше нет входящих данных для буферизации.В этом случае мое устройство перешло от ожидания 16 мс к ожиданию 2 мс.

Используйте, например, udevadm info -a -n /dev/ttyUSB0, чтобы узнать, какие пары ключ-значение должны совпадать в вашем правиле.Есть некоторые хитрые вещи, о которых нужно помнить, но найти ресурсы для помощи во входах и выходах было легко, когда я знал, что использовать правила udev.

Вот хорошая справочная страница по написанию правил udev .Он старый, и синтаксис инструментов udev изменился, но концепции все еще действительны.

Windows

В Windows вы используете Device Manager->Ports->COM Port->Port Settings->Advanced->Latency Timer.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...