【问题标题】:Accessing USB devices from node-webkit?从 node-webkit 访问 USB 设备?
【发布时间】:2014-04-18 13:41:39
【问题描述】:

我正在构建一个需要在所有 3 个主要桌面环境(windows、mac 和 linux)上运行的 node-webkit 应用程序我需要我的应用程序连接到插入的 USB 设备,但我遇到了一些麻烦弄清楚如何去做。

是否有适用于所有操作系统的 npm?我可以得到一个内置的 C++ 可以工作吗? node-webkit 中是否内置了任何用于与设备交互的东西(设备 API?)

提前致谢。

【问题讨论】:

  • 需要更多信息来回答这个问题。什么样的 USB 设备?它有驱动程序吗?为什么modules listed on npm 中的任何一个都不起作用?
  • 该设备是一个 GPS 单元。 NPM 上的东西需要复杂的构建过程,并且只需要基于 unix 的平台。我们不会控制最终用户环境(它将在其中运行),因此复杂的多文件特定构建对我们没有好处。我们有该设备的驱动程序。

标签: html node.js webkit v8 node-webkit


【解决方案1】:

您几乎可以肯定需要一个 C/C++ 模块来实现这一点,这意味着需要一个构建过程。好消息是,您可以在您的机器上进行构建,然后为 Windows 和 OS X 分发生成的二进制文件(x86 和 x64)。Linux 可能有点棘手,但另一方面,它更有可能有一个有效的构建环境。

有几种方法,按简单顺序排列:

  • 如果您的 GPS 设备可以将自己显示为简单的串行设备(Windows 上的 COM 端口,或 *nix 上的/dev/tty-usbserial),那么您可以使用serialport 连接到设备并接收原始数据。有一个nmea 模块可以处理解析数据。 serialport 在所有 3 个平台上开箱即用。

    如果驱动程序没有将设备显示为串行设备的官方选项,您可以通过一些搜索找到一种不受支持的方式来实现它。

  • 如果 GPS 设备的驱动程序不将设备公开为串行设备,则需要编写与驱动程序接口的C++ module。您需要为所有三个平台编写代码;设备制造商应提供文档/SDK。 (See here 获取有关在 Windows 上开始使用本机模块的建议。)

  • 最后的手段:您可以使用usb 模块直接与设备通信。这可能涉及对设备用于与计算机通信的协议进行逆向工程。

【讨论】:

    【解决方案2】:

    我建议您为此执行 command line 脚本。注意,它是特定于平台的。

    【讨论】:

      【解决方案3】:

      其实你不需要任何模块你可以使用 chrome usb api 它已经可用于 node webkit 和电子应用程序https://developer.chrome.com/apps/usb

      【讨论】:

      • 未来的访问者不在乎答案何时发布,只要他们访问时答案就在那里。无需提及您发布的“迟到”程度。
      • @MartijnPieters 是的,你是对的,我已经编辑了我的答案
      • 仅供参考 - Chrome.usb API 上有一条说明表明某些 USB 设备可能不会显示。根据我的经验,我在 Mac 和 PC 上使用 chrome.usb API 时存在差异,并且对于某些 Flash Sticks,它们根本不会出现。
      猜你喜欢
      • 2021-03-04
      • 1970-01-01
      • 1970-01-01
      • 2013-11-24
      • 1970-01-01
      • 2012-09-05
      • 1970-01-01
      • 1970-01-01
      • 2014-12-30
      相关资源
      最近更新 更多