Created
December 13, 2017 18:33
-
-
Save cpfarher/cf8e84a447960ee346a3d6351c0225fa to your computer and use it in GitHub Desktop.
Conexión a puerto serial con ruby serialport gem y simulación de puerto en linux
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| ===================== Documentación ================================ | |
| Gema serialport: http://www.rubydoc.info/gems/serialport/SerialPort | |
| IO: http://www.rubydoc.info/stdlib/core/IO | |
| ===================== Documentación ================================ | |
| 1- Simulación puerto serial en linux: | |
| sudo apt-get install socat | |
| #en una consola: | |
| socat -d -d pty,raw,mode=777 pty,raw,mode=777 | |
| 2017/12/13 14:19:54 socat[3641] N PTY is /dev/pts/**21** | |
| 2017/12/13 14:19:54 socat[3641] N PTY is /dev/pts/**22** | |
| 2017/12/13 14:19:54 socat[3641] N starting data transfer loop with FDs [5,5] and [7,7] | |
| los parámetros indican: | |
| -d son para que el output sea verbose (puede ser un -d solo o hasta cuatro, depende el grado de "verbosidad") | |
| -v -x, para que muestre la version y la cantidad de datos transferidos. | |
| -PTY, es porque vamos a crear una Pseudo Terminal | |
| -link Sirve para linkear el objeto que estamos creando a un archivo que ya existe. | |
| - el mode=777 para acceder al puerto sin ser root | |
| - echo=0 para no tener echo local | |
| #en otra consola: # el 21 debe coinicidir con el numero marcado en ** ** arriba | |
| cat < /dev/pts/21 | |
| #en otra consola: prueba escribiendo desde bash | |
| echo "Test438+" > /dev/pts/25 | |
| ===================== Script ejemplo para lectura/escritura con ruby ================================ | |
| require 'rubygems' | |
| require 'serialport' | |
| sp = SerialPort.new "/dev/pts/25" | |
| sp.write "AT\r" | |
| sp.write "Escribiendo al puerto pts 21" | |
| puts "Baud: #{sp.baud}" | |
| puts "Data Bits: #{sp.data_bits}" | |
| puts sp.read 10 | |
| #while true do | |
| # puts sp.getc | |
| #end | |
| sp.close |
Author
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Algunos parámetros que se ejecutan en el socat no están pasados. Simplemente los puse a modo de resumen para no tener que leer toda la doc.