赞
踩
一般如果只连接一个串口设备,则设备名称为ttyUSB0;短时间内拔插串口设备名称可能会改变例如ttyUSB1等;所以需要设置成开机就赋予权限。
解决方案如下:
在终端中输入
sudo gedit /etc/udev/rules.d/70-ttyusb.rules
这一步操作是修改udev规则,在打开的文件中添加以下字段 将ttyUSB0-9都赋予权限
KERNEL==“ttyUSB[0-9]*”, MODE=“0666”
重启系统即可生效,可以直接在程序中使用串口设备了。
项目中的imu设备使用422转USB来连接PC,通过rosserial来接受100hz的高频数据。过程中发现串口实际的工作频率只有30hz,后来查找一些文章找到了原因。
解决方案如下:
查看当前系统的latency_time值,默认是16
cat /sys/bus/usb-serial/devices/ttyUSB0/latency_timer
使用以下命令可以修改latency_time值到1,修改以后重启串口使用程序即刻生效,但是重启电脑以后会恢复默认值
- sudo chmod 0666 /sys/bus/usb-serial/devices/ttyUSB0/latency_timer
- echo 1 > /sys/bus/usb-serial/devices/ttyUSB0/latency_timer
使其永久生效的方法还是修改udev的规则,同问题1操作
sudo gedit /etc/udev/rules.d/70-ttyusb.rules
加入以下语句 并保存,重启电脑可以使用上面的语句查看是否生效。
ACTION=="add", SUBSYSTEM=="usb-serial", DRIVER=="ftdi_sio", ATTR{latency_timer}="1"
参考了以下文章
Linux/ubuntu下ttyUSB0等串口永久权限设置_汉文修士的博客-CSDN博客_ttyusb0权限
latency_timer值对usb转串口设备的卡顿、延时性能的影响_BWBOT的博客-CSDN博客_latency timer
latency of usb serial bus in the case of ubuntu 16.04 · Issue #383 · ros-drivers/rosserial · GitHub
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。