在树莓派下对多个串口转USB设备进行设备名称绑定操作
在開發(fā)過程中,需要用一個樹莓派鏈接多個串口轉(zhuǎn)USB設(shè)備(GPS模塊,數(shù)傳模塊等),在樹莓派linux系統(tǒng)環(huán)境下,USB串口設(shè)備的命名規(guī)則是 /dev/ttyUSB0 ,/dev/ttyUSB1,/dev/ttyUSB2。串口設(shè)備的命名規(guī)則一般是根據(jù)設(shè)備插拔順序進行命名,第一個插入的USB串口設(shè)備名稱為/dev/ttyUSB0,第二個名稱為 /dev/ttyUSB1,以此類推,但是在實驗環(huán)境中,往往會發(fā)生USB設(shè)備插拔情況,從而導(dǎo)致串口設(shè)備命名混亂,為此,需要對串口設(shè)備進行名稱綁定,固定串口設(shè)備名稱。
在實現(xiàn)串口名稱綁定操作前,首先介紹一下udev。udev是Linux系統(tǒng)下的設(shè)備管理工具,運行在用戶空間下,能夠通過偵聽內(nèi)核發(fā)出的ueven事件來管理./dev目錄下設(shè)備文件,當USB設(shè)備進行插拔時,udev能夠在/dev下添加和刪除設(shè)備文件。在默認規(guī)則下,udev為所有l(wèi)inux設(shè)備定義了內(nèi)核設(shè)備名稱,比如/dev/sda,/dev/hda。另外,linux用戶也可以編寫自定義的規(guī)則文件,自定義標志設(shè)備文件。 udev的規(guī)則文件存放在/etc/udev/rule.d 目錄,規(guī)則的命名以.rules為后綴。
下面給出樹莓派linux環(huán)境下進行串口設(shè)備自定義命名步驟:
1.查看串口設(shè)備系統(tǒng)自定義的名稱
pi@testclient:~ $ ls /dev | grep 'ttyUSB' ttyUSB0 ttyUSB1
2.根據(jù)串口號,查詢串口設(shè)備的詳細信息
/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=FT232Rx20USBx20UART 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-RS232x20Cable 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/ 目錄下新建一個規(guī)則文件。udev 是根據(jù)規(guī)則的字母順序來解析規(guī)則文件的命名規(guī)則的,并根據(jù)匹配的規(guī)則進行相應(yīng)設(shè)備的命名,所以解析順序很關(guān)鍵。在pi中,已經(jīng)存在一個規(guī)則文件99-com.rules,為了能解析新建規(guī)則, 把新建的規(guī)則文件命名為98-com-udev.rules,并將下面的信息復(fù)制到新建規(guī)則文件中。ID_SERIAL_SHORT、ID_PATH 字段用于標識設(shè)備,由步驟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 設(shè)備重啟reboot ,重啟之后,自定義命名規(guī)則將生效。插拔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
總結(jié)
以上是生活随笔為你收集整理的在树莓派下对多个串口转USB设备进行设备名称绑定操作的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 消息称英特尔 14 代酷睿 i9 / i
- 下一篇: scrollTop、scrollHeig