//---------------------------------------------------------------------------//
//                 Autor: José Manuel Toledo Fernández                       //
//                 Fecha: 24-2-2005                                          //
//                 Nombre: GestionTrama.cpp                                  //
//                                                                           //
//  Descripción: Este archivo contiene la interfaz principal del programa y  //
//               por lo tanto es el encargado de ir llamando al resto de los //
//               módulos y de ir abriendo las demás fichas del programa.     //
//---------------------------------------------------------------------------//

#include <vcl.h>
#pragma hdrstop

#include "GestionTrama.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)

//------------------------------------------------------------------------------
/*! Identifica el tipo de trama que estamos recibiendo y envia la informacion a
la funcion en cargada de rellenar los distintos campos de cada tipo\*/
int  Rellenatrama(char *cadena,int lon,Trama *tm)
{
   char *cad;
   int i=0;
   int resultado=false;
   AnsiString cabecera;

   tm->dato=cadena;
   cad = new char[lon+1];

   strcpy(cad,cadena);
   if(cad[i]=='$') //trama estandar
   {
      i++;
      while((cad[i]!=',')&&(cad[i]!='\0'))
      {
         cabecera+=cad[i];
         i++;
      }
      if(cad[i]==',')  //la cadena sigue teniendo el formato adecuado
      {
         i++;
         if(cabecera=="GPZDA")
         {
            if(TramaGPZDA(&tm,lon,cad+i))
               resultado=2;
         }
          if(cabecera=="GPGSV")
         {
            if(TramaGPGSV(&tm,lon,cad+i))
               resultado=1;
         }
         if(cabecera=="GPGLL")
         {
            if(TramaGPGLL(&tm,lon,cad+i))
               resultado=1;
         }
         if(cabecera=="GPGGA")
         {
            if(TramaGPGGA(&tm,lon,cad+i))
               resultado=1;
         }
      }
   }
   else if(cad[i]=='#')                //trama RT2
   {
       i++;
      while((cad[i]!=',')&&(cad[i]!='\0'))
      {
         cabecera+=cad[i];
         i++;
      }
      if(cad[i]==',')
      {
         if(cabecera=="SATVISA")
         {
            if(TramaSATVIS(&tm,lon,cad+i))
               resultado=1;
         }
         if(cabecera == "AVEPOSA")
         {
            TramaAVEPOSA(&tm,lon,cad+i);
            resultado=1;
         }
      }
   }
   delete(cad);
   return(resultado);
}
//------------------------------------------------------------------------------
/*! Rellena los campos típicos de la trama GPZDA y devuelve true si se ha realizado con
exito la operación*/
bool TramaGPZDA(Trama **tm,int lon,char *cad)
{
   bool ok=false;
   char *aux;

   aux = new char[lon];

   (*tm)->Tipo="GPZDA";

   strcpy(aux,cad);
   aux[9]='\0';
   cad+=9;
   (*tm)->gpzda.hora=atof(aux);
   if(((*tm)->gpzda.hora>0)&&(*cad==','))
   {
      cad++;
      strcpy(aux,cad);
      aux[2]='\0';
      cad+=2;
      (*tm)->gpzda.dia=atoi(aux);
      if(((*tm)->gpzda.dia>0)&&(*cad==','))
      {
         cad++;
         strcpy(aux,cad);
         aux[2]='\0';
         cad+=2;
         (*tm)->gpzda.mes=atoi(aux);
         if(((*tm)->gpzda.mes>0)&&(*cad==','))
         {
            cad++;
            strcpy(aux,cad);
            aux[4]='\0';
            cad+=4;
            (*tm)->gpzda.anno=atoi(aux);
            if(((*tm)->gpzda.anno>0)&&(*cad==',')&&(*(cad+1)==',')&&(*(cad+2)=='\0'))
            {
               (*tm)->gpzda.nulla=NULL;
               (*tm)->gpzda.nullb=NULL;
               ok=true;
            }
         }
      }
   }
   delete(aux);
   return(ok);
}
//-------------------------------------------------------------------------------
/*! Rellena los campos típicos de la trama GPGLL y devuelve true si se ha realizado con
exito la operación*/
bool TramaGPGLL(Trama **tm,int lon,char *cad)
{
   bool ok=false;
   char *aux;
   int i=0;

   aux = new char[lon];

   (*tm)->Tipo="GPGLL";

   while((cad[i]!=',')&&(cad[i]!='\0'))
   {
      aux[i]=cad[i];
      i++;
   }
   if(cad[i]==',')
   {
      aux[i]='\0';
      cad+=(i+1);
      i=0;
      (*tm)->gpgll.lat=atof(aux);
      if((*tm)->gpgll.lat>0)
      {
         if(((*cad=='N')||(*cad=='S'))&&(*(cad+1)==','))
         {
            (*tm)->gpgll.lat_dir=*cad;
            cad+=2;
            while((cad[i]!=',')&&(cad[i]!='\0'))
            {
               aux[i]=cad[i];
               i++;
            }
            if(cad[i]==',')
            {
               aux[i]='\0';
               cad+=(i+1);
               (*tm)->gpgll.lon=atof(aux);
               if(((*tm)->gpgll.lon>0)&&((*(cad)=='W')||(*(cad)=='E')))
               {
                  (*tm)->gpgll.lon_dir=*cad;
                  cad++;
                  if(*cad==',')
                  {
                     cad++;
                     strcpy(aux,cad);
                     aux[9]='\0';
                     cad+=9;
                     (*tm)->gpgll.hora=atof(aux);
                     if(((*tm)->gpzda.hora>0)&&(*cad==',')&&((*(cad+1)=='A')||(*(cad+1)=='B')))
                     {
                        cad++;
                        (*tm)->gpgll.estado=*cad;
                        if(*(cad+1)=='\0')
                           ok=true;
                     }
                  }
               }
            }
         }
      }
   }
   delete(aux);
   return(ok);
}
//-------------------------------------------------------------------------------
/*! Rellena los campos típicos de la trama GPGSV y devuelve true si se ha realizado con
exito la operación*/
bool TramaGPGSV(Trama **tm,int lon,char *cad)
{
   bool ok=false;
   char *aux;
   int satelite=3;
   int nsat;
   int error=0;
   int i=0;

   aux = new char[lon];

   (*tm)->Tipo="GPGSV";

   *aux=*cad;
   aux[1]='\0';  //cerramos la cadena para poder convertir a int
   (*tm)->gpgsv.n_msg=atoi(aux);
   cad++;
   if(((*tm)->gpgsv.n_msg>0)&&(*cad==','))
   {
      cad++;
      *aux=*cad;
      aux[1]='\0';  //cerramos la cadena para poder convertir a int
      (*tm)->gpgsv.id_msg=atoi(aux);
      cad++;
      if(((*tm)->gpgsv.id_msg>0)&&(*cad==','))
      {
         cad++;
         strcpy(aux,cad);
         aux[2]='\0';
         cad+=2;
         nsat=(*tm)->gpgsv.n_sat=atoi(aux);

         if(((*tm)->gpgsv.n_sat>0)&&(*cad==','))
         {
            if((*tm)->gpgsv.id_msg==(*tm)->gpgsv.n_msg)
                satelite=nsat-4*(((*tm)->gpgsv.id_msg)-1)-1;   //calculamos el num de satelites que
            while((satelite>=0)&&(error==0))                                 //contiene esta trama
            {
               cad++;
               if(*cad==',')
                  (*tm)->gpgsv.id_sat[satelite]=0;
               else
               {
                  strcpy(aux,cad);
                  aux[2]='\0';
                  cad+=2;
                  (*tm)->gpgsv.id_sat[satelite]=atoi(aux);
               }
               if(((*tm)->gpgsv.id_sat[satelite]>0)&&(*cad==','))
               {
                  cad++;
                  if(*cad==',')
                     (*tm)->gpgsv.elevacion[satelite]=0;
                  else
                  {
                     strcpy(aux,cad);
                     aux[2]='\0';
                     cad+=2;
                     (*tm)->gpgsv.elevacion[satelite]=atoi(aux);
                  }
                  if(((*tm)->gpgsv.elevacion[satelite]>=0)&&((*tm)->gpgsv.elevacion[satelite]<=90)&&(*cad==','))
                  {
                     cad++;
                     if(*cad==',')
                        (*tm)->gpgsv.acimut[satelite]=0;
                     else
                     {
                        strcpy(aux,cad);
                        aux[3]='\0';
                        cad+=3;
                        (*tm)->gpgsv.acimut[satelite]=atoi(aux);
                     }
                     if(((*tm)->gpgsv.acimut[satelite]>=0)&&((*tm)->gpgsv.acimut[satelite]<=359)&&(*cad==','))
                     {
                        cad++;
                        i=0;
                        while((*cad!=',')&&(*cad!='\0'))
                        {
                           aux[i]=*cad;
                           cad++;
                           i++;
                        }
                        aux[i]='\0';
                        if(i==0)
                           (*tm)->gpgsv.SNR[satelite]=0;
                        else
                           (*tm)->gpgsv.SNR[satelite]=atoi(aux);
                        satelite--;
                     }
                     else
                        error=1;
                  }
                  else
                     error=1;
               }
               else
                  error=1;
            }
         }
         if((*cad=='\0')&&(error==0))
               ok=true;

      }
   }
   delete(aux);
   return(ok);
}
//----------------------------------------------------------------------------
bool TramaSATVIS(Trama **tm,int lon,char *cad)
{
   bool ok=false;
   AnsiString aux="";
   int satelite = 0;
   int max_sat = 0;
   int error=0;
   int i=0;
   bool trama_vacia = false;

   (*tm)->Tipo="SATVISA";

   while((*cad!=';')&&(*cad!='\0'))
      cad++;
   if(*cad!=';')
      error=1;
   else
   {
      cad++;
      while((*cad!=',')&&(*cad!='\0'))
      {
         aux+=*cad;
         cad++;
      }

      if(*cad=='\0')
         error=1;
      else
      {
         cad++;
         if((aux=="true")||(aux=="TRUE"))
            (*tm)->satvisa.sat_vis=true;
         else if((aux=="false")||(aux=="FALSE"))
         {
            (*tm)->satvisa.sat_vis=false;
            trama_vacia = true;
            error = 1;
         }
         else
            error=1;
         if(error==0)
         {
            aux="";
            while((*cad!=',')&&(*cad!='\0'))
            {
               aux+=*cad;
               cad++;
            }

            if(*cad=='\0')
               error=1;
            else
            {
               cad++;
               if((aux=="true")||(aux=="TRUE"))
                  (*tm)->satvisa.comp_alm=true;
               else if((aux=="false")||(aux=="FALSE"))
                  (*tm)->satvisa.comp_alm=false;
               else
                  error=1;
            }
            if(error==0)
            {
               aux="";
               i=0;
               while((*cad!=',')&&(*cad!='\0'))
               {
                  aux+=*cad;
                  cad++;
                  i++;
               }
               if(*cad=='\0')
                  error=1;
               else
               {
                  (*tm)->satvisa.n_sat=atoi(aux.c_str());
                  cad++;
                  max_sat=atoi(aux.c_str())-1;

                  if((*tm)->satvisa.n_sat<0)
                     error=1;
                  else
                  {
                     while((satelite<12)&&(max_sat>=0)&&(error==0))
                     {
                        if(*cad==',')
                           (*tm)->satvisa.id_sat[satelite]=0;
                        else
                        {
                           aux="";
                           while((*cad!=',')&&(*cad!='\0'))
                           {
                              aux+=*cad;
                              cad++;
                           }
                           if(*cad!=',')
                              error=1;
                           else
                           {
                              cad++;
                              (*tm)->satvisa.id_sat[satelite]=atoi(aux.c_str());
                           }
                           if(error!=1)
                           {
                              if((*tm)->satvisa.id_sat[satelite]>=0)
                              {
                                 while((*cad!=',')&&(error!=1)) //saltamos la parte reservada
                                 {
                                    cad++;
                                    if(*cad=='\0')
                                       error=1;
                                 }
                                 if(error!=1)
                                 {
                                    aux="";
                                    cad++;
                                    if(*cad==',')
                                       (*tm)->satvisa.health[satelite]=0;
                                    else
                                    {
                                       while((*cad!=',')&&(*cad!='\0'))
                                       {
                                          aux+=*cad;
                                          cad++;
                                       }
                                       if(*cad=='\0')
                                          error=1;
                                       else
                                          (*tm)->satvisa.health[satelite]=atoi(aux.c_str());
                                    }
                                 }
                                 if(error!=1)
                                 {
                                    aux="";
                                    cad++;
                                    if(*cad==',')
                                       (*tm)->satvisa.elevacion[satelite]=0;
                                    else
                                    {
                                       while((*cad!=',')&&(*cad!='\0'))
                                       {
                                          aux+=*cad;
                                          cad++;
                                       }
                                       if(*cad=='\0')
                                          error=1;
                                       else
                                          (*tm)->satvisa.elevacion[satelite]=atoi(aux.c_str());
                                    }

                                    if(error!=1)
                                    {
                                       aux="";
                                       cad++;
                                       if(*cad==',')
                                          (*tm)->satvisa.acimut[satelite]=0;
                                       else
                                       {
                                          while((*cad!=',')&&(*cad!='\0'))
                                          {
                                             aux+=*cad;
                                             cad++;
                                          }
                                          if(*cad=='\0')
                                             error=1;
                                          else
                                            (*tm)->satvisa.acimut[satelite]=atoi(aux.c_str());
                                       }
                                       if(error!=1)
                                       {
                                          cad++;
                                          i=0;
                                          while((i<2)&&(*cad!='\0'))
                                          {
                                             if(*cad==',')
                                                i++;
                                             cad++;
                                          }
                                          if(((*cad=='\0')&&(max_sat!=0))||((i!=2)&&(max_sat>=1)))
                                             error=1;
                                          if((*tm)->satvisa.elevacion[satelite]>=0) //si la elevacion es negativa se sobreescriben los datos
                                             satelite++;
                                          max_sat--;
                                       }
                                    }
                                 }
                              }
                              else
                                  error=1;
                           }
                        }
                     }
                  }
               }
            }
         }
         else if(trama_vacia == true)
         {
            (*tm)->satvisa.comp_alm=false;
            (*tm)->satvisa.n_sat=0;
            error = 0;      //bajamos error porque en realidad la trama ha llegado
         }
      }
   }
   (*tm)->satvisa.n_sat=satelite;
   if(error==0)
      ok=true;
   return(ok);
}
//------------------------------------------------------------------------------
/*! Rellena los campos típicos de la trama GPZDA y devuelve true si se ha realizado con
exito la operación*/
void TramaAVEPOSA(Trama **tm,int lon,char *cad)
{
   char *aux;
   int i = 0;
   AnsiString est="";

   (*tm)->Tipo="AVEPOSA";
   aux = new char[lon];

   while(*cad!=';')
   {
      cad++;
   }
   cad++;
   while(*cad!=',')
   {
      aux[i] = *cad;
      cad++;
      i++;
   }
   aux[i] = '\0';
   cad++;
   i=0;
   (*tm)->aveposa.latitud = atof(aux);

   while(*cad!=',')
   {
      aux[i] = *cad;
      cad++;
      i++;
   }
   aux[i] = '\0';
   cad++;
   i=0;
   (*tm)->aveposa.longitud = atof(aux);

   while(*cad!=',')
   {
      aux[i] = *cad;
      cad++;
      i++;
   }
   aux[i] = '\0';
   cad++;
   i=0;
   (*tm)->aveposa.altura = atof(aux);

   while(*cad!=',')
   {
      aux[i] = *cad;
      cad++;
      i++;
   }
   aux[i] = '\0';
   cad++;
   i=0;
   (*tm)->aveposa.desvLat = atof(aux);

   while(*cad!=',')
   {
      aux[i] = *cad;
      cad++;
      i++;
   }
   aux[i] = '\0';
   cad++;
   i=0;
   (*tm)->aveposa.desvLon = atof(aux);

   while(*cad!=',')
   {
      aux[i] = *cad;
      cad++;
      i++;
   }
   aux[i] = '\0';
   cad++;
   i=0;
   (*tm)->aveposa.desvAlt = atof(aux);

   while(*cad!=',')
   {
      aux[i] = *cad;
      cad++;
      i++;
   }
   aux[i] = '\0';
   cad++;
   i=0;
   est = est+(AnsiString)aux;
   if(est == "OFF")
      (*tm)->aveposa.estado = 0;
   else if(est == "INPROGRESS")
      (*tm)->aveposa.estado = 1;
   else if(est == "COMPLETE")
      (*tm)->aveposa.estado = 2;

   while(*cad!=',')
   {
      aux[i] = *cad;
      cad++;
      i++;
   }
   aux[i] = '\0';
   cad++;
   i=0;
   (*tm)->aveposa.tiempo = atof(aux)/ 3600;
   while((*cad!='\0')||(*cad!='\0'))
   {
      aux[i] = *cad;
      cad++;
      i++;
   }
   aux[i] = '\0';
   cad++;
   i=0;
   (*tm)->aveposa.samples = atof(aux);

   delete(aux);
}
//-------------------------------------------------------------------------
/*! Rellena los campos típicos de la trama GPGGARTK y devuelve true si se ha realizado con
exito la operación*/
bool TramaGPGGA(Trama **tm,int lon,char *cad)
{
   bool ok=false;
   char *aux;
   int i=0;

   aux = new char[lon];

   (*tm)->Tipo="GPGGA";

   while((cad[i]!=',')&&(cad[i]!='\0'))
   {
      aux[i]=cad[i];
      i++;
   }
   if(cad[i]==',')
   {

      aux[i]='\0';
      cad+=(i+1);
      i=0;
      (*tm)->gpggartk.hora=atof(aux);
      if((*tm)->gpggartk.hora>0)
      {
         while((cad[i]!=',')&&(cad[i]!='\0'))
         {
            aux[i]=cad[i];
            i++;
         }
         if(cad[i]==',')
         {
            aux[i]='\0';
            cad+=(i+1);
            i=0;
            (*tm)->gpggartk.lat=atof(aux);
            if(((*cad=='N')||(*cad=='S'))&&(*(cad+1)==','))
            {
               (*tm)->gpggartk.lat_dir=*cad;
               cad+=2;
               while((cad[i]!=',')&&(cad[i]!='\0'))
               {
                  aux[i]=cad[i];
                  i++;
               }
               if(cad[i]==',')
               {
                  aux[i]='\0';
                  cad+=(i+1);
                  (*tm)->gpggartk.lon=atof(aux);
                  if(((*tm)->gpgll.lon>0)&&((*(cad)=='W')||(*(cad)=='E')))
                  {
                     (*tm)->gpggartk.lon_dir=*cad;
                     cad++;
                     i=0;
                     while(i<=3)
                     {
                        if(*cad==',')
                           i++;
                        cad++;
                     }
                     i=0;
                     while((cad[i]!=',')&&(cad[i]!='\0'))
                     {
                        aux[i]=cad[i];
                        i++;
                     }
                     if(cad[i]==',')
                     {
                        aux[i]='\0';
                        cad+=(i+1);
                        (*tm)->gpggartk.alt=atof(aux);
                        (*tm)->gpggartk.alt_unidad=*cad;
                        ok=true;
                     }
                  }
               }
            }
         }
      }
   }
   delete(aux);
   return(ok);
}

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="es">
	<head>
            <title>e-REdING. Biblioteca de la Escuela Superior de Ingenieros de Sevilla.</title>

                <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<meta name="description" content="Buscador de proyectos ETSI" />
<meta name="author" content="Daniel Callejo"/>
<meta name="author" content="Federico L&oacute;pez"/>
<meta name="author" content="Juli&aacute;n P&eacute;rez"/>
<meta name="author" content="Jos&eacute; Mar&iacute;a Vidal Vidal"/>
<base href="/bibing/proyectos/" /><link rel="shortcut icon" href="./favicon.ico" />
<link rel="stylesheet" href="./publico/css/estructura.css" type="text/css" />
<link rel="stylesheet" href="./publico/css/bootstrap.css" type="text/css" media="screen"/>
<link rel="stylesheet" href="./publico/css/enlaces-capas.css" type="text/css"  />
<link rel="stylesheet" href="./publico/css/pestanas.css" type="text/css"  /> 
<link rel="stylesheet" href="./publico/css/formularios.css" type="text/css" />
<link rel="stylesheet" href="./publico/css/lightbox.css" type="text/css"  />
<link rel="stylesheet" href="./publico/css/autocompleter.css" type="text/css"  />
<link rel="stylesheet" href="./publico/css/resultados.css" type="text/css"  />
<link rel="stylesheet" href="./publico/css/milista.css" type="text/css"  />
<link rel="stylesheet" href="./publico/css/explorador.css" type="text/css"  />
<link rel="stylesheet" href="./publico/css/ultimos.css" type="text/css"  />
<link rel="stylesheet" href="./publico/css/contactar.css" type="text/css"  />
<!-- <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" /> -->
<script src="./publico/javascript/jquery-1.9.1.min.js" type="text/javascript"></script>
<script src="./publico/javascript/bootstrap.js" type="text/javascript"></script>

<script src="./publico/javascript/mootools-1.2.4-core.js" type="text/javascript"></script>
<script src="./publico/javascript/mootools-1-1.2.4.2-more.js" type="text/javascript"></script>
<script src="./publico/javascript/targetbl.js" type="text/javascript"></script>
<script src="./publico/javascript/mensajes.js" type="text/javascript"></script>
<script src="./publico/javascript/form.js" type="text/javascript"></script>
<script src="./publico/javascript/autocompleter/Observer.js" type="text/javascript"></script>
<script src="./publico/javascript/autocompleter/Autocompleter.js" type="text/javascript"></script>
<script src="./publico/javascript/autocompleter/Autocompleter.Request.js" type="text/javascript"></script>
<script src="./publico/javascript/domready.js" type="text/javascript"></script>

<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-8T1TSNC1QY"></script>
<script>
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}
  gtag('js', new Date());

  gtag('config', 'G-8T1TSNC1QY');
</script>



<script type="text/javascript">
function seleccionar_todo(){
   for (i=0;i<document.formulario_marcados.elements.length;i++)
      if(document.formulario_marcados.elements[i].type == "checkbox")
         document.formulario_marcados.elements[i].checked=1
}
function deseleccionar_todo(){
   for (i=0;i<document.formulario_marcados.elements.length;i++)
      if(document.formulario_marcados.elements[i].type == "checkbox")
         document.formulario_marcados.elements[i].checked=0
} 
</script>
	</head>
    <body style="min-width: 960px; background-color: #e2e2e2; height: 100%">	
		<a name="arriba"></a>
<div>
<div id="header">
    <table id="Tabla_01" height="105" border="0" cellpadding="0" cellspacing="0">
    <tr>
        <td>
            <img src="./publico/imagenes/cabecera/banner_new2_01.jpg" width="3" height="105" alt="">
        </td>
        <td>
            <img src="./publico/imagenes/cabecera/banner_new2_02.jpg" width="100" height="105" alt="">
        </td>
        <td width="100%" align="right"  style="min-width: 613px; background-repeat: no-repeat; background-position: top right; font-size: medium; font-weight: bold; color: white;">
            <table width="100%" height="105" border="0">
                <tr>
                    <td style=" vertical-align: top; width: 547px">
                        <!-- <a style="text-decoration: none" href="./"><img src="./publico/imagenes/cabecera/banner_new2_03.jpg"alt=""></a> -->
                        <a style="text-decoration: none" href="/bibing/proyectos/"><img src="./publico/imagenes/cabecera/banner_new2_03.jpg"alt=""></a>
                     </td>
                     <td  background="./publico/imagenes/cabecera/banner_new2_04.jpg" style="background-repeat: no-repeat; background-color: #c6d4e8;"><br><br><br>
                         &nbsp;
                        </td>
                    </tr>
             </table>
        </td>
    </tr>
    <tr style="border-top: 1px solid #ffffff;">
        <td colspan="3" id="menu_sup" style="font-size: small; text-align: right; background-color: #9c1f2f; vertical-align: bottom">
             
					<a href="/bibing/proyectos/" class="enlace " style=" color: #ffffff">Inicio&nbsp;&nbsp;|</a>
					<a href="/bibing/proyectos/acerca/" style=" color: #ffffff" class="enlace ">&nbsp;&nbsp;Acerca de&nbsp;&nbsp;|</a>
					
					<a href="/bibing/proyectos/contactar/" style=" color: #ffffff" class="enlace ">&nbsp;&nbsp;Contactar&nbsp;&nbsp;</a>
			 <!--       <a href="/bibing/proyectos/ayuda/" style=" color: #ffffff" class="enlace  ">&nbsp;&nbsp;Ayuda&nbsp;&nbsp;|</a> -->
					<!-- <form id="idioma" class=""  method="post" action="">
					<div class="inline" style="color: white">
					<input type="submit" class="tipo_letra " style=" color: #ffffff"name="idioma" value="Castellanossss" />&nbsp;&nbsp;
					</div>	
					</form> -->
			        </td>

    </tr>
    </table>
</div>
<br><br>
<div class="colmask rightmenu">
<div class="panel panel-default" style="margin:20px">
            <div class="panel-heading"><h4>SOFTWARE PARA LA MONITORIZACIÃ“N Y CONTROL DE RECEPTORES GPS. APLICACIÃ“N A RECEPTORES NOVATEL RT-2</h4><h5 style="color:grey"><span class="glyphicon glyphicon-user""></span> : <b>TOLEDO FERNÃ�NDEZ, JOSÃ‰ MANUEL</b><br><span class="glyphicon glyphicon-book""></span>  :<b> Ingenier&iacute;a TelecomunicaciÃ³n</b></h5></div><div class="panel-body"><div class="contenido_proyecto"><div class="titulo2_explorador">Contenido del proyecto:</div><div class="ruta"><a href="use/abreproy/11271">Directorio ra&iacute;z</a>&nbsp;&nbsp;>&nbsp;&nbsp;<a href="use/abreproy/11271/direccion/InterGPS%252F">InterGPS</a>&nbsp;&nbsp;>&nbsp;&nbsp;<a href="use/abreproy/11271/direccion/InterGPS%252FInterGPS_codigo%252F">InterGPS_codigo</a>&nbsp;&nbsp;>&nbsp;&nbsp;<a href="use/abreproy/11271/direccion/InterGPS%252FInterGPS_codigo%252FGestionTrama.cpp%252F">GestionTrama.cpp</a></div><div class="listing"></div></div></div></div>
</div>
</div>

        
	</body>
 
 
<!-- Inicio Google Analytics -->
<!--
	<script type="text/javascript">
		var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
		document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
	</script>
	
	<script type="text/javascript">
		try {
		var pageTracker = _gat._getTracker("UA-7789620-1");
		pageTracker._trackPageview();
	} 
		catch(err) {}
	</script>
-->
<!-- Fin Google Analytics -->

</html>

