java - 如何识别特定的 USB 端口

标签 java linux usb

我所在的项目必须对 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/

相关文章:

google-chrome-extension - Chrome 扩展程序可以与 USB 设备通信吗?

java - 传入参数的匿名方法

java - 线程 "main"java.lang.NoClassDefFoundError :javax/persistence/Cacheable 中出现异常

java - CriteriaBuilder 使用自定义条件连接两个表

android - 无法接收android.intent.action.USB_DGTL_MIC_PLUG

javascript - Electron/USB不兼容的版本

java - 我每天可以使用 Google App Engine 发送多少封电子邮件?

java - Hbase客户端连接失败

linux - 使用带有配置文件的 ssh 命令在远程机器上执行 shell 脚本

linux - 在从 init 系统启动之前清除 tomcat work 和 webapps