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

Revision:
0:90b0b75a5d08
diff -r 000000000000 -r 90b0b75a5d08 main.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Tue Apr 02 06:15:30 2019 +0000
@@ -0,0 +1,111 @@
+/*
+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){
+       */
+    
+}
+}
+}
\ No newline at end of file