是否可以通过USB直接通信?

时间:2009-01-14 22:35:20

标签: windows api usb

是否可以在同一台计算机上使用两个应用程序直接通过USB进行通信(没有电缆,没有相关设备)?容易/困难吗?你会推荐什么API?

是的,我发布了一个类似的线程,但它是专门针对我发现的JAVA / USB实现,但我需要Windows支持。所以现在我正在寻找任何USB API - 它不必在java中工作。我总是可以使用JNI / JNative来使用本机代码/库。

我没有在互联网上发现很多人做过同样的事情。

5 个答案:

答案 0 :(得分:10)

USB“总线”是电线。 USB不适用于进程间甚至是对等通信。它仅用于通过电缆在主机和外围设备之间进行通信,其中主机启动任何/所有流量。您不能(通常)将2台主机连接在一起,也不能将两台设备连接在一起,或者在主机/设备之间进行任何形式的对称通信。

如果您只想在同一台机器上的两个进程之间进行进程间通信,那么USB就不是可行的方法。这完全是非感性的。如果您希望在两台不同的计算机上进行两个进程之间的进程间通信,则应使用TCP / IP。

如果您要开发USB设备并希望在任何原型硬件准备就绪之前开发主机和设备软件,那么您真正想要的是一些开发或模拟环境,您可以在同一台机器上执行此操作,挂钩他们起来,测试一下,这是完全不同的事情。

答案 1 :(得分:3)

如果您只是想让两个进程进行通信,可以使用Unix或Domain套接字。我想不出通过USB本地进行进程间通信会带来优势的情况。 Java非常支持这样做。

答案 2 :(得分:2)

没有线缆和/或没有设备

那么你所要求的是不可能的(甚至没有任何意义)它就像问2个应用程序如何通过没有连接的串口进行通信..

也许您可以尝试找出实际的最终目标是什么,如果它只是进程间通信可以通过许多不同的方式来处理那些猫...(com,wcf,内存映射文件等)

答案 3 :(得分:0)

USB通信必然涉及电气连接和上拉电阻以及特定时刻出现在特定线路上的特定电压。如果没有实际的电缆,这些都很难模拟。

Jan Axelson's USB Central是开始学习USB通信的好地方。

答案 4 :(得分:0)

我想有一个很多的内核工作,你可能会得到这样的东西。 现有的product可以转移其他网络。所以我想它模拟usb主机控制器或类似的东西。如果您可以模拟主机控制器,则可以模拟连接到此控制器的实际设备。并让用户模式应用程序来控制该设备 但我估计这是一个至少6 MM的项目,对于经验丰富的内核程序员来说,还要深入了解USB协议 主要问题是为什么?我找不到这个用例的任何逻辑原因(并不意味着它不存在)。