【问题标题】:Is there a C++ cross platform USB library? [closed]是否有 C++ 跨平台 USB 库? [关闭]
【发布时间】:2010-10-12 16:51:43
【问题描述】:

我(将要)在 Qt 中编写一个可以在 3 个主要操作系统(Windows、Linux 和 Mac)上运行的应用程序。这个应用程序的一个特点是它需要 USB 来与一块定制的外部硬件通信。是否有可用的跨平台 USB 库?

【问题讨论】:

  • 定制硬件是通过 USB 说 HID,还是直接使用串口线?
  • 可能是串行链接。这是一个 ATMega USB 芯片,带有 LUFA USB 库,支持两者,但串行链接可能是最可能的选择。
  • 啊,但在 Windows 上,您可以找到十几个用于 $$$ 的第三方库;-)
  • @pst 只有$$$?好的!真是物超所值!我得马上买一些!等等……;P

标签: c++ usb cross-platform


【解决方案1】:

试试libusb

支持的操作系统:Linux、 FreeBSD、NetBSD、OpenBSD、达尔文、 MacOS X(和 Windows,通过 libusb-win32 项目)。

但您应该注意,它在 Windows 上使用 libusb0.sys 内核模式驱动程序,该驱动程序未经 WHQL 认证,在 64 位 Windows 7 和 Windows Server 2008 R2 中可能会出现问题。抱歉,libusb0.sysis digitally signed 的 1.2.0.0 版本。

【讨论】:

  • 谢谢!正是我需要的信息。
  • 使用libusb-win32的问题在于它是libusb-0.1的一个port,与libusb-1.0不兼容。然而 libusb-1.0 现在似乎原生支持 Windows。
  • Libusb 近年来变得更好:您现在可以在 Windows 上使用它来与以 WinUSB 作为驱动程序的设备通信,因此您不必运行任何来自第三方的内核模式代码,例如libusb0.sys.
  • 很遗憾,libusb 在 Windows 上对复合设备的支持基本不存在。
【解决方案2】:

我只是想为现在回到它的任何人更新这篇文章......

Libusb(0.1 版)已被弃用。现代标准是使用 libusb-1.0 或 libusbx。

我个人认为使用 libusbx 的原因有很多。它是由沮丧的 libusb-0.1 开发人员编写的,他们想要更频繁的更新周期和更好的错误维护系统。

我推荐libusbx的原因如下:

  • 不需要 sudo 访问权限
  • 开箱即用地阅读收到的消息对我来说效果更好
  • 更好的支持和更频繁的错误/问题响应
  • 对发送/接收消息的异步和同步支持

当然,libusb-1.0 确实支持异步/同步报告...但 libusbx 背后的理念更有吸引力,文档也更好。

所以这完全取决于您,如果您或任何人仍想了解更多关于图书馆的信息,历史很容易在网上找到。您还可以查看this 堆栈问题以获取有关当前主题的更多信息。

【讨论】:

  • 截至 2014 年 2 月,实际上只剩下 libusb。 linusbx 主页有以下评论:libusbx 是libusb 的一个分支,这是一个提供对 USB 设备的通用访问的库。自 2014.01.26 起,该项目已完全合并回libusb 并已停止。由于不会再发布 libusbx,因此强烈建议您改用 libusb
  • Libusbx 不再维护。您应该改用 libusb。
  • 我建议删除旧的 libusbx 链接,它现在托管的网站不适合工作,
猜你喜欢
  • 2015-07-04
  • 1970-01-01
  • 2010-10-22
  • 1970-01-01
  • 1970-01-01
  • 2021-01-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多