ESTE CORTO PROGRAMA DETECTA SI UNA CADENA ENTRANTE EN UNA NEGOCIACION GPRS LA RESPUESTA DEL COMANDO AT+CIFSR DEVUELVE UNA DIRECCION IP VALIDA EL PROGRAMA CUENTA LOS PUNTOS SI SON IGUALES A 3 LA IP ES VALIDA Y LA RESPUESTA DEL MODEN FUE CONFIABLE Y ADECUADA NO SE VERIFICO SI LOS NUMEROS SEPARADOS POR PUNTOS SON MENORES O IGUALES A 255 EL PROGRAMA SE PRUEBA ATRAVES DEL PUERTO SERIE DE LA FRDMKL25Z Y SE ENVIA DESDE UNA TERMINAL SERIE (TERMITE UNA DIR IP, EJEMPLO 255.12.3.100)

Dependencies:   mbed

main.cpp

Committer:
tony63
Date:
2019-04-02
Revision:
0:90b0b75a5d08

File content as of revision 0:90b0b75a5d08:

/*
ESTE CORTO PROGRAMA DETECTA SI UNA CADENA ENTRANTE EN UNA NEGOCIACION GPRS
LA RESPUESTA DEL COMANDO  AT+CIFSR DEVUELVE UNA DIRECCION IP VALIDA
EL PROGRAMA CUENTA LOS PUNTOS SI SON IGUALES A 3 LA IP ES VALIDA
Y LA RESPUESTA DEL MODEN FUE CONFIABLE Y ADECUADA
NO SE VERIFICO SI LOS NUMEROS SEPARADOS POR PUNTOS SON MENORES O IGUALES A 255

EL PROGRAMA SE PRUEBA ATRAVES DEL PUERTO SERIE DE LA FRDMKL25Z
Y SE ENVIA DESDE UNA TERMINAL SERIE (TERMITE UNA DIR IP, EJEMPLO 255.12.3.100) 
*/
#include "mbed.h"
#include "stdio.h"
#include "string.h"

int i,ret;
Timer t;
char gprsBuffer[20];
char buffer[20];
char resp[20];
int result;
int z=0;

Serial pc(USBTX,USBRX);//Configura puerto USB a la consola serial del PC conectado.
//-----------------------------------------------------------------------------------------------------------------------------
// Esta funcion de abajo lee todo un bufer hasta encontrar CR o LF y el resto lo rellena de
// $, count es lo que va a leer. Lo leido lo mete en buffer que es una cadena previamente definida
// incorpora medida de tiempo si se demora mas de tres segundos retorna fracaso con -1
int readBuffer(char *buffer,int count){
    int i=0; 
    t.start();  // start timer
    while(1) {
        while (pc.readable()) {
            char c = pc.getc();
            if (c == '\r' || c == '\n') c = '$';
            buffer[i++] = c;
            if(i > count)break;
        }
        if(i > count)break;
        if(t.read() > 3) {
            t.stop();
            t.reset();
            break;
        }
    }
    wait(0.5);
    while(pc.readable()){  // display the other thing..
        char c = pc.getc();
    }
    return 0;
}
//--------------------------------------------------------------------------------------------------------------
// Esta función de abajo limpia o borra todo un "buffer" de tamaño "count",
// lo revisa elemento por elemento y le mete el caracter null que indica fin de cadena.
// No retorna nada.
void cleanBuffer(char *buffer, int count){
    for(int i=0; i < count; i++) {
        buffer[i] = '\0';
    }
}
//--------------------------------------------------------------------------------------------------------------

 
int main() {
    while(1){
       if (pc.readable()) {
           readBuffer(buffer,15);
           pc.printf("%s=\r\n",buffer);
           for(i=0;i<15;i++)
            {
            resp[i]=buffer[i];
            }  
           pc.printf("respuesta=%s\r\n",resp);
           //if(strcmp("255.255.255.255",resp) == 0){  
               
           cleanBuffer(buffer,20);
           for(i=0;i<15;i++){
                  if(resp[i]== '.'){
                      z++;
                   }
                   }
                   if(z==3){   
                   pc.printf("llego ip=%d\r\n",z);
                   }  
                wait(10);
                z=0;
                
         /*       //leer telefono
                for(i=0;i<10;i++){
                       tel[i]=resp[i+40];
                       }
                pc.printf("%s-\r\n",tel);        
                //leer tamaño
                   for(i=0;i<2;i++){
                       tam[i]=resp[i+68];
                   }
                   pc.printf("%s-\r\n",tam);        
                   //leer mensaje
                    for(i=0;i<14;i++){
                       msg[i]=resp[i+70];
                   }
                   pc.printf("%s-\r\n",msg);
        
                   cleanBuffer(gprsBuffer,25);
                   readBuffer(gprsBuffer,25);
                   result = gprsBuffer.split(".")
                   if(result==3){
       */
    
}
}
}