【发布时间】:2012-02-19 18:14:01
【问题描述】:
我想使用我的应用程序将我的电脑变成一个 Android 配件。因此,这将不是专门的硬件,而是将手机切换到附件模式的 PC,从而在手机上启动与主机硬件相关联的一些 Java 应用程序并创建通信通道。
我找到了一个 sample code(加上一些 Java Android 应用程序),可以在 Linux 上使用 libusb 执行此操作。它通过使用标准 VID 和 PID “打开”手机来工作。然后它发送一个command to turn on the accessory mode,以及模型、版本等元数据。
如果手机支持配件模式,它将断开连接并使用不同的 PID 重新枚举。示例代码然后检查它是否这样做并打开新设备。
但是,我正试图让它在 Windows 上运行。我找到了一些 USB 库,例如 LibUsbDotNet,但它们似乎都需要使用 WinUSB/libusb 驱动程序的设备。我使用 LibUsbDotNet 中的工具为我的手机生成 libusb 驱动程序,将其安装在旧的通用可移动驱动器上。但这意味着我现在无法将手机作为可移动驱动器访问,因此这不是解决方案。
有没有办法(最好是库)可以根据 VID 和 PID 打开任何连接的 USB 设备,然后向它发送一些原始命令?
之后,设备将使用不同的 PID 重新枚举,我可以使用它来创建自己的 WinUSB 驱动程序,所以这不是问题。我只需要通过/围绕默认驱动程序注入一些命令来打开附件模式。
(我更喜欢 .NET 解决方案,但任何 Windows 都可以,我可以编写自己的互操作包装器)
【问题讨论】:
-
wifi怎么样?你不能用它来交流吗?
-
不幸的是,不,在这种情况下不是。此外,即使我可以,USB 会好得多 - 为手机充电,触发在手机上启动后端应用程序,汽车根据提供的序列号识别各种计算机,在每种情况下触发不同的反应。
-
问题是它是否值得你也可以使用蓝牙。从理论上讲,您可以使用 adb 它可以启动您需要的应用程序并通过 usb 工作。 pull 和 push 命令可用于传输数据
-
感谢您的帮助,但我在上面发布的内容正是我想要和需要的。我想用 BT、WiFi 或 adb 以简单的方式做到这一点,但我做不到。我真的需要将设备置于 USB 附件模式,通过强制一些数据通过 USB 使其重新枚举。忽略问题的 Android 部分,这实际上是关于在 Windows 上使用非 WinUSB 驱动程序做 USB 的东西。
-
嗨@lacop,你有没有为安卓手机和windoes PC之间的usb通信找到任何可行的解决方案
标签: android usb driver libusb winusb