Pregunta

Necesito hacer algunas comunicaciones a través de un puerto serie en Ruby. Según mi investigación, parece que no hay muchas bibliotecas modernas para comunicaciones en serie y el material más nuevo que puedo encontrar es de 2006. ¿Hay alguna gema de la que no tenga conocimiento?

En última instancia, necesito mantener las comunicaciones con un dispositivo serie conectado a USB (puedo encontrar el puerto sin problemas) para las comunicaciones de ida y vuelta (pseudocódigo de Ruby-esque).

def serial_write_read
  if serial.read == "READY"
    serial.write "1"
    until serial.read == "OK"
      serial.write "5"
    end
    return when serial.read == "DONE"
  end
end
¿Fue útil?

Solución

La especificación del puerto serie no ha cambiado para siempre, no me preocuparía por la antigüedad de las bibliotecas.

Supongo que has visto this artículo de 2006 sobre ruby ??y puertos serie

Aquí hay alguien que recibió la biblioteca Ruby-SerialPort mencionada allí para trabajar en macs este año.

También hay esta publicación antigua de Ruby Talk, sobre la interfaz con la API serial de Win32.

Otros consejos

Solo porque buscar ruby-serialport te llevará a veces aquí:

El repositorio github de toholio ya no parece estar activo (a partir del 09/2010). La gema publicada proviene de

http://github.com/hparra/ruby-serialport

Si bien el estándar en serie no ha cambiado, la forma en que Ruby Gems interactúa con las extensiones de Ruby C cambió lo suficiente a lo largo de los años para que la extensión del puerto en serie de RubyForge no funcionara bien. Ha habido algunos parches a lo largo de los años en RubyForge para solucionarlo, pero no ha sido bonito. La buena noticia es que Github ha permitido una increíble aceleración en la actividad para limpiar la extensión del puerto serie Ruby. Al menos tres personas diferentes están bifurcando su código de puerto serie en Github. Puede buscar en Github, pero creo que Toholio tiene el último código, que recodifica y vuelve a empaquetar el puerto serie Ruby como una Gema Ruby. (¡Sí!)

http://github.com/toholio/ruby-serialport/tree/master

Funciona muy bien para mí en Linux, resolviendo el conflicto anterior con la última versión de Ruby Gems. En Windows, todavía tengo problemas para que funcione. Compilar extensiones de Ruby en Windows nunca es muy fácil, pero eso es un montón de gusanos. Estoy feliz de que la gente vuelva a trabajar en el soporte del puerto serie Ruby. Le pedí a Toholio que generara una gema binaria de Windows, que resolvería los problemas de todos, y él dice que está en su lista para hacer.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top