在树莓派下对多个串口转USB设备进行设备名称绑定操作
在开发过程中,需要用一个树莓派链接多个串口转USB设备(GPS模块,数传模块等),在树莓派linux系统环境下,USB串口设备的命名规则是 /dev/ttyUSB0 ,/dev/ttyUSB1,/dev/ttyUSB2。串口设备的命名规则一般是根据设备插拔顺序进行命名,第一个插入的USB串口设备名称为/dev/ttyUSB0,第二个名称为 /dev/ttyUSB1,以此类推,但是在实验环境中,往往会发生USB设备插拔情况,从而导致串口设备命名混乱,为此,需要对串口设备进行名称绑定,固定串口设备名称。
在实现串口名称绑定操作前,首先介绍一下udev。udev是Linux系统下的设备管理工具,运行在用户空间下,能够通过侦听内核发出的ueven事件来管理./dev目录下设备文件,当USB设备进行插拔时,udev能够在/dev下添加和删除设备文件。在默认规则下,udev为所有linux设备定义了内核设备名称,比如/dev/sda,/dev/hda。另外,linux用户也可以编写自定义的规则文件,自定义标志设备文件。 udev的规则文件存放在/etc/udev/rule.d 目录,规则的命名以.rules为后缀。
下面给出树莓派linux环境下进行串口设备自定义命名步骤:
1.查看串口设备系统自定义的名称
pi@testclient:~ $ ls /dev | grep 'ttyUSB'
ttyUSB0
ttyUSB1
2.根据串口号,查询串口设备的详细信息
/dev/ttyUSB0
pi@testclient:~ $ udevadm info /dev/ttyUSB0
P: /devices/platform/soc/3f980000.usb/usb1/1-1/1-1.4/1-1.4:1.0/ttyUSB0/tty/ttyUSB0
N: ttyUSB0
S: serial/by-id/usb-FTDI_FT232R_USB_UART_A8008Sxy-if00-port0
S: serial/by-path/platform-3f980000.usb-usb-0:1.4:1.0-port0
S: ttyUSB4G
E: DEVLINKS=/dev/serial/by-id/usb-FTDI_FT232R_USB_UART_A8008Sxy-if00-port0 /dev/serial/by-path/platform-3f980000.usb-usb-0:1.4:1.0-port0 /dev/ttyUSB4G
E: DEVNAME=/dev/ttyUSB0
E: DEVPATH=/devices/platform/soc/3f980000.usb/usb1/1-1/1-1.4/1-1.4:1.0/ttyUSB0/tty/ttyUSB0
E: ID_BUS=usb
E: ID_MODEL=FT232R_USB_UART
E: ID_MODEL_ENC=FT232R\x20USB\x20UART
E: ID_MODEL_FROM_DATABASE=FT232 USB-Serial (UART) IC
E: ID_MODEL_ID=6001
E: ID_PATH=platform-3f980000.usb-usb-0:1.4:1.0
E: ID_PATH_TAG=platform-3f980000_usb-usb-0_1_4_1_0
E: ID_REVISION=0600
E: ID_SERIAL=FTDI_FT232R_USB_UART_A8008Sxy
E: ID_SERIAL_SHORT=A8008Sxy
E: ID_TYPE=generic
E: ID_USB_DRIVER=ftdi_sio
E: ID_USB_INTERFACES=:ffffff:
E: ID_USB_INTERFACE_NUM=00
E: ID_VENDOR=FTDI
E: ID_VENDOR_ENC=FTDI
E: ID_VENDOR_FROM_DATABASE=Future Technology Devices International, Ltd
E: ID_VENDOR_ID=0403
E: MAJOR=188
E: MINOR=0
E: SUBSYSTEM=tty
E: TAGS=:systemd:
E: USEC_INITIALIZED=9427187
/dev/ttyUSB1
udevadm info /dev/ttyUSB1
P: /devices/platform/soc/3f980000.usb/usb1/1-1/1-1.2/1-1.2:1.0/ttyUSB1/tty/ttyUSB1
N: ttyUSB1
S: serial/by-id/usb-FTDI_USB-RS232_Cable_FT2NUESH-if00-port0
S: serial/by-path/platform-3f980000.usb-usb-0:1.2:1.0-port0
S: ttyUSBGPS
E: DEVLINKS=/dev/serial/by-id/usb-FTDI_USB-RS232_Cable_FT2NUESH-if00-port0 /dev/serial/by-path/platform-3f980000.usb-usb-0:1.2:1.0-port0 /dev/ttyUSBGPS
E: DEVNAME=/dev/ttyUSB1
E: DEVPATH=/devices/platform/soc/3f980000.usb/usb1/1-1/1-1.2/1-1.2:1.0/ttyUSB1/tty/ttyUSB1
E: ID_BUS=usb
E: ID_MODEL=USB-RS232_Cable
E: ID_MODEL_ENC=USB-RS232\x20Cable
E: ID_MODEL_FROM_DATABASE=FT232 USB-Serial (UART) IC
E: ID_MODEL_ID=6001
E: ID_PATH=platform-3f980000.usb-usb-0:1.2:1.0
E: ID_PATH_TAG=platform-3f980000_usb-usb-0_1_2_1_0
E: ID_REVISION=0600
E: ID_SERIAL=FTDI_USB-RS232_Cable_FT2NUESH
E: ID_SERIAL_SHORT=FT2NUESH
E: ID_TYPE=generic
E: ID_USB_DRIVER=ftdi_sio
E: ID_USB_INTERFACES=:ffffff:
E: ID_USB_INTERFACE_NUM=00
E: ID_VENDOR=FTDI
E: ID_VENDOR_ENC=FTDI
E: ID_VENDOR_FROM_DATABASE=Future Technology Devices International, Ltd
E: ID_VENDOR_ID=0403
E: MAJOR=188
E: MINOR=1
E: SUBSYSTEM=tty
E: TAGS=:systemd:
E: USEC_INITIALIZED=437296
3 在 /etc/udev/rules.d/ 目录下新建一个规则文件。udev 是根据规则的字母顺序来解析规则文件的命名规则的,并根据匹配的规则进行相应设备的命名,所以解析顺序很关键。在pi中,已经存在一个规则文件99-com.rules,为了能解析新建规则, 把新建的规则文件命名为98-com-udev.rules,并将下面的信息复制到新建规则文件中。ID_SERIAL_SHORT、ID_PATH 字段用于标识设备,由步骤2可以提取出来,SYMLINK 指定需要命名的名称。
ENV{ID_SERIAL_SHORT}=="A8008Sxy",ENV{ID_PATH}=="platform-3f980000.usb-usb-0:1.4:1.0",SYMLINK+="ttyUSB4G"
ENV{ID_SERIAL_SHORT}=="FT2NUESH",ENV{ID_PATH}=="platform-3f980000.usb-usb-0:1.2:1.0",SYMLINK+="ttyUSBGPS"
4 设备重启reboot ,重启之后,自定义命名规则将生效。插拔USB串口,自定义名称固定不变。
pi@testclient:~ $ ls /dev/ | grep "ttyUSB"
ttyUSB0
ttyUSB1
ttyUSB4G
ttyUSBGPS
5 自定义串口名称测试
>>> import serial
>>> ser=serial.Serial('/dev/ttyUSB4G',9600)
>>> ser=serial.Serial('/dev/ttyUSBGPS',9600)
>>> print(串口测试通过)
参考链接:
1.https://cloud.tencent.com/info/9ef3d565fa5a45f6ee60e6c996bb5b91.html
2.http://www.cnblogs.com/lpfuture/p/6027091.html
在树莓派下对多个串口转USB设备进行设备名称绑定操作的更多相关文章
- Linux 串口、usb转串口驱动分析(2-2) 【转】
转自:http://blog.chinaunix.net/xmlrpc.php?r=blog/article&uid=26807463&id=4186852 Linux 串口.usb转 ...
- Linux 串口、usb转串口驱动分析(2-1) 【转】
转自:http://blog.chinaunix.net/xmlrpc.php?r=blog/article&uid=26807463&id=4186851 Linux 串口.usb转 ...
- linux驱动基础系列--Linux 串口、usb转串口驱动分析
前言 主要是想对Linux 串口.usb转串口驱动框架有一个整体的把控,因此会忽略某些细节,同时里面涉及到的一些驱动基础,比如字符设备驱动.平台驱动等也不进行详细说明原理.如果有任何错误地方,请指出, ...
- Mac下关于——你不能拷贝项目“”,因为它的名称太长或包括的字符在目的宗卷上无效。文件的删除
内容是google的,测试有效,因为用revel打包的东西删除以后有这个循环bug Mac下关于——你不能拷贝项目“”,因为它的名称太长或包括的字符在目的宗卷上无效.文件的删除 关于这个问题我找到的一 ...
- [转载]树莓派新版系统上使用mjpg-streamer获取USB摄像头和树莓派专用摄像头RaspiCamera图像
树莓派新版系统上使用mjpg-streamer获取USB摄像头和树莓派专用摄像头RaspiCamera图像 网上有很多关于mjpg-stream移植到树莓派的文章,大部分还是使用的sourceforg ...
- linux下oracle11G DG搭建(三):环绕备库搭建操作
linux下oracle11G DG搭建(三):环绕备库搭建操作 环境 名称 主库 备库 主机名 bjsrv shsrv 软件版本号 RedHat Enterprise5.5.Oracle 11g 1 ...
- Ubuntu下用SecureCRT连接串口/dev/ttyUSB0权限修复
在普通用户的模式下,用SecureCRT链接串口交换机,开始会提示/dev/ttyUSB0权限不足,无法打开,临时的解决办法是 chmod 0+rw /dev/ttyUSB0 但是这个重启后便没了作用 ...
- 在ubuntu下利用minicom实现串口通信
windos有串口调试助手,linux下也有这样的工具——minicom.不过,minicom和linux下的许多工具都一样,也是命令行模式,没有图形化界面供我们享受.作为一款串口调试工具,虽然难看但 ...
- VS2010环境下使用VB编写串口助手
1.在Form1的设计模式下添加以下控件: 2.添加好控件之后我们就可以打开Form1.vb进行编程了: '使用串口需要引用的命名空间 Imports System.IO.Ports Imports ...
随机推荐
- js对cookie增删改查的封装
/** * 获取cookie * @param name * @returns {*} */ function getCookie(name) { var cookieArr = document.c ...
- EF6 mysql配置
如何把一个ef项目 从sqlserver改为mysql 首先在引入了ef的层再引入这两个包,注意两个的版本一定要一样,一定要一样,一定要一样,不然就会报错 MySql.Data.Entity目前的最新 ...
- 【剑指Offer】55、链表中环的入口结点
题目描述: 给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null. 解题思路: 本题是一个比较典型的链表题目,难度适中.首先,对于大多人来说,看到这道题是比较开心的 ...
- 教你如何检查一个函数是否为JavaScript运行时环境内建函数
在开发过程中,对于某些API在现有的JavaScript运行时环境不支持的时候,我们大都会采用加入polyfill来解决这个问题.但有些时候我们可能需要知道现在某个API到底是否为运行时环境所原生支持 ...
- Tp5 一次修改多个数据update
//商城矿机设置 public function shop(){ if(!request()->isPost()){ return $this->fetch(); }else { $myd ...
- 2018ICPC南京
可能上一次秦皇岛拿了银,有了偶像包袱? 打的时候感觉状态不是很好. 第一题,让你每次将连续一段区间的石头都拿掉.. 然后让你做个博弈. 橘子一顿分析,认为k+1的倍数都是输. 这时,我们以及默认i+1 ...
- RabbitMQ学习总结(1)——基础概念详细介绍
一.基础概念详细介绍 1.引言 你是否遇到过两个(多个)系统间需要通过定时任务来同步某些数据?你是否在为异构系统的不同进程间相互调用.通讯的问题而苦恼.挣扎?如果是,那么恭喜你,消息服务让你可以很轻松 ...
- h264封包介绍
这个要看你怎么理解了.和MPEG2.MPEG4相比,H.264字节流中帧的形式发生了变化.以视频帧为例,MPEG2和MPEG4字节流在传输的时候提取帧的关键参数,将其封装入传输包首部,比如TS包或RT ...
- js休眠
<!DOCTYPE html><html><meta http-equiv="Content-Type" content="text/htm ...
- POJ 1155
很久以前做的树形DP题,今天再遇到时,竟然不会了,所以写写.. 设数组: prf[MAX][MAX],cost[MAX],sum[MAX].分别表示,在第i个结点为根的子树内的情况下,若有j个用户申请 ...