![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
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
main.cpp@0:2baec676c5bf, 2016-11-30 (annotated)
- 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?
User | Revision | Line number | New 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 | } |