【问题标题】:Software based Android accessory on WindowsWindows 上基于软件的 Android 配件
【发布时间】: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


【解决方案1】:

我也在寻找类似的解决方案。我尝试了带有 libusb 的 Linux 版本,几乎没有任何问题,能够与设备通信。 在 Windows 上搜索解决方案时,我尝试了许多 hack。 如果需要在 ADK 模式下与设备通信,我需要发送几个供应商命令,现在我需要在大容量存储模式下连接时执行此操作。使用大容量存储驱动程序是不可能的。我试图获取已连接 USB 设备的节点句柄以查看是否可以发送供应商命令,但我只能提交 Get Descriptor 请求。所以我采用了丑陋的方法,用 libusb-win32 替换了大容量存储驱动程序,看看它可以做同样的事情,是的,它有效,但根本不是一个好的解决方案。

仍在寻找中..

【讨论】:

  • 嗨,sachin,您有任何 USB 通信解决方案吗?
猜你喜欢
  • 1970-01-01
  • 2012-08-22
  • 1970-01-01
  • 1970-01-01
  • 2012-09-16
  • 1970-01-01
  • 2010-09-26
  • 1970-01-01
  • 2011-01-26
相关资源
最近更新 更多