我所在的项目必须对 USB 笔驱动器执行“测试”。 为此,我使用 USB 集线器(49 端口 Asic Miner - 由于端口数量,我使用它)。
我打算在 HUB 上插入 49 个 USB 笔驱动器,并使用 Linux Java 应用程序对其进行测试。测试内容包括“检查是否被识别”、“存储和删除数据”和“检查大小”。
我的问题出在第一步。如果有任何笔式驱动器无法正常工作,系统将识别 48 个笔式驱动器,但我永远不会知道无法正常工作的具体设备。
我的问题是:有什么方法可以知道 USB 集线器上特定 USB 端口的地址(或类似的地址)?例如:如果我在端口“34”上仅连接一个 USB 笔驱动器,我的软件就会知道该设备已连接到该特定端口。
非常感谢您的宝贵时间和帮助!
最佳答案
使用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上(因为“Website”是在vfat中格式化棒时使用的棒标签)。解析输出并找到已安装的棒应该很简单(格式化时,我建议给出与棒编号匹配的已知标签)。
如果需要,您可以将更多信息直接放入棒上的小文件中。
您可以通过Process.getOutputStream()
捕获输出。
完成后,您可以在拉出之前安全地卸下棍子:
umount /media/Website
关于java - 如何识别特定的 USB 端口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24148151/