我在一个必须在USB笔式驱动器上执行“测试”的项目中 . 为此,我正在使用USB集线器(49端口Asic Miner - 由于端口数量,我正在使用它) .
我打算在HUB上插入49个USB Pen驱动器,并使用Linux Java App进行测试 . 测试包括“检查是否识别”,“存储和删除数据”和“检查大小” .
我的问题是第一步 . 如果有任何Pen Drive无法正常工作,系统将识别48个笔式驱动器,但我永远不会知道特定设备无法正常工作 .
我的问题是:有没有办法知道USB集线器上特定USB端口的地址(或类似的东西)?例如:如果我在端口“34”上只连接一个USB笔式驱动器,我的软件将知道该设备已连接到该特定端口 .
非常感谢您的时间和帮助!
2 回答
使用Runtime执行Linux命令
mount
. 它将列出当前安装的所有设备,手动或自动,如:这里,第二行描述了我刚刚插入的USB记忆棒(运行Ubuntu) . 它可以很容易地从文件系统中识别出来(vfat,上面的硬盘驱动器使用ext4)并且它安装在/ media / Website上(因为'Website'是在vfat中格式化棒时使用的棒标签) . 解析输出并定位安装的棒应该是微不足道的(格式化时,我建议给出与棒号匹配的已知标签) .
如果需要,您可以直接在小贴士上将更多信息放入小文件中 .
您可以通过
Process.getOutputStream()
捕获输出 .完成后,您可以在将它们拔出之前安全地卸下它们:
您应该检查这些库jUSB和usb2java(虽然它们有点过时) .
但是JNI将允许您创建与不同操作系统交互的界面 . 这将允许您进行跨平台功能 . 我会调查libUSB(因为你正在寻找Linux),这是一个良好的开端!
希望有所帮助! :)