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)
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){ */ } } }