我在一个必须在USB Pen Drives上执行“测试”的项目中。 为此,我正在使用USB Hub(49端口Asic Miner - 由于端口数量我正在使用它。)
我打算在HUB上插入49个USB笔式驱动器,并使用Linux Java App进行测试。测试包括“检查是否识别”,“存储和删除数据”和“检查大小”。
我的问题是第一步。如果有任何Pen Drive无法正常工作,系统将识别48个笔式驱动器,但我永远不会知道特定设备无法正常工作。
我的问题是:有没有办法知道USB集线器上特定USB端口的地址(或类似的东西)?例如:如果我只在端口“34”上连接一个USB笔式驱动器,我的软件就会知道该设备已在该特定端口上连接。
非常感谢你的时间和帮助!
答案 0 :(得分:1)
您应该检查这些库jUSB和usb2java(虽然它们有点过时了)。
但是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