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

是否有可能在同一台计算机上有两个应用程序通过USB直接对话(没有电缆,没有关联的设备)? 这很容易吗? 你们会推荐什么API

是的,我发布了类似的线程,但它是特意要求一个JAVA / USB实现,我发现,但我需要Windows支持。 所以现在我正在寻找任何USB API – 它不必在Java中工作。 我总是可以使用JNI / JNative来使用本地代码/库。

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

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

如果你只想在同一台机器上的两个进程之间进行进程间的通信,USB是不行的。 这是完全不合情理的。 如果要在两台不同机器上的两个进程之间进行进程间通信,则应使用TCP / IP。

如果您要开发USB设备,并且希望在任何原型硬件准备就绪之前开发主机和设备软件,并且您真正需要的是可以在同一台计算机上进行的开发或模拟环境,并测试它,这是完全不同的事情。

如果您只是希望允许两个进程进行通信,则可以使用Unix或域套接字。 我不能想到在本地通过USB进行进程间通信是一个优势的情况。 Java对此有非常好的支持。

没有电缆和/或没有设备

所以你所要求的是不可能的(甚至没有任何意义),这就像问2个应用程序怎么能通过串口没有任何连接交谈..

也许你可以试着找出实际的最终目标是什么,如果它只是进程间通信有很多不同的方式来皮肤猫…(COM,WCF,内存映射文件等)

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

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

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