树莓派学习笔记三:设备端口绑定
来源:互联网 发布:网络歌手好听的歌2017 编辑:程序博客网 时间:2024/05/21 15:03
吃水不忘挖井人:参考链接http://blog.csdn.net/kangear/article/details/46302741
我们在树莓派上玩ROS的时候通常会插入不同的USB设备,这些设备有USB通信的如Kinect,也有USB串口设备(如激光雷达,树莓派与底盘接口等)以USB转串口为例,通常设备节点名为ttyUSBx(x为0~n),Linux内核会根据插入设备的先后顺序进行编号的分配,比如第一个插入的设备编号为0,然后依此加1。那么问题来了,如果仅仅以设备节点ttyUSBn来区别具体是哪个设备,因为末位的编号是随时会变的,所以就会造成混乱。无法保证A设备就是0,B设备就是1。目前的内核早已经解决类似的问题,将所以有USB设备都导致到sys文件系统中,其实每个USB端口都有唯一的端口号,相当于每个门店的门牌号。只要我们依据端口号来进行设备的区分,那么问题就迎刃而解了。
比如当前设备插入两个USB转串口设备后,查看ttyUSBn
所在端口的端口号:
- 1
- 2
- 3
- 4
- 5
- 1
- 2
- 3
- 4
- 5
其中ttyUSB0
所在的端口号为3-1.1
,而ttyUSB1
所在的端口号为3-1.2
。
那么有了这个物理端口,接下来应该怎么玩呢?写脚本绑定,脚本举例如下所示:
#!/bin/bashecho 'KERNELS=="3-1.1", MODE:="0666", GROUP:="dialout", SYMLINK+="serial_0"' >/etc/udev/rules.d/seriel_0.rulesecho 'KERNEL=="ttyACM*", ATTRS{idVendor}=="2341", ATTRS{idProduct}=="0042", MODE:="0666", GROUP:="dialout", SYMLINK+="dashgo"' >/etc/udev/rules.d/dashgo.rulesecho 'KERNEL=="ttyUSB*", ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="7523", MODE:="0666", GROUP:="dialout", SYMLINK+="dashgo"' >/etc/udev/rules.d/ch34x.rulesservice udev reloadsleep 2service udev restart
如上第一行所示,KERNELS就是你要做重命名的物理端口号,MODE:="0666"的意思是这个端口的设备具有读写权限,这样就不用脑残地每次都敲一遍chmod ** 666了,GROUP为用户组,SYMLINK+=的意思是在系统默认的设备名的基础上再添加一个设备名叫serial_0这个可以你自己指定,以后插在这个物理端的设备都会多一个这个名字,这样以后操作这个固定的设备名就可以了。其他几行的原理类似,其他几行都是通过idVendor idProduct 的值来确定设备的设备号,这样有一个问题就是如果碰到两个设备使用一模一样的串口芯片,那么这两个设备的idVendor和idProduct的值是一样的,也就是说通过这种方式是无法区分两个设备的(笔者在机器人产品开发的过程中就碰到了)。
根据自己的情况完成脚本
然后:
sudo sh ./脚本名.sh
重新插拔设备 观察现象 应当是大功告成,如有问题请留言
- 树莓派学习笔记三:设备端口绑定
- 树莓派学习笔记:设备端口绑定
- 树莓派设备端口号绑定
- ButterKnife学习笔记【三】--- Activity中的绑定
- 交换机MAC地址与端口的绑定------学习笔记
- 字符设备驱动程序学习笔记三
- 树莓派给特定USB端口特定设备绑定自定义设备符
- 学习《Linux设备模型浅析之设备篇》笔记(三)
- silverlight 学习笔记 (三): silverlight中的数据绑定
- SilverLight学习笔记之三数据绑定方式(上)
- Kaldi决策树状态绑定学习笔记(三)
- 【学习笔记三】- 动态添加元素绑定事件函数测试
- php学习笔记三:修改 xampp 默认端口号
- 《Linux设备设备驱动程序(第三版)》学习笔记之三:sleepy设备的使用
- 《Linux设备设备驱动程序(第三版)》学习笔记之三:sleepy设备的使用
- [linux驱动]linux块设备学习笔记(三)
- USB学习笔记三《读写USB设备+示例代码》
- 《Windows via C/C++》学习笔记 —— 设备I/O之“I/O完成端口”
- Git 修改提交的用户名和邮箱名字
- 树莓派+有源低电平触发蜂鸣器+人体红外感应器HC-SR501实现感应报警
- jQuery判断元素是否存在的可靠方法
- go语言之斐波那契数列的几种实现方法
- SAP HANA CREATE SCHEMA
- 树莓派学习笔记三:设备端口绑定
- link和@import引入css文件的区别
- |hdu 2874|LCA|并查集|Connections between cities
- 全兼容系列(2)-----------------------封装自动选项卡
- Spatial Pyramid Pooling
- 用 GStreamer 简化 Linux 多媒体开发
- Python——模块
- NITc语言作业 图书管理系统
- 引用于指针的区别