通过 USB 将数据从安卓设备流式传输到 PC

Streaming data from an Android device to a PC via USB

本文关键字:传输 PC USB 数据 通过      更新时间:2023-10-16

我需要将一组数字(6 个浮点数)从安卓设备流式传输到通过 USB 电缆连接到的 PC。我找到的所有解决方案都建议使用 WiFi 连接。但是,我发现由此引起的延迟是不可接受的。因此,我决定聘请某人来集成组件,从而实现直接沟通。但是,在此之前,我想尝试各种设备,看看哪些设备有效,而"集成"两个设备的最快方法是允许它们共享(美国)总线。但是,这是我零经验的一个领域。

您是制作一个套接字并将连接视为网络连接,还是有其他更奇特的方法来实现我想要的?我已经看到一些关于为此目的制作设备驱动程序的讨论,我不想再次使我的操作系统崩溃 500 次。我发现很难相信安卓设备没有某种可以利用的驱动程序。

android代码是用Java编写的,但它可以根据人们的建议进行更改。mys系统的主要部分位于PC上,是用C++编写的。

我需要流的延迟尽可能低,因为整个系统需要尽可能实时。设备上的数据采集与在PC上渲染模拟之间的限制为15毫秒。

TL/DR:我需要将数据从Android设备上的程序流式传输到PC,延迟尽可能少;即单向通信。只要我可以流式传输字节,我就可以设计协议并转换接收端的字节。我的全局上限是 15 毫秒,我需要流式传输不断更新的 6 个浮点数。实现这一目标的最佳方法是什么?

提前感谢您的帮助。

Raw USB 可能不是要走的路。USB 是面向设备的规范,不能以一般的跨线发送任意字节的方式使用。

如果 Wi-Fi 确实太慢,您可以尝试购买兼容 Android 的 USB 以太网适配器,并通过有线网络连接将设备连接到计算机,这可能会减少延迟。Android 可以识别多种类型的这些适配器,您可以通过网络连接与其他网络相同的方式进行通信。

我们最终使用了 ADB brigde,它似乎足够稳定和快速,可以满足我们的目的。我们所要做的就是打开一个套接字并使用TCP连接。由于某种原因,当我们尝试与UDP连接时,它会失败,但我认为这可能是由于我们的无知。