我正在通过USB读取实时数据,但数据是缓冲的.我该如何停止缓冲?
解决方法:
使用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"
这导致设备等待更短的时间,然后才决定不再有缓冲的输入数据.在这种情况下,我的设备从等待16ms到等待2ms.
例如,使用udevadm info -a -n / dev / ttyUSB0找出要在规则中匹配的键值对.要记住一些棘手的事情,但一旦我知道使用udev规则,找到资源来帮助解决这些问题很容易.
这是writing udev rules上的一个很好的参考页面.它已经过时了,udev工具的语法也发生了变化,但这些概念仍然有效.
视窗
在Windows上,您使用设备管理器 – >端口 – > COM端口 – >端口设置 – >高级 – >延迟计时器.