背景:使用USBCAN控制电机,USBCAN通过usb接口连接工控机,工控机是ubuntu系统,运行修改好后的C++程序发现一直打开设备失败,是一直失败不会成功
但是用sudo ./test 就能很快成功打开。
问题原因:
查阅了许多网上资料,原因好像是普通用户操作linux系统的外设需要权限,所以在加有sudo的条件下才能成功打开设备。
解决方法:
法一:
在终端中输入chmod指令,指定在当前终端下某个外设挂载点的权限,指令如下:
sudo chmod 777 /dev/bus/usb/001/005
缺点:重启后需要重新配置
法二:
用udevadm查看设备信息
sudo udevadm info --attribute-walk --name=/dev/bus/usb/001/005
1)进入/etc/udev/rules.d/目录下
cd /etc/udev/rules.d/
2)在该目录下创建对应外设的规则文件,后缀为.rules,名字自己取。以usbcan为例子,创建usbcan.rules文件
sudo touch usbcan.rules
sudo gedit usbcan.rules
3)在规则文件下输入以下信息
KERNELS==“1-3”,SUBSYSTEMS==“usb”,ATTR{idVendor}“0c66”,ATTR{idProduct}“000c”,MODE:=“0777”, SYMLINK+=“usbcan”
注意这些信息是在上面查到的你自己设备的信息,不要直接照搬上面的
4)保存,退出规则文件。然后重启udev服务并重新插拔外设的USB
sudo service udev reload
sudo service udev restart
参考:
1)https://blog.csdn.net/sinat_14854721/article/details/115789609
2)https://blog.csdn.net/wjhtu_csdn/article/details/116926645
3)https://blog.csdn.net/bigdog_1027/article/details/79009603