Programa para enviar mensaje GPS solicitando coordenadas, y mensaje PWM para parametrizar a distancia un PWM en klz25 utilizando modem GSM del celular siemens a56i y el satgem como simulador de GPS

Dependencies:   mbed

Committer:
jdlodonog
Date:
Wed Nov 30 03:02:42 2016 +0000
Revision:
0:2baec676c5bf
Envi? palabra  por mensaje de text0 GSM y retorna coordenadas de google maps, envi? de PWM y parametros de salida PWM en kl25z

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jdlodonog 0:2baec676c5bf 1 #include "mbed.h"
jdlodonog 0:2baec676c5bf 2 #include "string.h"
jdlodonog 0:2baec676c5bf 3 #include "math.h"
jdlodonog 0:2baec676c5bf 4 #include "GPS.h"
jdlodonog 0:2baec676c5bf 5 //---Configuraciones---
jdlodonog 0:2baec676c5bf 6 Timer t;
jdlodonog 0:2baec676c5bf 7 Serial pc(USBTX,USBRX); //Configura puerto UART de la
jdlodonog 0:2baec676c5bf 8 Serial GSM(PTE22, PTE23);//Configura la entrada serial del celular
jdlodonog 0:2baec676c5bf 9 DigitalOut ledr(PTE29);//Led indicador
jdlodonog 0:2baec676c5bf 10 DigitalOut myled(LED1);
jdlodonog 0:2baec676c5bf 11 DigitalIn chan(PTC3);//Pulsador para iniciar la configuración del celular
jdlodonog 0:2baec676c5bf 12 GPS gps(PTE0,PTE1);//configuración de los pines de comunicación con el GPS
jdlodonog 0:2baec676c5bf 13 PwmOut PWM(PTA12);// salida pwm
jdlodonog 0:2baec676c5bf 14 AnalogIn Vin(PTB2); // entrada para leer el pwm
jdlodonog 0:2baec676c5bf 15 //---Subrutinas---
jdlodonog 0:2baec676c5bf 16 int readBuffer(char *buffer,int count);//Subrutina para leer el buffer
jdlodonog 0:2baec676c5bf 17 void enviar(int LENIN1,char *DS,char *numero);//subrutina para enviar mensaje
jdlodonog 0:2baec676c5bf 18 void borrar_todo(void);//subrutina para reiniciar las variables
jdlodonog 0:2baec676c5bf 19 void config(void);//configuración del celular
jdlodonog 0:2baec676c5bf 20 //---Variables para paquetes---
jdlodonog 0:2baec676c5bf 21 char buffer[100],Bkupbuffer[100];//buffer's de almacenación de mensajes
jdlodonog 0:2baec676c5bf 22 char celular[10];
jdlodonog 0:2baec676c5bf 23 char ENCA[255]={"http://maps.google.com/maps?q="}, VOL[255]={"El voltaje promedio es: ="},Confirmacion[255]={"ESTOY EN LA PISCINA"};//para enviar las coordenadas en google;//para enviar las coordenadas en google
jdlodonog 0:2baec676c5bf 24 char DS[255];
jdlodonog 0:2baec676c5bf 25 int LENIN=0,LENIN1=0,LENOUT=0;//Tamaño de los datos de la función de conversión de entrada y salida
jdlodonog 0:2baec676c5bf 26 //---Variables para coordenadas---
jdlodonog 0:2baec676c5bf 27 char coorden[50]={NULL}, aux[50]={NULL};
jdlodonog 0:2baec676c5bf 28 int aa=1, num=0;
jdlodonog 0:2baec676c5bf 29 int longi_entera=0,lati_entera=0,longi_decimal=0,lati_decimal=0;
jdlodonog 0:2baec676c5bf 30 //---Variables como contadores---
jdlodonog 0:2baec676c5bf 31 int i=0,count=0,bandera=0,gh=0,negativo=0,K=0,C=0,p=0,j=0,z=0,ro=0,st=0,sol=0;
jdlodonog 0:2baec676c5bf 32 //*****************************************************************************************************************************************
jdlodonog 0:2baec676c5bf 33 //*****************************************************************************************************************************************
jdlodonog 0:2baec676c5bf 34 //es recomendable iniciar siempre oprimiendo el boton de configuración.
jdlodonog 0:2baec676c5bf 35 int main(void)
jdlodonog 0:2baec676c5bf 36 { // a.
jdlodonog 0:2baec676c5bf 37 inicio:
jdlodonog 0:2baec676c5bf 38 ledr=1;
jdlodonog 0:2baec676c5bf 39 borrar_todo();//Ejecuta la rutina que reinicia todas las variables del programaledr=1;
jdlodonog 0:2baec676c5bf 40 GSM.baud(9600);//configura los baudios de la comunicación en 9600
jdlodonog 0:2baec676c5bf 41 GSM.format(8,Serial::None,1); //configura el formato de los datos de la UART
jdlodonog 0:2baec676c5bf 42 wait(1);
jdlodonog 0:2baec676c5bf 43 pc.printf("conectado al pc \r\n ");//indicador de conexión
jdlodonog 0:2baec676c5bf 44 GSM.printf("AT+CMGD=1\r\n");//Borrar los mensajes del celular
jdlodonog 0:2baec676c5bf 45 while(1)
jdlodonog 0:2baec676c5bf 46 {//a.1
jdlodonog 0:2baec676c5bf 47 //________________________________________________________________________________________________________________________________________
jdlodonog 0:2baec676c5bf 48 if(aa==1)//si se preciona, se procede a cofigurar el celular con comandos AT
jdlodonog 0:2baec676c5bf 49 {//a.1.1 se cierra en linea 53
jdlodonog 0:2baec676c5bf 50 config();
jdlodonog 0:2baec676c5bf 51 aa=0;
jdlodonog 0:2baec676c5bf 52 myled=1;
jdlodonog 0:2baec676c5bf 53 }//ac.1.1 cierra linea 53,
jdlodonog 0:2baec676c5bf 54 //________________________________________________________________________________________________________________________________________
jdlodonog 0:2baec676c5bf 55 if (GSM.readable()) //esperar llegada de mensaje del celular
jdlodonog 0:2baec676c5bf 56 { // a.1.2 se cierra en linea 71
jdlodonog 0:2baec676c5bf 57 readBuffer(buffer,100);//guardar el mensaje en el buffer
jdlodonog 0:2baec676c5bf 58 i=0;
jdlodonog 0:2baec676c5bf 59 pc.printf(buffer);//imprimir el mensaje
jdlodonog 0:2baec676c5bf 60 if(buffer[14]=='1'||buffer[6]=='R'){bandera++;}
jdlodonog 0:2baec676c5bf 61 if(bandera==2)//compara si ya llegó el mensaje al celular y hay que borrarlo
jdlodonog 0:2baec676c5bf 62 {//a.1.2.1 se cierra en linea 62
jdlodonog 0:2baec676c5bf 63 for(gh=0;gh<=99;gh++)//guardamos el mensaje almacenado en el buffer en una variable auxiliar
jdlodonog 0:2baec676c5bf 64 { //a.1.2.1.1 se cieerra en lina 66
jdlodonog 0:2baec676c5bf 65 Bkupbuffer[gh]=buffer[gh];
jdlodonog 0:2baec676c5bf 66 }// ac1.2.1.1 cierra linea 64
jdlodonog 0:2baec676c5bf 67 pc.printf("\r\n%c\r\n %c\r\n %c\r\n %c\r\n",Bkupbuffer[68],Bkupbuffer[69],Bkupbuffer[70],Bkupbuffer[71]);
jdlodonog 0:2baec676c5bf 68 wait(0.5);
jdlodonog 0:2baec676c5bf 69 GSM.printf("AT+CMGD=1\r\n");//borrar mensaje recibido
jdlodonog 0:2baec676c5bf 70 bandera=0;
jdlodonog 0:2baec676c5bf 71 } // cierra linea 62
jdlodonog 0:2baec676c5bf 72 } // cierra lina 56
jdlodonog 0:2baec676c5bf 73 //________________________________________________________________________________________________________________________________________
jdlodonog 0:2baec676c5bf 74 if((buffer[10]=='S')&& (buffer[11]=='M'))//compara si el mensaje es un mensaje de texto que llegó al celular
jdlodonog 0:2baec676c5bf 75 { // se cierra en linea 83
jdlodonog 0:2baec676c5bf 76 pc.printf("\r\n Llego mensaje\r\n ");
jdlodonog 0:2baec676c5bf 77 buffer[10]=' ';//limpia los espacios del Buffer
jdlodonog 0:2baec676c5bf 78 buffer[11]=' ';
jdlodonog 0:2baec676c5bf 79 GSM.printf("AT+CMGR=%c\r\n",buffer[14]);//solicitar mesaje al celular
jdlodonog 0:2baec676c5bf 80 //pc.printf("AT+CMGR=%c\r\n",buffer[14]);
jdlodonog 0:2baec676c5bf 81 buffer[14]=' ';
jdlodonog 0:2baec676c5bf 82 i=0;
jdlodonog 0:2baec676c5bf 83 } // cierra linea 75
jdlodonog 0:2baec676c5bf 84 //________________________________________________________________________________________________________________________________________
jdlodonog 0:2baec676c5bf 85 if(Bkupbuffer[68]=='4'&& Bkupbuffer[69]=='7'&&Bkupbuffer[70]=='E'&& Bkupbuffer[71]=='8'&& Bkupbuffer[72]=='1'&& Bkupbuffer[73]=='4')//recibió ELE (Extincion Level Event)
jdlodonog 0:2baec676c5bf 86 {
jdlodonog 0:2baec676c5bf 87 buffer[68]=' ';
jdlodonog 0:2baec676c5bf 88 Bkupbuffer[68]=' ';
jdlodonog 0:2baec676c5bf 89 for(st=68;st<=73;st++)
jdlodonog 0:2baec676c5bf 90 {// se cierra en linea 92
jdlodonog 0:2baec676c5bf 91 Bkupbuffer[st]=' ';//limpia el espacio del buffer para evitar ingresar de nuevo, si no ha llegado otro mensaje con la contraseña
jdlodonog 0:2baec676c5bf 92 }// cierra linea 90
jdlodonog 0:2baec676c5bf 93 pc.printf(" comparacion de contrasena ok \r\n");
jdlodonog 0:2baec676c5bf 94 pc.printf("Adquiriendo coordenadas del GPS...\r\n");//Adquiriendo coordenadas del GPS...
jdlodonog 0:2baec676c5bf 95 if(gps.sample())//Si las coordenadas se obtienen correctamente:
jdlodonog 0:2baec676c5bf 96 {
jdlodonog 0:2baec676c5bf 97 pc.printf("coordenadas recibidas ");
jdlodonog 0:2baec676c5bf 98 for(ro=30;ro<=255;ro++)
jdlodonog 0:2baec676c5bf 99 { // se cierra en 101
jdlodonog 0:2baec676c5bf 100 ENCA[ro]='\0';
jdlodonog 0:2baec676c5bf 101 } // cierra 99
jdlodonog 0:2baec676c5bf 102 ro=0;
jdlodonog 0:2baec676c5bf 103
jdlodonog 0:2baec676c5bf 104 longi_entera=(int)gps.longitude;//Adquiere la parte entera de la longitud del GPS
jdlodonog 0:2baec676c5bf 105 pc.printf("d %f",longi_entera);
jdlodonog 0:2baec676c5bf 106 lati_entera=(int)gps.latitude;//Adquiere la parte entera de la latitud del GPS
jdlodonog 0:2baec676c5bf 107 longi_decimal=abs((gps.longitude-(int)gps.longitude)*1000000);//Adquiere el valor absoluto de la longitud del GPS
jdlodonog 0:2baec676c5bf 108 lati_decimal=abs((gps.latitude-(int)gps.latitude)*1000000);//Adquiere el valor absoluto de la longitud del GPS
jdlodonog 0:2baec676c5bf 109 pc.printf("http://maps.google.com/maps?q=%f,%f\r\n", gps.latitude,gps.longitude);//encabezado que será impreso en el terminal y luego en el mensaje
jdlodonog 0:2baec676c5bf 110 while(longi_decimal>0)
jdlodonog 0:2baec676c5bf 111 {//se cierra en 116
jdlodonog 0:2baec676c5bf 112 coorden[j]=(longi_decimal%10)+48;//se toma la parte decimal de la longitud y se pasa a ASCII y guarda en el vector coorden
jdlodonog 0:2baec676c5bf 113 longi_decimal=longi_decimal/10;//se divide por 10 para hacer mas iteracines en caso de que el número de elementos seamayor a uno
jdlodonog 0:2baec676c5bf 114 pc.printf("%c",coorden[j]);
jdlodonog 0:2baec676c5bf 115 j++;
jdlodonog 0:2baec676c5bf 116 }// cierra 111
jdlodonog 0:2baec676c5bf 117 coorden[j]='.';//Se adiciona el punto, para la parte decimal
jdlodonog 0:2baec676c5bf 118 pc.printf("%c",coorden[j]);//se muestra en el terminal la posición j de la longitud
jdlodonog 0:2baec676c5bf 119 j++;
jdlodonog 0:2baec676c5bf 120 if(longi_entera<0)//si la longitud es menor a cero se multiplica por -1
jdlodonog 0:2baec676c5bf 121 {// se cierra en 121
jdlodonog 0:2baec676c5bf 122 negativo=1;
jdlodonog 0:2baec676c5bf 123 longi_entera=longi_entera*-1;
jdlodonog 0:2baec676c5bf 124 }//cierra 121
jdlodonog 0:2baec676c5bf 125 while(longi_entera>0)
jdlodonog 0:2baec676c5bf 126 {// se cierra en 131
jdlodonog 0:2baec676c5bf 127 coorden[j]=(longi_entera%10)+48;//se toma la parte entera de la longitud y se pasa a ASCII y guarda en el vector coorden
jdlodonog 0:2baec676c5bf 128 longi_entera=longi_entera/10;
jdlodonog 0:2baec676c5bf 129 pc.printf("%c",coorden[j]);
jdlodonog 0:2baec676c5bf 130 j++;
jdlodonog 0:2baec676c5bf 131 }// cierra 126
jdlodonog 0:2baec676c5bf 132 if(negativo==1)//si negativo es 1 al vector de caracteres se le adiciona un '-'
jdlodonog 0:2baec676c5bf 133 {// se cierra en 137
jdlodonog 0:2baec676c5bf 134 coorden[j]='-';
jdlodonog 0:2baec676c5bf 135 pc.printf("%c",coorden[j]);
jdlodonog 0:2baec676c5bf 136 j++;
jdlodonog 0:2baec676c5bf 137 }// cierra 133
jdlodonog 0:2baec676c5bf 138 negativo=0;//reinicia la variable para hacer lo mismo con la longitud
jdlodonog 0:2baec676c5bf 139 coorden[j]=',';
jdlodonog 0:2baec676c5bf 140 pc.printf("%c",coorden[j]);
jdlodonog 0:2baec676c5bf 141 j++;
jdlodonog 0:2baec676c5bf 142 while(lati_decimal>0)
jdlodonog 0:2baec676c5bf 143 {// se cierra en 148
jdlodonog 0:2baec676c5bf 144 coorden[j]=(lati_decimal%10)+48;//se toma la parte decimal de la latitud y se pasa a ASCII y guarda en el vector coorden
jdlodonog 0:2baec676c5bf 145 lati_decimal=lati_decimal/10;
jdlodonog 0:2baec676c5bf 146 pc.printf("%c",coorden[j]);
jdlodonog 0:2baec676c5bf 147 j++;
jdlodonog 0:2baec676c5bf 148 }//cierra 143
jdlodonog 0:2baec676c5bf 149 coorden[j]='.';//adiciona el punto al vector para indicar la parte decimal
jdlodonog 0:2baec676c5bf 150 pc.printf("%c",coorden[j]);
jdlodonog 0:2baec676c5bf 151 j++;
jdlodonog 0:2baec676c5bf 152 if(lati_entera<0)
jdlodonog 0:2baec676c5bf 153 {// se cierrra en 156
jdlodonog 0:2baec676c5bf 154 negativo=1;
jdlodonog 0:2baec676c5bf 155 lati_entera=lati_entera*-1;
jdlodonog 0:2baec676c5bf 156 }// cierra
jdlodonog 0:2baec676c5bf 157 while(lati_entera>0)
jdlodonog 0:2baec676c5bf 158 {
jdlodonog 0:2baec676c5bf 159 coorden[j]=(lati_entera%10)+48;//se toma la parte entera de la longitud y se pasa a ASCII y guarda en el vector coorden
jdlodonog 0:2baec676c5bf 160 lati_entera=lati_entera/10;
jdlodonog 0:2baec676c5bf 161 pc.printf("%c",coorden[j]);
jdlodonog 0:2baec676c5bf 162 j++;
jdlodonog 0:2baec676c5bf 163 }
jdlodonog 0:2baec676c5bf 164 if(negativo==1)
jdlodonog 0:2baec676c5bf 165 {
jdlodonog 0:2baec676c5bf 166 coorden[j]='-';
jdlodonog 0:2baec676c5bf 167 pc.printf("%c",coorden[j]);
jdlodonog 0:2baec676c5bf 168 j++;
jdlodonog 0:2baec676c5bf 169 }
jdlodonog 0:2baec676c5bf 170 pc.printf("\r\n");
jdlodonog 0:2baec676c5bf 171 j--;
jdlodonog 0:2baec676c5bf 172 z=strlen(ENCA);//hace z = al tamaño de la variable ENCA
jdlodonog 0:2baec676c5bf 173 for(i=j;i>=0;i--)
jdlodonog 0:2baec676c5bf 174 {
jdlodonog 0:2baec676c5bf 175 ENCA[z]=coorden[i];//guarda las coordenadas en un vector auxiliar ENCA en orden
jdlodonog 0:2baec676c5bf 176 z++;
jdlodonog 0:2baec676c5bf 177 }
jdlodonog 0:2baec676c5bf 178 pc.printf(ENCA);
jdlodonog 0:2baec676c5bf 179 pc.printf("\r\n");
jdlodonog 0:2baec676c5bf 180 LENIN1=strlen(ENCA);//toma el tamaño del vector ENCA
jdlodonog 0:2baec676c5bf 181 for (i=0;i < LENIN1;i++)//algoritmo para pasar de septetos a octetos
jdlodonog 0:2baec676c5bf 182 {
jdlodonog 0:2baec676c5bf 183 DS[i]=ENCA[i+C]>>K | ENCA[i+C+1]<<(7-K);
jdlodonog 0:2baec676c5bf 184 if (DS[i]==0x00) {LENOUT=i; goto salir;}//cuando
jdlodonog 0:2baec676c5bf 185 K++;
jdlodonog 0:2baec676c5bf 186 if (K==7) {K=0;C++;} // se chequea que ya se acabaron los bits en un ciclo de conversion.
jdlodonog 0:2baec676c5bf 187 }
jdlodonog 0:2baec676c5bf 188 //--------------------------------------------------------------
jdlodonog 0:2baec676c5bf 189 salir: for(i=38;i<48;i++)//Se extrae el número del celular
jdlodonog 0:2baec676c5bf 190 {
jdlodonog 0:2baec676c5bf 191 celular[i-38]=Bkupbuffer[i];//toma el número del celular trocado en las posiciones del 38 al 48 almacenadas en el buffer
jdlodonog 0:2baec676c5bf 192 }//de respaldo
jdlodonog 0:2baec676c5bf 193 wait(0.5);
jdlodonog 0:2baec676c5bf 194 enviar(LENIN1,DS,celular);//Ejecuta la rutina de envío de mensaje, con el tamaño del mensaje, las coordenadas en septetos y el número del celular
jdlodonog 0:2baec676c5bf 195 wait(14);
jdlodonog 0:2baec676c5bf 196 goto inicio;
jdlodonog 0:2baec676c5bf 197 }//if GPS
jdlodonog 0:2baec676c5bf 198 else
jdlodonog 0:2baec676c5bf 199 { pc.printf(" CONTRASENA INVALIDA \r\n");
jdlodonog 0:2baec676c5bf 200 for(i=38;i<48;i++)//Se extrae el número del celular
jdlodonog 0:2baec676c5bf 201 {
jdlodonog 0:2baec676c5bf 202 celular[i-38]=Bkupbuffer[i];//toma el número del celular trocado en las posiciones del 38 al 48 almacenadas en el buffer
jdlodonog 0:2baec676c5bf 203 }//de respaldo
jdlodonog 0:2baec676c5bf 204 wait(0.5);
jdlodonog 0:2baec676c5bf 205 GSM.printf("at+cmgs=%d\r\n",37);//inicio de envío de mensaje
jdlodonog 0:2baec676c5bf 206 pc.printf("enviando mensaje\r\n");
jdlodonog 0:2baec676c5bf 207 pc.printf("at+cmgs=%d\r\n",37);
jdlodonog 0:2baec676c5bf 208 wait(0.5);
jdlodonog 0:2baec676c5bf 209 GSM.printf("0011000A91");
jdlodonog 0:2baec676c5bf 210 pc.printf("0011000A91");
jdlodonog 0:2baec676c5bf 211 for(p=0;p<10;p++)
jdlodonog 0:2baec676c5bf 212 {
jdlodonog 0:2baec676c5bf 213 GSM.printf("%c",celular[p]);
jdlodonog 0:2baec676c5bf 214 pc.printf("%c",celular[p]);
jdlodonog 0:2baec676c5bf 215 }
jdlodonog 0:2baec676c5bf 216 GSM.printf("0000AA1B45B9FC2D6781D26E7AD94D2F83DAE139881E9693CB2E970B");//Relleno + Número de octetos + mensaje
jdlodonog 0:2baec676c5bf 217 pc.printf("0000AA1B45B9FC2D6781D26E7AD94D2F83DAE139881E9693CB2E970B");//Error, intente mas tarde...
jdlodonog 0:2baec676c5bf 218 wait(0.5);
jdlodonog 0:2baec676c5bf 219 GSM.putc(0x1A);//fin de envío de mensaje
jdlodonog 0:2baec676c5bf 220 for(ro=0;ro<=100;ro++)//borrar el buffer y el respaldo para habilitar una nueva recepción
jdlodonog 0:2baec676c5bf 221 {
jdlodonog 0:2baec676c5bf 222 buffer[ro]='\0';
jdlodonog 0:2baec676c5bf 223 Bkupbuffer[ro]='\0';
jdlodonog 0:2baec676c5bf 224 }
jdlodonog 0:2baec676c5bf 225 ro=0;
jdlodonog 0:2baec676c5bf 226 wait(0.5);
jdlodonog 0:2baec676c5bf 227 }
jdlodonog 0:2baec676c5bf 228 }
jdlodonog 0:2baec676c5bf 229 // LECTURA DE LA PALABRA DE PWM seguida del duty cicle en % ejemplo PWM43 esto configura la salida del pwm en un 43%
jdlodonog 0:2baec676c5bf 230 //Compara los caracteres que llegaron en la trama para identificar en que parte viene codificada y cuales son los cambios que se dieron en la trama pdu utilizando el progrma de clase para conversion de palabras a ascci
jdlodonog 0:2baec676c5bf 231 if(Bkupbuffer[68]=='D'&& Bkupbuffer[69]=='0'&&Bkupbuffer[70]=='6'&& Bkupbuffer[71]=='B')//recibió PWM y verifica los siguientes dos lugares para parametrizar el pwm
jdlodonog 0:2baec676c5bf 232 {
jdlodonog 0:2baec676c5bf 233 pc.printf("Comprobacion de palabra clave para el pwm ok \n\r");
jdlodonog 0:2baec676c5bf 234 if (Bkupbuffer[72]=='1' && Bkupbuffer[73]=='3' ) // Verifica si el duty cicle del pwm esta entre 0-9,
jdlodonog 0:2baec676c5bf 235 {
jdlodonog 0:2baec676c5bf 236 // //////////aux[1]==0; // acomoda el dato para configurar el pwm
jdlodonog 0:2baec676c5bf 237 Bkupbuffer[74]=Bkupbuffer[74];
jdlodonog 0:2baec676c5bf 238 PWM.period(0.010); // set PWM period to 10 ms
jdlodonog 0:2baec676c5bf 239 if ( Bkupbuffer[74]=='0')
jdlodonog 0:2baec676c5bf 240 {
jdlodonog 0:2baec676c5bf 241 PWM=0.0;
jdlodonog 0:2baec676c5bf 242 }
jdlodonog 0:2baec676c5bf 243 if (Bkupbuffer[74]=='1')
jdlodonog 0:2baec676c5bf 244 {
jdlodonog 0:2baec676c5bf 245 PWM=0.01;
jdlodonog 0:2baec676c5bf 246 }
jdlodonog 0:2baec676c5bf 247 if (Bkupbuffer[74]=='2')
jdlodonog 0:2baec676c5bf 248 {
jdlodonog 0:2baec676c5bf 249 PWM=0.02;
jdlodonog 0:2baec676c5bf 250 }
jdlodonog 0:2baec676c5bf 251 if (Bkupbuffer[74]=='3')
jdlodonog 0:2baec676c5bf 252 {
jdlodonog 0:2baec676c5bf 253 PWM=0.03;
jdlodonog 0:2baec676c5bf 254 }
jdlodonog 0:2baec676c5bf 255 if (Bkupbuffer[74]=='4')
jdlodonog 0:2baec676c5bf 256 {
jdlodonog 0:2baec676c5bf 257 PWM=0.04;
jdlodonog 0:2baec676c5bf 258 }
jdlodonog 0:2baec676c5bf 259 if (Bkupbuffer[74]=='5')
jdlodonog 0:2baec676c5bf 260 {
jdlodonog 0:2baec676c5bf 261 PWM=0.05;
jdlodonog 0:2baec676c5bf 262 }
jdlodonog 0:2baec676c5bf 263 if (Bkupbuffer[74]=='6')
jdlodonog 0:2baec676c5bf 264 {
jdlodonog 0:2baec676c5bf 265 PWM=0.06;
jdlodonog 0:2baec676c5bf 266 }
jdlodonog 0:2baec676c5bf 267 if (Bkupbuffer[74]=='7')
jdlodonog 0:2baec676c5bf 268 {
jdlodonog 0:2baec676c5bf 269 PWM=0.07;
jdlodonog 0:2baec676c5bf 270 }
jdlodonog 0:2baec676c5bf 271 if (Bkupbuffer[74]=='8')
jdlodonog 0:2baec676c5bf 272 {
jdlodonog 0:2baec676c5bf 273 PWM=0.08;
jdlodonog 0:2baec676c5bf 274 }
jdlodonog 0:2baec676c5bf 275 if (Bkupbuffer[74]=='9')
jdlodonog 0:2baec676c5bf 276 {
jdlodonog 0:2baec676c5bf 277 PWM=0.09;
jdlodonog 0:2baec676c5bf 278 }
jdlodonog 0:2baec676c5bf 279 pc.printf("Voltaje leido del duty cycle = \n\r");
jdlodonog 0:2baec676c5bf 280 pc.printf(" \n \r",Vin.read());//imprime el valor del voltaje leido en la entrada analogica
jdlodonog 0:2baec676c5bf 281 }
jdlodonog 0:2baec676c5bf 282
jdlodonog 0:2baec676c5bf 283
jdlodonog 0:2baec676c5bf 284 if (Bkupbuffer[72]=='3' && Bkupbuffer[73]=='3' ) // verifica si esta entre 10-19
jdlodonog 0:2baec676c5bf 285 {
jdlodonog 0:2baec676c5bf 286 ////////aux[1]=1; // acomoda el dato para configurar el pwm
jdlodonog 0:2baec676c5bf 287 Bkupbuffer[74]=Bkupbuffer[74];
jdlodonog 0:2baec676c5bf 288 PWM.period(0.010); // set PWM period to 10 ms
jdlodonog 0:2baec676c5bf 289 if ( Bkupbuffer[74]=='0')
jdlodonog 0:2baec676c5bf 290 {
jdlodonog 0:2baec676c5bf 291 PWM=0.0;
jdlodonog 0:2baec676c5bf 292 }
jdlodonog 0:2baec676c5bf 293 if (Bkupbuffer[74]=='1')
jdlodonog 0:2baec676c5bf 294 {
jdlodonog 0:2baec676c5bf 295 PWM=0.11;
jdlodonog 0:2baec676c5bf 296 }
jdlodonog 0:2baec676c5bf 297 if (Bkupbuffer[74]=='2')
jdlodonog 0:2baec676c5bf 298 { PWM=0.12;}
jdlodonog 0:2baec676c5bf 299 if (Bkupbuffer[74]=='3')
jdlodonog 0:2baec676c5bf 300 {
jdlodonog 0:2baec676c5bf 301 PWM=0.13;
jdlodonog 0:2baec676c5bf 302 }
jdlodonog 0:2baec676c5bf 303 if (Bkupbuffer[74]=='4')
jdlodonog 0:2baec676c5bf 304 {
jdlodonog 0:2baec676c5bf 305 PWM=0.14;
jdlodonog 0:2baec676c5bf 306 }
jdlodonog 0:2baec676c5bf 307 if (Bkupbuffer[74]=='5')
jdlodonog 0:2baec676c5bf 308 {
jdlodonog 0:2baec676c5bf 309 PWM=0.15;
jdlodonog 0:2baec676c5bf 310 }
jdlodonog 0:2baec676c5bf 311 if (Bkupbuffer[74]=='6')
jdlodonog 0:2baec676c5bf 312 {
jdlodonog 0:2baec676c5bf 313 PWM=0.16;
jdlodonog 0:2baec676c5bf 314 }
jdlodonog 0:2baec676c5bf 315 if (Bkupbuffer[74]=='7')
jdlodonog 0:2baec676c5bf 316 {
jdlodonog 0:2baec676c5bf 317 PWM=0.17;
jdlodonog 0:2baec676c5bf 318 }
jdlodonog 0:2baec676c5bf 319 if (Bkupbuffer[74]=='8')
jdlodonog 0:2baec676c5bf 320 {
jdlodonog 0:2baec676c5bf 321 PWM=0.18;
jdlodonog 0:2baec676c5bf 322 }
jdlodonog 0:2baec676c5bf 323 if (Bkupbuffer[74]=='9')
jdlodonog 0:2baec676c5bf 324 {
jdlodonog 0:2baec676c5bf 325 PWM=0.19;
jdlodonog 0:2baec676c5bf 326 }
jdlodonog 0:2baec676c5bf 327 pc.printf("Voltaje leido del duty cycle = \n\r");
jdlodonog 0:2baec676c5bf 328 pc.printf(" \n \r",Vin.read());//imprime el valor del voltaje leido en la entrada analogica
jdlodonog 0:2baec676c5bf 329
jdlodonog 0:2baec676c5bf 330 }
jdlodonog 0:2baec676c5bf 331
jdlodonog 0:2baec676c5bf 332 if (Bkupbuffer[72]=='5' && Bkupbuffer[73]=='3' ) // verifica si esta entre 20-19
jdlodonog 0:2baec676c5bf 333 {
jdlodonog 0:2baec676c5bf 334 ////////aux[1]='2'; // acomoda el dato para configurar el pwm
jdlodonog 0:2baec676c5bf 335 Bkupbuffer[74]=Bkupbuffer[74];
jdlodonog 0:2baec676c5bf 336 PWM.period(0.010); // set PWM period to 10 ms
jdlodonog 0:2baec676c5bf 337 if ( Bkupbuffer[74]=='0')
jdlodonog 0:2baec676c5bf 338 { PWM=0.20;}
jdlodonog 0:2baec676c5bf 339 if (Bkupbuffer[74]=='1')
jdlodonog 0:2baec676c5bf 340 { PWM=0.21;}
jdlodonog 0:2baec676c5bf 341 if (Bkupbuffer[74]=='2')
jdlodonog 0:2baec676c5bf 342 { PWM=0.22;}
jdlodonog 0:2baec676c5bf 343 if (Bkupbuffer[74]=='3')
jdlodonog 0:2baec676c5bf 344 { PWM=0.23;}
jdlodonog 0:2baec676c5bf 345 if (Bkupbuffer[74]=='4')
jdlodonog 0:2baec676c5bf 346 { PWM=0.24;}
jdlodonog 0:2baec676c5bf 347 if (Bkupbuffer[74]=='5')
jdlodonog 0:2baec676c5bf 348 { PWM=0.25;}
jdlodonog 0:2baec676c5bf 349 if (Bkupbuffer[74]=='6')
jdlodonog 0:2baec676c5bf 350 { PWM=0.26;}
jdlodonog 0:2baec676c5bf 351 if (Bkupbuffer[74]=='7')
jdlodonog 0:2baec676c5bf 352 {PWM=0.27;}
jdlodonog 0:2baec676c5bf 353 if (Bkupbuffer[74]=='8')
jdlodonog 0:2baec676c5bf 354 { PWM=0.28;}
jdlodonog 0:2baec676c5bf 355 if (Bkupbuffer[74]=='9')
jdlodonog 0:2baec676c5bf 356 {
jdlodonog 0:2baec676c5bf 357 PWM=0.29;
jdlodonog 0:2baec676c5bf 358 }
jdlodonog 0:2baec676c5bf 359 pc.printf("Voltaje leido del duty cycle = \n\r");
jdlodonog 0:2baec676c5bf 360 pc.printf(" \n \r",Vin.read());//imprime el valor del voltaje leido en la entrada analogica
jdlodonog 0:2baec676c5bf 361
jdlodonog 0:2baec676c5bf 362 }
jdlodonog 0:2baec676c5bf 363 if (Bkupbuffer[72]=='7' && Bkupbuffer[73]=='3' ) // verifica si esta entre 30-39
jdlodonog 0:2baec676c5bf 364 {
jdlodonog 0:2baec676c5bf 365 ////////////////////aux[1]=3; // acomoda el dato para configurar el pwm
jdlodonog 0:2baec676c5bf 366 Bkupbuffer[74]=Bkupbuffer[74];
jdlodonog 0:2baec676c5bf 367 PWM.period(0.010); // set PWM period to 10 ms
jdlodonog 0:2baec676c5bf 368 if ( Bkupbuffer[74]=='0')
jdlodonog 0:2baec676c5bf 369 { PWM=0.30;}
jdlodonog 0:2baec676c5bf 370 if (Bkupbuffer[74]=='1')
jdlodonog 0:2baec676c5bf 371 { PWM=0.31;}
jdlodonog 0:2baec676c5bf 372 if (Bkupbuffer[74]=='2')
jdlodonog 0:2baec676c5bf 373 { PWM=0.32;}
jdlodonog 0:2baec676c5bf 374 if (Bkupbuffer[74]=='3')
jdlodonog 0:2baec676c5bf 375 { PWM=0.33;}
jdlodonog 0:2baec676c5bf 376 if (Bkupbuffer[74]=='4')
jdlodonog 0:2baec676c5bf 377 { PWM=0.34;}
jdlodonog 0:2baec676c5bf 378 if (Bkupbuffer[74]=='5')
jdlodonog 0:2baec676c5bf 379 { PWM=0.35;
jdlodonog 0:2baec676c5bf 380 pc.printf("duty cycle = 35% \n\r");
jdlodonog 0:2baec676c5bf 381 }
jdlodonog 0:2baec676c5bf 382 if (Bkupbuffer[74]=='6')
jdlodonog 0:2baec676c5bf 383 { PWM=0.36;}
jdlodonog 0:2baec676c5bf 384 if (Bkupbuffer[74]=='7')
jdlodonog 0:2baec676c5bf 385 {PWM=0.37;}
jdlodonog 0:2baec676c5bf 386 if (Bkupbuffer[74]=='8')
jdlodonog 0:2baec676c5bf 387 { PWM=0.38;}
jdlodonog 0:2baec676c5bf 388 if (Bkupbuffer[74]=='9')
jdlodonog 0:2baec676c5bf 389 {
jdlodonog 0:2baec676c5bf 390 PWM=0.39;
jdlodonog 0:2baec676c5bf 391 }
jdlodonog 0:2baec676c5bf 392 pc.printf("Voltaje leido del duty cycle = \n\r");
jdlodonog 0:2baec676c5bf 393 pc.printf(" \n \r",Vin.read());//imprime el valor del voltaje leido en la entrada analogica
jdlodonog 0:2baec676c5bf 394
jdlodonog 0:2baec676c5bf 395 }
jdlodonog 0:2baec676c5bf 396 if (Bkupbuffer[72]=='9' && Bkupbuffer[73]=='3' ) // verifica si esta entre 40-19
jdlodonog 0:2baec676c5bf 397 {
jdlodonog 0:2baec676c5bf 398 ////////aux[1]=4; // acomoda el dato para configurar el pwm
jdlodonog 0:2baec676c5bf 399 Bkupbuffer[74]=Bkupbuffer[74];
jdlodonog 0:2baec676c5bf 400 PWM.period(0.010); // set PWM period to 10 ms
jdlodonog 0:2baec676c5bf 401 if ( Bkupbuffer[74]=='0')
jdlodonog 0:2baec676c5bf 402 { PWM=0.40;}
jdlodonog 0:2baec676c5bf 403 if (Bkupbuffer[74]=='1')
jdlodonog 0:2baec676c5bf 404 { PWM=0.41;}
jdlodonog 0:2baec676c5bf 405 if (Bkupbuffer[74]=='2')
jdlodonog 0:2baec676c5bf 406 { PWM=0.42;}
jdlodonog 0:2baec676c5bf 407 if (Bkupbuffer[74]=='3')
jdlodonog 0:2baec676c5bf 408 { PWM=0.43;}
jdlodonog 0:2baec676c5bf 409 if (Bkupbuffer[74]=='4')
jdlodonog 0:2baec676c5bf 410 { PWM=0.44;}
jdlodonog 0:2baec676c5bf 411 if (Bkupbuffer[74]=='5')
jdlodonog 0:2baec676c5bf 412 { PWM=0.45;}
jdlodonog 0:2baec676c5bf 413 if (Bkupbuffer[74]=='6')
jdlodonog 0:2baec676c5bf 414 { PWM=0.46;}
jdlodonog 0:2baec676c5bf 415 if (Bkupbuffer[74]=='7')
jdlodonog 0:2baec676c5bf 416 {PWM=0.47;}
jdlodonog 0:2baec676c5bf 417 if (Bkupbuffer[74]=='8')
jdlodonog 0:2baec676c5bf 418 { PWM=0.48;}
jdlodonog 0:2baec676c5bf 419 if (Bkupbuffer[74]=='9')
jdlodonog 0:2baec676c5bf 420 {
jdlodonog 0:2baec676c5bf 421 PWM=0.49;
jdlodonog 0:2baec676c5bf 422 }
jdlodonog 0:2baec676c5bf 423 pc.printf("Voltaje leido del duty cycle = \n\r");
jdlodonog 0:2baec676c5bf 424 pc.printf(" \n \r",Vin.read());//imprime el valor del voltaje leido en la entrada analogica
jdlodonog 0:2baec676c5bf 425
jdlodonog 0:2baec676c5bf 426 }
jdlodonog 0:2baec676c5bf 427 if (Bkupbuffer[72]=='B' && Bkupbuffer[73]=='3' ) // verifica si esta entre 50-19
jdlodonog 0:2baec676c5bf 428 {
jdlodonog 0:2baec676c5bf 429 ////////aux[1]=5; // acomoda el dato para configurar el pwm
jdlodonog 0:2baec676c5bf 430 Bkupbuffer[74]=Bkupbuffer[74];
jdlodonog 0:2baec676c5bf 431 PWM.period(0.010); // set PWM period to 10 ms
jdlodonog 0:2baec676c5bf 432 if ( Bkupbuffer[74]=='0')
jdlodonog 0:2baec676c5bf 433 { PWM=0.50;}
jdlodonog 0:2baec676c5bf 434 if (Bkupbuffer[74]=='1')
jdlodonog 0:2baec676c5bf 435 { PWM=0.51;}
jdlodonog 0:2baec676c5bf 436 if (Bkupbuffer[74]=='2')
jdlodonog 0:2baec676c5bf 437 { PWM=0.52;}
jdlodonog 0:2baec676c5bf 438 if (Bkupbuffer[74]=='3')
jdlodonog 0:2baec676c5bf 439 { PWM=0.53;}
jdlodonog 0:2baec676c5bf 440 if (Bkupbuffer[74]=='4')
jdlodonog 0:2baec676c5bf 441 { PWM=0.54;}
jdlodonog 0:2baec676c5bf 442 if (Bkupbuffer[74]=='5')
jdlodonog 0:2baec676c5bf 443 { PWM=0.55;}
jdlodonog 0:2baec676c5bf 444 if (Bkupbuffer[74]=='6')
jdlodonog 0:2baec676c5bf 445 { PWM=0.56;}
jdlodonog 0:2baec676c5bf 446 if (Bkupbuffer[74]=='7')
jdlodonog 0:2baec676c5bf 447 {PWM=0.57;}
jdlodonog 0:2baec676c5bf 448 if (Bkupbuffer[74]=='8')
jdlodonog 0:2baec676c5bf 449 { PWM=0.58;}
jdlodonog 0:2baec676c5bf 450 if (Bkupbuffer[74]=='9')
jdlodonog 0:2baec676c5bf 451 {
jdlodonog 0:2baec676c5bf 452 PWM=0.59;
jdlodonog 0:2baec676c5bf 453 }
jdlodonog 0:2baec676c5bf 454 pc.printf("Voltaje leido del duty cycle = \n\r");
jdlodonog 0:2baec676c5bf 455 pc.printf(" \n \r",Vin.read());//imprime el valor del voltaje leido en la entrada analogica
jdlodonog 0:2baec676c5bf 456
jdlodonog 0:2baec676c5bf 457 }
jdlodonog 0:2baec676c5bf 458
jdlodonog 0:2baec676c5bf 459 if (Bkupbuffer[72]=='D' && Bkupbuffer[73]=='3' ) // verifica si esta entre 60-19
jdlodonog 0:2baec676c5bf 460 {
jdlodonog 0:2baec676c5bf 461 ////////aux[1]=6; // acomoda el dato para configurar el pwm
jdlodonog 0:2baec676c5bf 462 Bkupbuffer[74]=Bkupbuffer[74];
jdlodonog 0:2baec676c5bf 463 PWM.period(0.010); // set PWM period to 10 ms
jdlodonog 0:2baec676c5bf 464 if ( Bkupbuffer[74]=='0')
jdlodonog 0:2baec676c5bf 465 { PWM=0.60;}
jdlodonog 0:2baec676c5bf 466 if (Bkupbuffer[74]=='1')
jdlodonog 0:2baec676c5bf 467 { PWM=0.61;}
jdlodonog 0:2baec676c5bf 468 if (Bkupbuffer[74]=='2')
jdlodonog 0:2baec676c5bf 469 { PWM=0.62;}
jdlodonog 0:2baec676c5bf 470 if (Bkupbuffer[74]=='3')
jdlodonog 0:2baec676c5bf 471 { PWM=0.63;}
jdlodonog 0:2baec676c5bf 472 if (Bkupbuffer[74]=='4')
jdlodonog 0:2baec676c5bf 473 { PWM=0.64;}
jdlodonog 0:2baec676c5bf 474 if (Bkupbuffer[74]=='5')
jdlodonog 0:2baec676c5bf 475 { PWM=0.65;}
jdlodonog 0:2baec676c5bf 476 if (Bkupbuffer[74]=='6')
jdlodonog 0:2baec676c5bf 477 { PWM=0.66;}
jdlodonog 0:2baec676c5bf 478 if (Bkupbuffer[74]=='7')
jdlodonog 0:2baec676c5bf 479 {PWM=0.67;}
jdlodonog 0:2baec676c5bf 480 if (Bkupbuffer[74]=='8')
jdlodonog 0:2baec676c5bf 481 { PWM=0.68;}
jdlodonog 0:2baec676c5bf 482 if (Bkupbuffer[74]=='9')
jdlodonog 0:2baec676c5bf 483 {
jdlodonog 0:2baec676c5bf 484 PWM=0.69;
jdlodonog 0:2baec676c5bf 485 }
jdlodonog 0:2baec676c5bf 486 pc.printf("Voltaje leido del duty cycle = \n\r");
jdlodonog 0:2baec676c5bf 487 pc.printf(" \n \r",Vin.read());//imprime el valor del voltaje leido en la entrada analogica
jdlodonog 0:2baec676c5bf 488
jdlodonog 0:2baec676c5bf 489 }
jdlodonog 0:2baec676c5bf 490 if (Bkupbuffer[72]=='F' && Bkupbuffer[73]=='3' ) // verifica si esta entre 70-19
jdlodonog 0:2baec676c5bf 491 {
jdlodonog 0:2baec676c5bf 492 ////////aux[1]=7; // acomoda el dato para configurar el pwm
jdlodonog 0:2baec676c5bf 493 Bkupbuffer[74]=Bkupbuffer[74];
jdlodonog 0:2baec676c5bf 494 PWM.period(0.010); // set PWM period to 10 ms
jdlodonog 0:2baec676c5bf 495 if ( Bkupbuffer[74]=='0')
jdlodonog 0:2baec676c5bf 496 { PWM=0.70;}
jdlodonog 0:2baec676c5bf 497 if (Bkupbuffer[74]=='1')
jdlodonog 0:2baec676c5bf 498 { PWM=0.71;}
jdlodonog 0:2baec676c5bf 499 if (Bkupbuffer[74]=='2')
jdlodonog 0:2baec676c5bf 500 { PWM=0.72;}
jdlodonog 0:2baec676c5bf 501 if (Bkupbuffer[74]=='3')
jdlodonog 0:2baec676c5bf 502 { PWM=0.73;}
jdlodonog 0:2baec676c5bf 503 if (Bkupbuffer[74]=='4')
jdlodonog 0:2baec676c5bf 504 { PWM=0.74;}
jdlodonog 0:2baec676c5bf 505 if (Bkupbuffer[74]=='5')
jdlodonog 0:2baec676c5bf 506 { PWM=0.75;}
jdlodonog 0:2baec676c5bf 507 if (Bkupbuffer[74]=='6')
jdlodonog 0:2baec676c5bf 508 { PWM=0.76;}
jdlodonog 0:2baec676c5bf 509 if (Bkupbuffer[74]=='7')
jdlodonog 0:2baec676c5bf 510 {PWM=0.77;}
jdlodonog 0:2baec676c5bf 511 if (Bkupbuffer[74]=='8')
jdlodonog 0:2baec676c5bf 512 { PWM=0.78;}
jdlodonog 0:2baec676c5bf 513 if (Bkupbuffer[74]=='9')
jdlodonog 0:2baec676c5bf 514 { PWM=0.79;}
jdlodonog 0:2baec676c5bf 515 pc.printf("Voltaje leido del duty cycle = \n\r");
jdlodonog 0:2baec676c5bf 516 pc.printf(" \n \r",Vin.read());//imprime el valor del voltaje leido en la entrada analogica
jdlodonog 0:2baec676c5bf 517
jdlodonog 0:2baec676c5bf 518 }
jdlodonog 0:2baec676c5bf 519 if (Bkupbuffer[72]=='1' && Bkupbuffer[73]=='3' && Bkupbuffer[75]=='7' ) // En este la trama pdu cambia a verificacion de 3 de los datos
jdlodonog 0:2baec676c5bf 520 {
jdlodonog 0:2baec676c5bf 521 ////////aux[1]=8; // acomoda el dato para configurar el pwm
jdlodonog 0:2baec676c5bf 522 Bkupbuffer[74]=Bkupbuffer[74];
jdlodonog 0:2baec676c5bf 523 PWM.period(0.010); // set PWM period to 10 ms
jdlodonog 0:2baec676c5bf 524 if ( Bkupbuffer[74]=='0')
jdlodonog 0:2baec676c5bf 525 { PWM=0.80;}
jdlodonog 0:2baec676c5bf 526 if (Bkupbuffer[74]=='1')
jdlodonog 0:2baec676c5bf 527 { PWM=0.81;}
jdlodonog 0:2baec676c5bf 528 if (Bkupbuffer[74]=='2')
jdlodonog 0:2baec676c5bf 529 { PWM=0.82;}
jdlodonog 0:2baec676c5bf 530 if (Bkupbuffer[74]=='3')
jdlodonog 0:2baec676c5bf 531 { PWM=0.83;}
jdlodonog 0:2baec676c5bf 532 if (Bkupbuffer[74]=='4')
jdlodonog 0:2baec676c5bf 533 { PWM=0.84;}
jdlodonog 0:2baec676c5bf 534 if (Bkupbuffer[74]=='5')
jdlodonog 0:2baec676c5bf 535 { PWM=0.85;}
jdlodonog 0:2baec676c5bf 536 if (Bkupbuffer[74]=='6')
jdlodonog 0:2baec676c5bf 537 { PWM=0.86;}
jdlodonog 0:2baec676c5bf 538 if (Bkupbuffer[74]=='7')
jdlodonog 0:2baec676c5bf 539 {PWM=0.87;}
jdlodonog 0:2baec676c5bf 540 if (Bkupbuffer[74]=='8')
jdlodonog 0:2baec676c5bf 541 { PWM=0.88;}
jdlodonog 0:2baec676c5bf 542 if (Bkupbuffer[74]=='9')
jdlodonog 0:2baec676c5bf 543 { PWM=0.89;}
jdlodonog 0:2baec676c5bf 544 pc.printf("Voltaje leido del duty cycle = \n\r");
jdlodonog 0:2baec676c5bf 545 pc.printf(" \n \r",Vin.read());//imprime el valor del voltaje leido en la entrada analogica
jdlodonog 0:2baec676c5bf 546
jdlodonog 0:2baec676c5bf 547 }
jdlodonog 0:2baec676c5bf 548 if (Bkupbuffer[72]=='3' && Bkupbuffer[73]=='3' && Bkupbuffer[75]=='7' ) // En este la trama pdu cambia a verificacion de 3 de los datos
jdlodonog 0:2baec676c5bf 549 {
jdlodonog 0:2baec676c5bf 550 ////////aux[1]=9; // acomoda el dato para configurar el pwm
jdlodonog 0:2baec676c5bf 551 Bkupbuffer[74]=Bkupbuffer[74];
jdlodonog 0:2baec676c5bf 552 PWM.period(0.010); // set PWM period to 10 ms
jdlodonog 0:2baec676c5bf 553 if ( Bkupbuffer[74]=='0')
jdlodonog 0:2baec676c5bf 554 { PWM=0.90;}
jdlodonog 0:2baec676c5bf 555 if (Bkupbuffer[74]=='1')
jdlodonog 0:2baec676c5bf 556 { PWM=0.91;}
jdlodonog 0:2baec676c5bf 557 if (Bkupbuffer[74]=='2')
jdlodonog 0:2baec676c5bf 558 { PWM=0.92;}
jdlodonog 0:2baec676c5bf 559 if (Bkupbuffer[74]=='3')
jdlodonog 0:2baec676c5bf 560 { PWM=0.93;}
jdlodonog 0:2baec676c5bf 561 if (Bkupbuffer[74]=='4')
jdlodonog 0:2baec676c5bf 562 { PWM=0.94;}
jdlodonog 0:2baec676c5bf 563 if (Bkupbuffer[74]=='5')
jdlodonog 0:2baec676c5bf 564 { PWM=0.95;}
jdlodonog 0:2baec676c5bf 565 if (Bkupbuffer[74]=='6')
jdlodonog 0:2baec676c5bf 566 { PWM=0.96;}
jdlodonog 0:2baec676c5bf 567 if (Bkupbuffer[74]=='7')
jdlodonog 0:2baec676c5bf 568 {PWM=0.97;}
jdlodonog 0:2baec676c5bf 569 if (Bkupbuffer[74]=='8')
jdlodonog 0:2baec676c5bf 570 { PWM=0.98;}
jdlodonog 0:2baec676c5bf 571 if (Bkupbuffer[74]=='9')
jdlodonog 0:2baec676c5bf 572 { PWM=0.99;
jdlodonog 0:2baec676c5bf 573 }
jdlodonog 0:2baec676c5bf 574 pc.printf("Voltaje leido del duty cycle = \n\r");
jdlodonog 0:2baec676c5bf 575 pc.printf(" \n \r",Vin.read());//imprime el valor del voltaje leido en la entrada analogica
jdlodonog 0:2baec676c5bf 576
jdlodonog 0:2baec676c5bf 577 }
jdlodonog 0:2baec676c5bf 578
jdlodonog 0:2baec676c5bf 579 { // se cierra en
jdlodonog 0:2baec676c5bf 580 num = Vin*10; //agrando el numero de cero a mil
jdlodonog 0:2baec676c5bf 581 int jj=0;
jdlodonog 0:2baec676c5bf 582 pc.printf("\n spp %d",num);
jdlodonog 0:2baec676c5bf 583 while(num>0)
jdlodonog 0:2baec676c5bf 584 {// se cierra 594
jdlodonog 0:2baec676c5bf 585 aux[jj]=(num%10)+48;//se toma la parte entera de la longitud y se pasa a ASCII y guarda en el vector coorden
jdlodonog 0:2baec676c5bf 586 num=num/10;
jdlodonog 0:2baec676c5bf 587 if(num<1){// se cierra en 591
jdlodonog 0:2baec676c5bf 588 break;
jdlodonog 0:2baec676c5bf 589 }// cierra 589
jdlodonog 0:2baec676c5bf 590 pc.printf("\n %c",aux[jj]);
jdlodonog 0:2baec676c5bf 591 jj++;
jdlodonog 0:2baec676c5bf 592 } // cierra 586
jdlodonog 0:2baec676c5bf 593 if(num==0){// se cierra en 595
jdlodonog 0:2baec676c5bf 594 aux[jj]=48;
jdlodonog 0:2baec676c5bf 595 }// cierra en 595
jdlodonog 0:2baec676c5bf 596 pc.printf("\n sss %c",aux);
jdlodonog 0:2baec676c5bf 597 int z;
jdlodonog 0:2baec676c5bf 598 z=strlen(VOL);//hace z = al tamaño de la variable ENCA
jdlodonog 0:2baec676c5bf 599 for(i=j;i>=0;i--)
jdlodonog 0:2baec676c5bf 600 {//se cierra con 602
jdlodonog 0:2baec676c5bf 601 VOL[z]=aux[i];//guarda las coordenadas en un vector auxiliar ENCA en orden
jdlodonog 0:2baec676c5bf 602 z++;
jdlodonog 0:2baec676c5bf 603 }// cierra 602
jdlodonog 0:2baec676c5bf 604
jdlodonog 0:2baec676c5bf 605 buffer[68]=' ';
jdlodonog 0:2baec676c5bf 606 Bkupbuffer[68]=' ';
jdlodonog 0:2baec676c5bf 607 for(st=68;st<=77;st++)
jdlodonog 0:2baec676c5bf 608 {
jdlodonog 0:2baec676c5bf 609 Bkupbuffer[st]=' ';//limpia el espacio del buffer para evitar ingresar de nuevo, si no ha llegado otro mensaje con la contraseña
jdlodonog 0:2baec676c5bf 610 }
jdlodonog 0:2baec676c5bf 611
jdlodonog 0:2baec676c5bf 612
jdlodonog 0:2baec676c5bf 613 //-------------------------------------------------------------------
jdlodonog 0:2baec676c5bf 614 LENIN1=strlen(VOL);//toma el tamaño del vector ENCA
jdlodonog 0:2baec676c5bf 615 for (i=0;i < LENIN1;i++)//algoritmo para pasar de septetos a octetos
jdlodonog 0:2baec676c5bf 616 { // se cierra en 614
jdlodonog 0:2baec676c5bf 617 DS[i]=VOL[i+C]>>K | VOL[i+C+1]<<(7-K);
jdlodonog 0:2baec676c5bf 618 if (DS[i]==0x00) {LENOUT=i; goto salir;}//cuando
jdlodonog 0:2baec676c5bf 619 K++;
jdlodonog 0:2baec676c5bf 620 if (K==7) {K=0;C++;} // se chequea que ya se acabaron los bits en un ciclo de conversion.
jdlodonog 0:2baec676c5bf 621 } // cierra 609
jdlodonog 0:2baec676c5bf 622
jdlodonog 0:2baec676c5bf 623
jdlodonog 0:2baec676c5bf 624 } // este cierra el ciclo if de comparacion de caracteres de la palabra PWM linea 242
jdlodonog 0:2baec676c5bf 625
jdlodonog 0:2baec676c5bf 626
jdlodonog 0:2baec676c5bf 627 //----------------------------------------------- //
jdlodonog 0:2baec676c5bf 628 }
jdlodonog 0:2baec676c5bf 629
jdlodonog 0:2baec676c5bf 630
jdlodonog 0:2baec676c5bf 631
jdlodonog 0:2baec676c5bf 632 }//while
jdlodonog 0:2baec676c5bf 633 }//main
jdlodonog 0:2baec676c5bf 634 //*****************************************************************************************************************************************
jdlodonog 0:2baec676c5bf 635 //*****************************************************************************************************************************************
jdlodonog 0:2baec676c5bf 636 int readBuffer(char *buffer,int count)//Recepción por comunicación serial con el celular
jdlodonog 0:2baec676c5bf 637 {
jdlodonog 0:2baec676c5bf 638 t.start();
jdlodonog 0:2baec676c5bf 639 while(1)
jdlodonog 0:2baec676c5bf 640 {
jdlodonog 0:2baec676c5bf 641 while (GSM.readable())//si hay algo que leer en la comunicación
jdlodonog 0:2baec676c5bf 642 {
jdlodonog 0:2baec676c5bf 643 char c = GSM.getc();
jdlodonog 0:2baec676c5bf 644 if (c == '\r' || c == '\n') c = '$';//remplaza los espacios y saltos de linea por comodín
jdlodonog 0:2baec676c5bf 645 buffer[i++] = c;//almacena la información en una cadena de caracteres "buffer"
jdlodonog 0:2baec676c5bf 646 if(i > count)break;
jdlodonog 0:2baec676c5bf 647 }
jdlodonog 0:2baec676c5bf 648 if(i > count)break;
jdlodonog 0:2baec676c5bf 649 if(t.read() > 3)
jdlodonog 0:2baec676c5bf 650 {
jdlodonog 0:2baec676c5bf 651 t.stop();
jdlodonog 0:2baec676c5bf 652 t.reset();
jdlodonog 0:2baec676c5bf 653 break;
jdlodonog 0:2baec676c5bf 654 }
jdlodonog 0:2baec676c5bf 655 }
jdlodonog 0:2baec676c5bf 656 wait(0.5);
jdlodonog 0:2baec676c5bf 657 while(GSM.readable())
jdlodonog 0:2baec676c5bf 658 {
jdlodonog 0:2baec676c5bf 659 char c = GSM.getc();
jdlodonog 0:2baec676c5bf 660 }
jdlodonog 0:2baec676c5bf 661 return 0;
jdlodonog 0:2baec676c5bf 662 }
jdlodonog 0:2baec676c5bf 663 //*****************************************************************************************************************************************
jdlodonog 0:2baec676c5bf 664 //*****************************************************************************************************************************************
jdlodonog 0:2baec676c5bf 665 void enviar(int LENIN1,char *DS,char *numero)
jdlodonog 0:2baec676c5bf 666 {
jdlodonog 0:2baec676c5bf 667 GSM.printf("at+cmgs=%d\r\n",13+LENIN1);//Comando para enviar el mensaje, empieza con la longitud total -1
jdlodonog 0:2baec676c5bf 668 pc.printf("at+cmgs=%d\r\n",13+LENIN1);
jdlodonog 0:2baec676c5bf 669 wait(0.5);
jdlodonog 0:2baec676c5bf 670 GSM.printf("0011000A91");//Envía relleno
jdlodonog 0:2baec676c5bf 671 pc.printf("0011000A91");
jdlodonog 0:2baec676c5bf 672 for(p=0;p<10;p++)//Envía el número del celular trocado
jdlodonog 0:2baec676c5bf 673 {
jdlodonog 0:2baec676c5bf 674 GSM.printf("%c",celular[p]);
jdlodonog 0:2baec676c5bf 675 pc.printf("%c",celular[p]);
jdlodonog 0:2baec676c5bf 676 }
jdlodonog 0:2baec676c5bf 677 GSM.printf("0000AA");//Envía segundo relleno
jdlodonog 0:2baec676c5bf 678 pc.printf("0000AA");
jdlodonog 0:2baec676c5bf 679 if(LENIN1<=15)//Si es menor a 15 le adiciona un 0 al comienzo de la dirección
jdlodonog 0:2baec676c5bf 680 {
jdlodonog 0:2baec676c5bf 681 pc.printf("0");
jdlodonog 0:2baec676c5bf 682 GSM.printf("0");
jdlodonog 0:2baec676c5bf 683 pc.printf("%X",LENIN1);//Envía la longitud del mensaje
jdlodonog 0:2baec676c5bf 684 GSM.printf("%X",LENIN1);
jdlodonog 0:2baec676c5bf 685 }
jdlodonog 0:2baec676c5bf 686 else
jdlodonog 0:2baec676c5bf 687 {
jdlodonog 0:2baec676c5bf 688 pc.printf("%2X",LENIN1);
jdlodonog 0:2baec676c5bf 689 GSM.printf("%2X",LENIN1);
jdlodonog 0:2baec676c5bf 690 }
jdlodonog 0:2baec676c5bf 691 for (p=0;p < LENIN1;p++)//envía el número de caracteres del mensaje
jdlodonog 0:2baec676c5bf 692 {
jdlodonog 0:2baec676c5bf 693 if(DS[p]<=15)//agrega ceros a cada número menos a 15 en el mensaje
jdlodonog 0:2baec676c5bf 694 {
jdlodonog 0:2baec676c5bf 695 pc.printf("0");
jdlodonog 0:2baec676c5bf 696 GSM.printf("0");
jdlodonog 0:2baec676c5bf 697 pc.printf("%X",DS[p]);
jdlodonog 0:2baec676c5bf 698 GSM.printf("%X",DS[p]);
jdlodonog 0:2baec676c5bf 699 }
jdlodonog 0:2baec676c5bf 700 else
jdlodonog 0:2baec676c5bf 701 {
jdlodonog 0:2baec676c5bf 702 pc.printf("%2X",DS[p]&0x000000FF);
jdlodonog 0:2baec676c5bf 703 GSM.printf("%2X",DS[p]&0x000000FF);
jdlodonog 0:2baec676c5bf 704 }
jdlodonog 0:2baec676c5bf 705 }
jdlodonog 0:2baec676c5bf 706 wait(0.5);
jdlodonog 0:2baec676c5bf 707 GSM.putc(0x1A);//culmina el envío del mensaje
jdlodonog 0:2baec676c5bf 708 pc.putc(0x1A);
jdlodonog 0:2baec676c5bf 709 }
jdlodonog 0:2baec676c5bf 710 //*****************************************************************************************************************************************
jdlodonog 0:2baec676c5bf 711 //*****************************************************************************************************************************************
jdlodonog 0:2baec676c5bf 712 void borrar_todo(void)//reinicia todas las varaibles del programa
jdlodonog 0:2baec676c5bf 713 {
jdlodonog 0:2baec676c5bf 714 for(ro=0;ro<=50;ro++)
jdlodonog 0:2baec676c5bf 715 {
jdlodonog 0:2baec676c5bf 716 coorden[ro]='\0';
jdlodonog 0:2baec676c5bf 717 }
jdlodonog 0:2baec676c5bf 718 ro=0;
jdlodonog 0:2baec676c5bf 719 for(ro=0;ro<=100;ro++)
jdlodonog 0:2baec676c5bf 720 {
jdlodonog 0:2baec676c5bf 721 buffer[ro]='\0';
jdlodonog 0:2baec676c5bf 722 Bkupbuffer[ro]='\0';
jdlodonog 0:2baec676c5bf 723 }
jdlodonog 0:2baec676c5bf 724 for(ro=0;ro<=255;ro++)
jdlodonog 0:2baec676c5bf 725 {
jdlodonog 0:2baec676c5bf 726 DS[ro]='\0';
jdlodonog 0:2baec676c5bf 727 }
jdlodonog 0:2baec676c5bf 728 ro=0;
jdlodonog 0:2baec676c5bf 729 for(ro=0;ro<=10;ro++)
jdlodonog 0:2baec676c5bf 730 {
jdlodonog 0:2baec676c5bf 731 celular[ro]='\0';
jdlodonog 0:2baec676c5bf 732 }
jdlodonog 0:2baec676c5bf 733 ro=0;
jdlodonog 0:2baec676c5bf 734 LENIN=0;LENIN1=0;LENOUT=0;
jdlodonog 0:2baec676c5bf 735 longi_entera=0;lati_entera=0;longi_decimal=0;lati_decimal=0;
jdlodonog 0:2baec676c5bf 736 i=0;count=0;bandera=0;gh=0;negativo=0;K=0;C=0;p=0;j=0;z=0;ro=0;sol=0;st=0;
jdlodonog 0:2baec676c5bf 737 ledr=0;
jdlodonog 0:2baec676c5bf 738 }
jdlodonog 0:2baec676c5bf 739 //*****************************************************************************************************************************************
jdlodonog 0:2baec676c5bf 740 //*****************************************************************************************************************************************
jdlodonog 0:2baec676c5bf 741 void config(void)//setear la configuración en el celular
jdlodonog 0:2baec676c5bf 742 {
jdlodonog 0:2baec676c5bf 743 GSM.printf("AT\r\n");
jdlodonog 0:2baec676c5bf 744 pc.printf("AT\r\n");
jdlodonog 0:2baec676c5bf 745 wait(0.5);
jdlodonog 0:2baec676c5bf 746 GSM.printf("AT+CNMI=1,1\r\n");
jdlodonog 0:2baec676c5bf 747 pc.printf("AT+CNMI=1,1\r\n");
jdlodonog 0:2baec676c5bf 748 wait(0.5);
jdlodonog 0:2baec676c5bf 749 GSM.printf("AT+CMGF=0\r\n");
jdlodonog 0:2baec676c5bf 750 pc.printf("AT+CMGF=0\r\n");
jdlodonog 0:2baec676c5bf 751 wait(0.5);
jdlodonog 0:2baec676c5bf 752 GSM.printf("ATE\r\n");//eco
jdlodonog 0:2baec676c5bf 753 pc.printf("ATE\r\n");
jdlodonog 0:2baec676c5bf 754 wait(0.5);
jdlodonog 0:2baec676c5bf 755 GSM.printf("CBST=0,0,1\r\n");
jdlodonog 0:2baec676c5bf 756 pc.printf("CBST=0,0,1\r\n");
jdlodonog 0:2baec676c5bf 757 wait(0.5);
jdlodonog 0:2baec676c5bf 758 aa=0;
jdlodonog 0:2baec676c5bf 759
jdlodonog 0:2baec676c5bf 760 }