如何识别特定的USB端口

时间:2014-06-10 18:16:18

标签: java linux usb

我在一个必须在USB Pen Drives上执行“测试”的项目中。 为此,我正在使用USB Hub(49端口Asic Miner - 由于端口数量我正在使用它。)

我打算在HUB上插入49个USB笔式驱动器,并使用Linux Java App进行测试。测试包括“检查是否识别”,“存储和删除数据”和“检查大小”。

我的问题是第一步。如果有任何Pen Drive无法正常工作,系统将识别48个笔式驱动器,但我永远不会知道特定设备无法正常工作。

我的问题是:有没有办法知道USB集线器上特定USB端口的地址(或类似的东西)?例如:如果我只在端口“34”上连接一个USB笔式驱动器,我的软件就会知道该设备已在该特定端口上连接。

非常感谢你的时间和帮助!

2 个答案:

答案 0 :(得分:1)

您应该检查这些库jUSBusb2java(虽然它们有点过时了)。

但是JNI将允许您创建与不同操作系统交互的界面。这将允许您进行跨平台功能。我会调查libUSB(因为你正在寻找Linux),这是一个良好的开端!

希望有所帮助! :)

答案 1 :(得分:1)

使用Runtime执行Linux命令mount。它将列出当前安装的所有设备,手动或自动,如:

/dev/sdb5 on /media/xdrive type ext4 (rw,nosuid,nodev,uhelper=udisks)
/dev/sdj1 on /media/Website type vfat (rw,nosuid,nodev,uhelper=udisks,uid=1000,gid=1000,shortname=mixed,dmask=0077,utf8=1,flush)

这里,第二行描述了我刚刚插入的USB记忆棒(运行Ubuntu)。它可以从文件系统中轻松识别(vfat,上面的硬盘使用ext4),它安装在/ media / Website上(因为'网站'是格式化棒时使用的棒标签在vfat)。解析输出并定位安装的棒应该是微不足道的(格式化时,我建议给出与棒号匹配的已知标签)。

如果需要,您可以将更多信息直接放在小文件中。

您可以通过Process.getOutputStream()

捕获输出

完成后,您可以在将它们拔出之前安全地卸下它们:

umount /media/Website