Как я останавливаю буферизацию USB?

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

5
задан cape1232 16 July 2010 в 16:48
поделиться

1 ответ

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 вы используете Диспетчер устройств-> Порты-> COM-порт-> Настройки порта-> Дополнительно-> Таймер задержки .

6
ответ дан 14 December 2019 в 13:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: