3

RubyまたはC++を使用して特定の信号をUSBポートに送信できますか?また、オペレーティングシステムはWindowsなので、これはまったく新しい4 me(Windows用にプログラムするため)のようなものです。DLLファイルとして送信しようとしています。 DLLにはRubyコードが含まれていますか?

ちなみに、これは単なるトレーニングプロジェクトなので、それほど重要ではありません。私は窓の下でそれらのことを練習しているだけです。

4

1 に答える 1

1

ここには2つの別々の質問があります。だから私はそれらを別々に答えようとします。

コードから USB デバイスを制御する方法

はい、独自のコードから USB デバイスを制御できます。libusb を使用すると、通常の USB ドライバーが行うすべてのことができます。それらがオンになっているポートではなく、製造元とデバイス ID でアドレス指定することに注意してください。Linux では、これはどの USB デバイスでも機能します。Windowsでは、制御したくないデバイスのドライバーとしてlibusbを何らかの方法でインストールする必要があります。libusb の詳細については、http://www.libusb.org/を参照してください。win32 の libusb はhttp://libusb-win32.sourceforge.net/でホストされています。

ruby 内から libusb を使用したくない場合は、ある種の c バインディングを使用する必要があります。http://www.akr.org/ruby-usb/を使用するか、独自のバインディングを作成できます。

Rubyコードのコンパイル方法

これは私の専門分野ではありませんが、あなたが両方の質問をまとめて尋ねたように。私はそれに答えようとします。

実際にRubyをコンパイルする方法があります。

  • ruby インタープリターと eval の一連の ruby​​ コードを含む C プログラムを作成できます。
  • ruby2c プロジェクトは、一部の ruby​​ コード (すべてではない) を c に変換できます。この c コードはコンパイルできます。詳しくはhttp://rubyforge.org/projects/ruby2c/を参照してください。

Ruby コードをコンパイルすることがあなたのケースで意味があるかどうかについても考えるべきです。混合 C Ruby プログラムを作成している場合、すべての C 部分を Ruby 用の C 拡張にすることができます。この方法では、Ruby をコンパイルする必要はありません。ruby で c 用のライブラリを書きませんか? これはおそらく、このライブラリを使用する C プログラムのパフォーマンスに大きな影響を与えることを意味します。

于 2009-10-31T14:56:41.743 に答える