2009-10-30 243 views
2

我可以使用Ruby或C++發送特定的信號到USB端口,也是操作系統是Windows,所以這就像全新的4我(爲Windows編程),所以我試圖做到這一點一個DLL文件,這個DLL可以包含Ruby代碼嗎?控制USB端口

順便說一句,這只是一個培訓項目,所以它沒有那麼重要,我只是在windows下練習這些東西。

+2

什麼樣的USB設備你有興趣控制? – Artelius 2009-10-30 23:00:35

+6

USB只是一個總線。什麼樣的設備連接到總線的另一端? – 2009-10-30 23:04:56

+0

沒什麼特別的...但是如何處理某種環,當我發送特定信號時響起,然後當我發送另一個時停止。 – Raafat 2009-10-31 08:00:47

回答

1

我在這裏看到兩個單獨的問題。所以我會試着去分開他們。

如何從你的代碼控制USB設備

是的,你可以控制USB從自己的代碼的設備。藉助libusb,您可以完成普通USB驅動程序所做的一切。請注意,您沒有使用他們所在的端口來解決這些問題,而是使用他們的製造商和設備ID。在linux下這個工作適用於任何USB設備。在Windows下,您必須以某種方式安裝libusb作爲您要控制的設備的驅動程序。在http://www.libusb.org/查看更多關於libusb的信息。 win32的libusb託管在http://libusb-win32.sourceforge.net/

如果你不想在ruby裏面使用libusb,你必須使用某種c綁定。您可以使用http://www.a-k-r.org/ruby-usb/或編寫自己的綁定。

如何編譯Ruby代碼

這不是我的專業領域,但你問兩個問題爲一體。我會盡力去解決它。

實際上有編譯ruby的方法。

  • 你可以編寫一個C程序,其中包括Ruby解釋器和eval的一串Ruby代碼。
  • ruby​​2c項目可以將一些ruby代碼(不是全部)轉換爲c。這個c代碼可以被編譯。請參閱http://rubyforge.org/projects/ruby2c/

你還應該考慮一下,在你的情況下編譯ruby代碼是否合理。如果你正在編寫一個混合的C ruby​​程序,你可以做所有的C部分C擴展爲紅寶石。這樣你的ruby可以不需要編譯。你是不是想爲紅寶石寫一個c庫?這可能意味着使用此庫的c程序會產生巨大的性能影響。