一級a做爰片視頻網(wǎng)站競價推廣托管多少錢
1、USB轉(zhuǎn)串口設備
? ? ? ? USB轉(zhuǎn)串口設備是在嵌入式軟件開發(fā)過程中經(jīng)常要使用的,常常用于對接各種各樣的串口設備。如果一臺linux主機上使用多個usb轉(zhuǎn)串口設備時,應用程序中就需要知道自己操作的是哪個串口設備。串口設備在系統(tǒng)上電時,由于驅(qū)動加載的順序不能會出現(xiàn)串口設備號不一樣的情況,比如接了A串口,B串口到USB接口上,可以在系統(tǒng)上加載出來的串口為變化,有時A串口是/dev/ttyUSB0, 有時B串口是/dev/ttyUSB0。因此應用程序要有一個方法能準確的找到對應的串口 。
2、確定串口設備的方法
? ? ? usb總線在/sys/bus/usb/device目錄下有對應的目錄的,不同usb設備連接到系統(tǒng)上會生成一個特定的目錄的。如下/sys/devices/platform/fd800000.usb/usb1/1-1/1-1.1/1-1.1:1.0,這是一個USB設備的目錄結(jié)構(gòu):
這里有一個簡要的命名規(guī)則:
- platform/fd800000.usb:
platform
:這通常表示該設備是通過平臺設備驅(qū)動程序(platform device driver)管理的。平臺設備驅(qū)動程序通常用于描述硬件平臺特有的設備,這些設備通常不遵循標準的設備驅(qū)動程序模型。fd800000.usb
:這是平臺設備的名稱,可能由設備樹(device tree)或硬件平臺代碼指定。它通常與設備的物理地址或其他硬件標識信息有關。
- usb1:
- 這表示這是系統(tǒng)上的第一個USB控制器(或稱為USB主機控制器)。在Linux中,USB控制器通常按其在系統(tǒng)中的順序進行編號(usb1、usb2等)。
- 1-1:
- 這表示連接到第一個USB控制器(usb1)的第一個設備。USB設備在其連接的控制器下按層級進行編號。第一個設備是1-1,第二個設備是1-2,依此類推。
- 1-1.1:
- 如果一個USB設備具有內(nèi)置的USB端口(例如USB集線器),則連接到該設備的設備會在其下進一步編號。在這個例子中,
1-1.1
表示連接到1-1
設備(即連接到usb1的第一個設備)的第一個設備。
- 如果一個USB設備具有內(nèi)置的USB端口(例如USB集線器),則連接到該設備的設備會在其下進一步編號。在這個例子中,
- 1-1.1:1.0:
- 最后的
:1.0
表示這是1-1.1
設備上的第一個接口。USB設備可以有多個接口(interface),每個接口都提供不同的功能。例如,一個USB攝像頭可能有一個視頻接口和一個音頻接口。這些接口在設備下按數(shù)字順序編號(1.0、1.1等)。
- 最后的
總結(jié)來說,這個路徑表示了一個USB設備樹,從平臺的USB控制器開始,經(jīng)過一個或多個USB設備,最終到達一個特定的USB接口。這種結(jié)構(gòu)使得內(nèi)核和用戶空間程序能夠輕松地遍歷和識別系統(tǒng)中的USB設備。
? ? ? 因此應用程序可以通過唯一的USB設備路徑來查找到USB轉(zhuǎn)串口設備,當然也可以查找到其他USB設備,可以編寫一段程序,在/sys/bus/usb/device目錄查找每一個文件夾,當找到文件夾中對的usb PID, VID與目標設備相符時,就是找到了這個USB設備的對應路徑。
? ? ? 有沒有更簡單的方法么?答題是有的,可以udevadm命令,如使用udevadm命令查找/dev/ttyUSB0設備對的路徑:udevadm info -q path -n /dev/ttyUSB0
? ? ? ?可以看到查找到ttyUSB0設備位于路徑:/sys/devices/platform/fd800000.usb/usb1/1-1/1-1.2/1-1.2:1.0/下面。這個路徑與硬件上USB接口一一對應,因此可通過這個USB總線的路徑來查看其加載出來的串口設備號,最后找到對應的串口。
? ? ? ?這里提供一段python程序代碼,用于從USB總線路徑中找到其USB轉(zhuǎn)串口設備的設備號。
import os
strpath = '/sys/devices/platform/fd800000.usb/usb1/1-1/1-1.2/1-1.2:1.0'
hd = os.popen(r'ls %s | grep ttyUSB' %strpath)
uartid = hd.read()[:-1]
uartid = '/dev/%s' %uartid