【问题标题】:Read USB using .NET使用 .NET 读取 USB
【发布时间】:2010-06-22 00:55:27
【问题描述】:

我已经阅读了许多代码,但没有一个相互匹配。我做了一点编程,但我感到困惑的一件事是:有多少种方法可以读取 USB(我必须调用多少类或库来完成这样的事情)?当您使用 .serial 端口时(这是否意味着您正在读取串行端口,甚至 USB 使用相同的类或库)?这是我第一次尝试从 USB 读取,完全不知道如何开始。如果我能弄清楚第一步,我就可以继续...任何提示将不胜感激,

【问题讨论】:

  • 请注意,您的问题与 C# 完全无关。这纯粹是一个 .NET 问题,或者可能是一个 Win32 / PInvoke 问题。

标签: .net usb


【解决方案1】:

.NET 中无法直接“读取 USB”。与总线本身的交互由设备驱动程序完成。

至于您将如何与特定设备交互,这完全取决于设备。如果您可以提供一些有关您希望连接的信息,我或其他人可能会提供更多帮助。

【讨论】:

  • @theatrus:WinUSB 是一个提供串行流的标准设备驱动程序(可以像串行端口一样使用)。如果设备支持,则可以使用 WinUSB。这不是直接读取和写入 USB 端口。
  • @Adam: winusb 不是 CDC 或串口仿真。它允许探测 USB 设备,并读取/写入它们的端点流 - 与内核级驱动程序将完成的功能相同。 WinUSB 的唯一限制是缺乏同步支持(仅限批量和中断)。
  • @theatrus:我说它提供串行流(特别是命名管道),不是串行端口仿真。同样,设备必须支持 WinUSB 配置文件才能使用它。它不是通用 USB IO。
  • @Adam:那么什么是通用 USB IO,显然我们有不同的定义? winusb 可以注册为任何设备的驱动程序(使用 .inf 文件,基于类的设备和同步端点除外),并允许访问所有端点。它可以发送控制请求。它可以从批量和中断端点读取/写入。
  • @theatrus:没有“通用 USB IO”之类的东西,这是我回答的重点。我的观点是驱动程序——在本例中为 WinUSB——通过总线进行实际通信,而驱动程序又公开了一个 API。 WinUSB 公开了一个非常通用的 API,它不是为特定设备量身定制的,但事实仍然是您不是“读取 USB”或“写入 USB”,您正在指导特定的驱动程序从总线读取和写入数据。您排除 any 设备这一事实意味着这不是完全通用的。
【解决方案2】:

使用LibUSBDotNet。据说不错。

【讨论】:

  • 您也可以直接连接到WinUSB,这是较新的LibUSB版本使用的。
【解决方案3】:

【讨论】:

    【解决方案4】:

    您可以通过或多或少三种不同的方式与 USB 设备进行通信:Hid、USB 或串行端口(COM 端口)。这实际上取决于制造商随设备分发的设备驱动程序。 Device.Net 是一个 .NET 框架,以统一的方式支持所有这些。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-09-22
      • 2011-03-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多