我正在通过USB读取实时数据,但数据已缓冲。我该如何停止缓冲?
答案 0 :(得分:5)
<强>的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"
这导致设备等待更短的时间,然后才决定不再有缓冲的传入数据。在这种情况下,我的设备从等待16ms到等待2ms。
例如,使用udevadm info -a -n /dev/ttyUSB0
找出要在规则中匹配的键值对。要记住一些棘手的事情,但是一旦我知道使用udev规则,找到资源来帮助解决这些问题很容易。
这是writing udev rules上的一个很好的参考页面。它很旧,udev工具的语法已经改变,但概念仍然有效。
<强>窗强>
在Windows上,您使用Device Manager->Ports->COM Port->Port Settings->Advanced->Latency Timer
。