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