2013-05-04 81 views
2

我有一堆USB串行設備(準確地說是這些:http://plugable.com/products/PL2303-DB9),如果可能的話,我想通過拔下/重新插入事件來「跟蹤」它們(即使重新插入事件是一個不同的USB端口)。如何在斷開連接時跟蹤USB設備?

驅動程序似乎會從其USB位置創建其BSD dialin/callout/tty設備名稱,但這會根據您插入的USB端口而有所不同。

看着插入兩個獨立的USB端口的兩個相同的設備之間由於IOKit屬性詞典,唯一的區別是在sessionIDUSB AddresslocationIDportNum或在出現從所述locationID導出的值。 sessionID每個會話似乎都會發生變化(即每次拔出/重新插入後都會有所不同)。

由於這些設備都返回0iSerialNumber,我想我基本上在這裏搞砸了,但我想我會在這裏拋出它,看看有沒有人有任何想法。是否有一些通用工具可以將一些「令牌」寫入USB設備,我可以讀回來?我沒有看到我的快速瀏覽/搜索USB標準的任何東西,但像這樣的設施肯定會有訣竅...

任何想法?

回答

6

不幸的是,沒有好的方法來做到這一點(如果你想出來,請在這裏發佈,因爲我一直在試圖提出一個多年)。

正如你所猜測的,問題在於設備本身沒有唯一的ID。如果這些設備具有唯一的序列號(暴露在IOKit屬性字典中),那麼您可以處理它,並且如果您可以訪問設備上的一小段用戶可尋址閃存,那麼您可以寫入它,但作爲就我所能得到的那樣,沒有任何東西。

到目前爲止,我唯一能做的就是跟蹤位置,並告訴人們如果想讓設備被識別,就將設備連接到相同的端口。但是,就我而言,我確實有一組可預測的設備,它們自己處理序列號,所以我可以通過直接查詢串行線另一端的設備來做到這一點。

+1

*嘆*好吧... – ipmcc 2013-05-05 12:34:01