【问题标题】:Is there any ruby library for usb hid interfaces?是否有任何用于 USB 隐藏接口的 ruby​​ 库?
【发布时间】:2012-10-08 17:58:50
【问题描述】:

我担心还没有 USB 隐藏库。有谁知道可以与 ruby​​ 一起使用的好替代品(例如 jruby)?

【问题讨论】:

    标签: ruby rubygems jruby hid


    【解决方案1】:

    如果您准备坚持使用 JRuby,可以尝试包装 javahidapi。它使用 JNI 执行对 HIDAPI 库的调用。

    【讨论】:

      【解决方案2】:

      ruby wrappers for libusb library 不符合要求吗?

      另外,这篇博文:Working ruby HID listener example 有一些与 USB 接口的代码示例

      【讨论】:

      • 不,它不符合要求,因为 libusb gem 没有隐藏支持。我已经尝试过该博客文章上的示例,但由于没有隐藏的方法/类,它不起作用,尽管在该博客文章中提到了它们。但它们不存在。
      【解决方案3】:

      我知道这是一个老问题,但我已经编写了一个 gem 用于在 Linux 上的 Ruby 中读取 HID 控制器(它直接与 Linux 内核驱动程序一起工作)。

      https://rubygems.org/gems/ruby_hid

      它现在也是相当实验性的,但它确实有效。

      使用它,您可以在按钮或控制轴上设置观察者,它们在单独的线程上运行,由start_listening 触发。这可以在共享对象中设置一个值,您可以在代码中使用该值。

      这是其中一个示例,它只报告按钮按下:

      require 'rubygems'
      require 'ruby_hid'
      
      device = RubyHid::Device.new(
        RubyHid::Device.list[0]
      )
      
      buttons = RubyHid::Button::EVENTS
      
      buttons.each do |code, name|
        button = RubyHid::Button.find_by_name(name)
        button.add_event(
          eval "lambda { |val| puts \"#{name} pushed: \#{val}\" }"
        )
      end
      
      device.start_watching
      
      loop do
        sleep 1
      end
      

      【讨论】:

        猜你喜欢
        • 2011-05-03
        • 2012-11-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-11-12
        • 1970-01-01
        • 2011-01-13
        • 1970-01-01
        相关资源
        最近更新 更多