2013-05-04 78 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