Porblema con trama GPS

Iniciado por paolinig, 30 Marzo 2013, 01:43 AM

0 Miembros y 1 Visitante están viendo este tema.

paolinig

Buenas noches

Ante todo saludarlos y agradecerles la atencion prestada al siguiente problema:

- Me dieron de prueba un GPS sierra MP750, son viejitos pero bastante robustos.
- Estoy analizando la trama de dichos aparejos y viene de la siguiente manera:

>RLNAAAAABBBSCCDDDDDDDSEEEFFFFFFFSGGGGGGHHIIIJSKKKLMMMNOOPPQQ......PPQQRRRRRRRRRRXT<

la que yo recibo es la siguiente:

>RLN86050000+047397322-0740295031+008472670000+0000000006036711041308206923623224000000000012;ID=G100;*33

que traduce:

RLN;TIME;LAT;LON;ALTURA;VEL H;VEL V;;SAT;;;;;;;ID;

Despues de tanto "cacharear" logre hacer el siguiente "script" para organizar la informacion almacenada en un archivo plano.

#1 Escanea puerto udp por 240 segundos y genera archivo plano****problemas no escanea
nc -ul 5005 -w 240 > gps.1

#2 Organiza Archivo gps.1 archivo
cat gps.1 | tr '<>' '\012' > gps.2

#3 Esperar 235 segundos y volver con el PASO1 ****No pierde trama del paso 4

#4 Escanea puerto udp por 240 segundos  genera archivo plano****problemas no escanea
nc -ul 5005 -w 240 > gps.3

#5 Organiza Archivo gps.3
cat gps.3 | tr '<>' '\012' > gps.4

#6 Esperar 235 segundos y volver con el PASO4****No pierde trama del paso 1

#7 Suma los dos archivos
cat gps.2 gps.4 |tr -s "\n*" > gps_db

#9 Quitar lineas en blanco
sed '/^$/d' gps_db > gps_db1

#7 borrar ;
cat gps_db1 | tr ';' ' ' > gps_db2

#8 mover columna ID al incio de la fila
awk '{ print $2, $1, $3}' gps_db2 > gps_db3

#9 quitar espacios
cat gps_db3 | tr ' ' '-' > gps_db4

#10 insertar tabuladores en las filas*****Problema

#11 borrar filas duplicadas.

#12 Organizar tabla cronologicamente Columna TIME. Usar Sort -u

despues de todo este proceso la fila que sale es la siguiente.

ID=G100-RLN83505000+047397197-0740295104+008497550000+0000000006066911041913206923623224000000000012-*39


Hasta aqui logre llegar claro esta todavia tengo dos problemas los cuales creo que con su colaboracion llegare a buen puerto:

- El primero es lograr que el archivo nc escuche en el puerto udp por 240 segundo, he tratado por todos los medio y la unica forma es cuando esta acompañanda con -l pero si es asi el comado -w (timeout) no funciona.

- El segundo problema es que la trama no tiene ningun tipo de delimitador de campo, la delimitacion se hace de acuerdo a la posicion de cada caracter. Segun se puede observar. He tratado con cut, awk y todos sus amigos. Pero no he podido.

Como se podran dar cuenta no soy programador y acepto todas las criticas de una forma que yo pueda entender....jajajajaja. Espero que exista una alma que se apiade de mi.....


Saludos



Gianni

Ps: y eso que todavia tengo que subir todo a la base de datos y montarlo a google map.

-Myx-

Citar- El primero es lograr que el archivo nc escuche en el puerto udp por 240 segundo, he tratado por todos los medio y la unica forma es cuando esta acompañanda con -l pero si es asi el comado -w (timeout) no funciona.

Código (bash) [Seleccionar]
SOMEPORT=8585
SLEEPTIME=240

nc -l -p $SOMEPORT > rawoutput.raw 2>/dev/null & # <---- ampersand &

listenerpid=$!  # PID de nc

echo 'Sleeping time in seconds: '$SLEEPTIME
sleep $SLEEPTIME

kill -9 $listenerpid &>/dev/null && echo 'Process pid killed: '$listenerpid || echo 'Kill failed'


Citar- El segundo problema es que la trama no tiene ningun tipo de delimitador de campo, la delimitacion se hace de acuerdo a la posicion de cada caracter. Segun se puede observar. He tratado con cut, awk y todos sus amigos. Pero no he podido.

Código (bash) [Seleccionar]
CADENADETEXTO='123456789012345678901234567890'
echo $CADENADETEXTO | cut -b1,6,16