martes, 6 de julio de 2010

Shell script para capturar datos de un puerto serial en Linux

A continuación presento un pequeño script que captura datos del puerto serial de una máquina con Linux y lo recibido es enviado a un archivo PHP que se encarga del procesamiento.

Esto fue utilizado para extraer datos de un tarificador de llamadas Samsung y enviarlas a un script PHP que almacena los datos en BD.


#!/bin/bash

RUTA_PROCESADOR=/var/www/Captura
RUTA_PS=/dev/ttyS0 #Puerto Serial

CONF_VELOCIDAD="4800"
CONF_NUMERO_BITS_TRAMA="7"
CONF_OPCIONES="-parenb"

#Configurando puerto serial para lectura
stty $CONF_VELOCIDA -F $RUTA_PS cs$CONF_NUMERO_BITS_TRAMA $CONF_OPCIONES

#Capturando data
cat $RUTA_PS | while read line; do php $RUTA_PROCESADOR/controlador_llamada.php "${line}" && echo ${line}; done >> $RUTA_PROCESADOR/traza.log &


El script configura primero el puerto a través del comando stty y luego con un simple cat sobre el archivo configurado (RUTA_PROCESADOR) se extraen los datos. Cada una de las líneas capturadas ${line} es enviada al script $RUTA_PROCESADOR/controlador_llamada.php.

3 comentarios:

  1. está buenísimo este ejemplo!!!
    muchas gracias!!!

    ResponderEliminar
  2. Me alegra saber que te fue de ayuda :-)

    ResponderEliminar
  3. se ve bien este script, lo probare, se que el comando cat me servia para leer el puerto serie, pero cuando lo leia mostraba los datos pero se quedaba pegado el comando leyendo infinitamente, no se mucho de bash, pero igual gracias por compartir

    ResponderEliminar