如何模拟USB设备?

时间:2009-12-16 11:11:02

标签: usb emulation device-emulation

我团队的其他成员将为我的应用程序提供一个简单的非标准USB麦克风,但在完成之前我将不得不模拟它,以进行集成测试。

  1. 物理环回有任何风险吗? Yes there is
  2. 物理环回是否有效?只有USB bridge
  3. 有什么方法可以创建逻辑环回吗? (MSDN has something about this
  4. 有没有通用的USB仿真软件?
  5. 如果有很多可用选项,我宁愿使用.NET / Matlab / Python解决方案。

3 个答案:

答案 0 :(得分:19)

编辑:概念证明here

我强烈推荐this project, USB IP。这是一种通过网络连接USB设备的方法。有一个Windows客户端。

这意味着,您在Windows计算机上安装客户端。 然后,该设备希望与连接到Linux计算机的USB设备通信,即服务器: diagram over how a USB IP client connects to a USB IP server

你现在所做的是要么为Linux创建一个虚假的设备驱动程序,它看起来像连接到物理USB设备,但实际上只是假装成你的USB设备的逻辑。有tutorials for writing USB drivers for Linux您为设备控制管理器创建自己的存根驱动程序(参见上图)。这个存根驱动程序可以在Windows或Linux上运行,这没关系。它甚至可以在相同的 Windows机器上运行,即USB客户端。

问题本身提到的DSF USB Loopback Device与设备控制管理器的存根驱动程序是同一种解决方案,但完全取消了Linux。

答案 1 :(得分:1)

您可以使用QEMU编写虚拟USB设备。 您可以复制现有设备,例如this QEMU存储库中的dev-serial.c,并根据您的需要进行更改。 编写和编译USB设备后,只需使用QEMU命令行界面将其附加到VM即可。

答案 2 :(得分:-1)

如果要模拟键盘或鼠标,则不需要概念证明或虚拟USB设备
您可以将pyautogui安装到python
对于python 2:

pip install pyautogui

对于python 3:

pip3 install pyautogui

并像这样使用它:

import pyautogui
pyautogui.typewrite("hello from pyautogui")