Я вижу два отдельных вопроса здесь. Поэтому я постараюсь ответить на них по отдельности.
Как управлять USB-устройствами из вашего кода
Да, вы можете управлять USB-устройствами из собственного кода. С libusb вы можете делать все, что делают обычные драйверы USB. Имейте в виду, что вы обращаетесь не к порту, к которому они подключены, а к их производителю и идентификатору устройства. Под Linux это работает для любого устройства USB. Под Windows вы должны каким-то образом установить libusb в качестве драйвера для устройства, которым вы не хотите управлять. Подробнее о libusb см. http://www.libusb.org/. libusb для win32 размещен по адресу http://libusb -win32.sourceforge.net / .
Если вы не хотите использовать libusb изнутри ruby, вы должны использовать какие-то привязки c. Вы можете использовать эфир http://www.a -k-r.org / ruby-usb / или написать свои собственные привязки.
Как скомпилировать код ruby
Это не моя область знаний, но вы задали оба вопроса как один. Я постараюсь ответить.
На самом деле есть способы компиляции ruby.
- Вы могли бы написать программу на C, которая включает интерпретатор ruby, а eval - строку кода ruby.
- Проект ruby2c может перевести некоторый код ruby (не весь) в c. Этот код c может быть скомпилирован. Подробнее на http://rubyforge.org/projects/ruby2c/.
Вам также следует подумать о том, имеет ли смысл в вашем случае компилировать код ruby. Если вы пишете смешанную программу на ruby, вы можете сделать все части c расширениями для ruby. Таким образом, ваш рубин не нужно компилировать. Вы не хотите писать библиотеку для c в ruby? Это, вероятно, будет означать огромное влияние на производительность программ c, использующих эту библиотеку.