想請(qǐng)問(wèn)一下有沒(méi)有其他的方式給CH347T的端口號(hào)綁定一個(gè)特定的名稱(chēng)?
一般我們通過(guò) etc/udev下定義一個(gè)*.rules 來(lái)描述操作系統(tǒng)內(nèi)核看到的設(shè)備名稱(chēng)。這個(gè)設(shè)備名稱(chēng)的獲取我是通過(guò)
udevadm -a -p /sys/class/tty/ttyCH343USB* 來(lái)獲取的。
但是碰到了一個(gè)問(wèn)題,就是注冊(cè)信息配置軟件只可以修改 ?idVender 等信息,也就是同一個(gè)芯片的不同端口無(wú)法綁定成不同的 ttyCH343USB設(shè)備名,這么做的目的是為了讓每一個(gè)串口插入計(jì)算機(jī)后都保持名稱(chēng)的不變,方便測(cè)試人員使用和定位。
我嘗試使用 iad_bFirstInterface 屬性配合 ID使用,比如定義如下的規(guī)則
ATTRS{iad_bFirstInterface}=="00",ATTRS{serial}=="BC48D5ABCD",SYMLINK+="myTTY1"
ATTRS{iad_bFirstInterface}=="02",ATTRS{serial}=="BC48D5ABCD",SYMLINK+="myTTY2"
上述這種情況下,操作系統(tǒng)使用udevadm -a -p 給出的信息ATTRS{iad_bFirstInterface}=="00" 無(wú)法被有效匹配到。
通過(guò)比較udevadm -a -p 能給出的信息,我發(fā)現(xiàn)同一個(gè)CH347T的信息中,生成的兩個(gè)端口有如下信息不一樣,
端口1 iad_bFirstInterface?=="00", 端口2?iad_bFirstInterface?=="02"
端口1 bInterfaceNumber?=="00", 端口2?bInterfaceNumber?=="02"
端口1 KERNELS == ?-?.3:1.0 ? ? ? ? ? 端口2:KERNELS == ?-?.3:1.2
其余都相同。
而不同的CH347T的可修改配置信息可以不同,因此可以區(qū)分。
但是區(qū)分同一個(gè)CH347T的端口只能使用上面三個(gè)信息,而iad_bFirstInterface 和bInterfaceNumber ?信息使用ATTRS屬性枚舉的時(shí)候都無(wú)法和 芯片ID等信息一同有效匹配,獨(dú)立匹配也不成功。
而KERNELS?信息會(huì)隨著CH347T接入 主板USB設(shè)備的端口號(hào)的不同而發(fā)生變化。所以無(wú)法通過(guò)該信息綁定設(shè)備端口號(hào)。所以想問(wèn)一下如何在同一臺(tái)計(jì)算機(jī)中有多個(gè)CH347T設(shè)備時(shí),分別賦予不同CH347T的COM1 COM2 不同的軟連接(*.rule)。
在測(cè)試中我發(fā)現(xiàn)KERNELS 信息匹配的最后一位在CH347T的COM1中始終為0 ?COM2始終為2 。請(qǐng)問(wèn)這個(gè)數(shù)值和你們的設(shè)計(jì)初衷是否吻合?可否通過(guò)KERNELS?信息的最后一位數(shù)是否位0/2來(lái)判斷串口的端口號(hào)?