![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
PRUEBA GSM
Fork of leerr_voltaje_GSM by
Revision 1:1eef577dc44b, committed 2017-11-28
- Comitter:
- PROCESADORES_2017_2
- Date:
- Tue Nov 28 21:18:02 2017 +0000
- Parent:
- 0:d7d64e8b652a
- Commit message:
- PRUEBA
Changed in this revision
main.cpp | Show annotated file Show diff for this revision Revisions of this file |
diff -r d7d64e8b652a -r 1eef577dc44b main.cpp --- a/main.cpp Sat Nov 21 16:58:55 2015 +0000 +++ b/main.cpp Tue Nov 28 21:18:02 2017 +0000 @@ -1,12 +1,12 @@ /*========================================================================================== -PROGRAMA PARA EL ENVÍO DE MEDICIONES ANALÓGICAS MEDIANTE RED GSM. -ING. JUAN PABLO VIANA VILLA +PROGRAMA PARA EL ENVÍO DE MEDICIONES ANALÓGICAS Y RECEPCION DE MENSAJES MEDIANTE RED GSM. UNIVERSIDAD NACIONAL DE COLOMBIA - SEDE MEDELLÍN DESCRIPCIÓN DEL FUNCIONAMIENTO: El programa comienza realizando la inicialización del modem GSM mediante el envío de comandos "AT", se configuraron 10 intentos de conexión, en caso de no recibir respuesta del modem el programa terminará y será necesario reiniciar la plataforma KL25z. Una vez detectada actividad por parte del modem el programa ingresa en un bucle infinito y se pone a la espera de recibir un mensaje de texto. El programa está constantemente tratando de leer el modem, una vez detecta el mensaje SMS entrante (+CMTI), envía al modem el comando AT para la lectura de la cadena recibida y se activa una variable bandera para el envío de la respuesta. + NOTA: La cadena entrante sólo es útil para encontrar el número remitente, no se programó restricción alguna sobre el mensaje (sirve cualquiera). Una vez leído el mensaje e identificado el remitente se sensa el valor de entrada analógica como valor de punto flotante. Se incluye una secuencia de líneas que convierten el valor medido en caracteres ASCII de la forma "Volt=x.xV" y estos a su vez son convertidos en octetos para proceder a su envío. La trama PDU generada se despliega en pantalla en el pc monitor y es enviada al modem GSM finalizando con el caracter ASCII submit (26 - 0x1A) para de esta manera finalizar la transmisión del valor. @@ -347,34 +347,34 @@ { pc.printf("****************************************************************************\r\n"); //Las siguientes líneas tienen como fin leer el voltaje y convertirlo en ASCII; -V_float=A.read()*3.3; -V_int=V_float*10; //Multiplico por 10 y almaceno en una variable tipo entero para tomar un decimal y eliminar el punto flotante; -TEMP=V_int/10; -DE[5]=TEMP+48; //Convierto el valor el caracter; -V_int = V_int-TEMP*10; +V_float=A.read()*3.3; +V_int=V_float*10; //Multiplico por 10 y almaceno en una variable tipo entero para tomar un decimal y eliminar el punto flotante; +TEMP=V_int/10; //Divido entre 10 y almacno en una variable tipo entero. +DE[5]=TEMP+48; //Convierto el valor en caracter y lo almaceno en D[5]; +V_int = V_int-TEMP*10; // DE[7]=V_int + 48;//Convierto el valor en caracter; //Las siguientes líneas tienen por objeto la conversión de una cadena de caracteres a octetos que puedan enviarse mediante PDU; - DE[0]=86;//V - DE[1]=111;//o - DE[2]=108;//l - DE[3]=116;//t - DE[4]=61;//= - //D[5]=; - DE[6]=46;//. - //D[7]=;//. - DE[8]=86;//V + DE[0]=86; //cadena de caracteres que corresponde a V + DE[1]=111; //cadena de caracteres que corresponde a o + DE[2]=108; //cadena de caracteres que corresponde a l + DE[3]=116; //cadena de caracteres que corresponde a t + DE[4]=61; //cadena de caracteres que corresponde a = + //D[5]=; //Imprime el valor entero del voltaje leido,es decir si se lee : 3.5, imprime el 3 + DE[6]=46; //. Punto decimal o flotante + //D[7]=; //Imprime el valor decimal del voltaje leido, es decir si se lee : 3.5, imprime el 5 + DE[8]=86; //cadena de caracteres que corresponde a V pc.printf("\r\nVoltaje: %s\r\n", DE); - LENIN=strlen(DE); //Se mide el tamaño de la cadena; + LENIN=strlen(DE); //Se mide el tamaño de la cadena; for(i=0;i<LENIN;i++) {DE[i]=DE[i]&0x000000FF;} //Convierto en formato 0x00; for (i=0;i < LENIN;i++) { - DS[i]=(DE[i]>>i|DE[i+1]<<(7-i)); + DS[i]=(DE[i]>>i|DE[i+1]<<(7-i)); //Convierto octetos a septetos LENOUT=i+1; if(DS[i]==0){DS[i]='\0';break;} } @@ -414,7 +414,7 @@ pc.printf("%s\r\n",resp); if(strcmp("$$+CM",resp) == 0){ //COMPARA resp con "+CMTI" - pc.printf("****************************************************************************\r\n"); + pc.printf("--------------------------------------------------------\r\n"); pc.printf("Nuevo Mensaje de texto. \r\n"); EnviarMensaje=1; cleanBuffer(buffer,10);