sábado, 26 de mayo de 2007

Sistema potente y Shell potente: LinuX

El otro dia el bueno de mi Javi (lástima que sea Teleco ;)) me pidio ayuda de manera urgente, necesitaba lo siguiente:
  1. Hacer un programa en Windows o Linux que envíe por el puerto serie las teclas que antes se envíaban por el terminal serie.
  2. Establecer algún mecanismo de temporización, de manera que podamos mandar las teclas automáticamente con un intervalo de tiempo determinado
  3. Leer de un fichero o de una tabla las órdenes a enviar al robot. Una orden estará formada por una tecla y un valor de pausa. Con este mecanismo podemos hacer que el robot reproduzca secuencias pre-grabadas tipo: Avanza 3 seg, gira izquierda 2 seg, para 1 seg,...
Ahí es cuando me puse a pensar y dije... Windows ni de coña: No tengo compilador en Windows (mea culpa), tengo el Windows para jugar y diseñar, para programar tengo LinuX que es donde de verdad estoy a gusto con 4 escritorios, ventanas encima del resto, transparencias y un shell verdaderamente potente (culpa de windows :)) Aparte con lo que es Windows seguro que tenía que hacer maravillas para acceder al puerto serie, no solo me valdría con hacer un main mu cutre.

Así que me puse a pensar en Linux y dije... seguro que hay por ahi algun codigo estupido o una minilibrería para pasarle datos al puerto serie... leche, no tengo en /dev/ el puerto serie a palo seco???

Y así quedó el script de envio en Linux:
#!/bin/bash

echo "Serial port sender V0.1"
echo "-----------------------"

if [[ $# != "3" ]]
then
echo "ERROR: Sintaxis del programa."
echo $0 "numero_puerto fichero tiempo"
echo " "
echo "numero_puerto debe ser un numero entre 1 y 4"
echo "fichero debe contener una instruccion por linea y sin espacios"
echo "tiempo debe ser entero positivo"
echo " "
echo "NOTA FINAL: probablemente requiera privilegios de root para ejecutarse"
else
echo "Direccionando a puerto $1 desde $2 con intervalos de $3"
for i in `cat $2`
do
echo "Enviando... $i"
echo $i > /dev/ttyS0$1
echo "Done"
sleep $3
done

fi
Ahí está, ocupa más la comprobación de errores y la información al usuario que la chicha de verdad :) LinuX rules... again!

No hay comentarios: