Este programa se usa en recepcion de cadenas de caracteres, util para probar programas de conexion bluetooth en APPINVENTOR

Dependencies:   mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 //PROGRAMA PARA RECIBIR CARACTERES DESDE EL PC Y ACTIVAR 3 LEDS
00002 //UTIL EN LECTURA DE CADENAS PARA APP INVENTOR
00003 #include "mbed.h"
00004 #include "stdio.h"
00005 #include "string.h"
00006 #include "stdlib.h"
00007 
00008  
00009 Serial GSM(PTE0,PTE1);  //puertos del FRDM para el modem
00010 Serial pc(USBTX,USBRX); //puertos del PC
00011 char buffer[5];// TAMAÑO DEL BUFER
00012 Timer t;   //VALOR DEL TIEMPO
00013 int count;
00014 int i = 0;
00015 int c=0;
00016 char r[]=""; 
00017 char Qr[]="qmAIzQGtSK";
00018 DigitalOut LedRojo(LED1);
00019 DigitalOut LedVerde(LED2);
00020 char s2[4];
00021 char s1[4];
00022 DigitalOut LedAzul(LED3);
00023 PwmOut led(PTA13);
00024 AnalogOut aout(PTE30);
00025 char *cadena = "";
00026 float pm; 
00027 int readBuffer(char *buffer,int count)   //esta funcion lee un bufer de datos
00028 {
00029     int i=0; 
00030     t.start();    //CUENTA EL TIEMPO DE CONEXION E INICIA
00031     while(1) {
00032         while (GSM.readable()) {
00033             char c = GSM.getc();
00034             if (c == '\r' || c == '\n') c = '$';//si se envia fin de linea o de caracter inserta $
00035             buffer[i++] = c;//mete al bufer el caracter leido
00036             if(i > count)break;//sale del loop si ya detecto terminacion
00037         }
00038         if(i > count)break;
00039         if(t.read() > 1) {  //MAS DE UN SEGUNDO DE ESPERA SE SALE Y REINICA EL RELOJ Y SE SALE
00040             t.stop();
00041             t.reset();
00042             break;
00043         }
00044     }
00045      return 0;
00046 }
00047 
00048 void cleanBuffer(char *buffer, int count)  //esta funcion limpia el bufer
00049 {
00050     for(int i=0; i < count; i++) {
00051         buffer[i] = '\0';
00052     }
00053 }
00054 
00055    
00056 int main(void)
00057        { 
00058        LedVerde=1;
00059        LedRojo=1;
00060        LedAzul=1;
00061        LedVerde=0;
00062        wait(2);   //PRENDE EL LED VERDE POR 2 SEGUNDOS
00063        LedVerde=1;
00064        GSM.baud(9600);
00065        GSM.format(8,Serial::None,1);
00066        led.period(0.005f);      // 4 second period
00067        led.write(0.40f);      // 50% duty cycle, relative to period 
00068                
00069        while(1){ 
00070        if (GSM.readable()) {
00071           readBuffer(buffer,5);
00072           pc.printf("buffer= %s\n\r ",buffer);  //imprime el bufer
00073           pc.printf("buffer= %c  %c\n\r ",buffer[0],buffer[1]);//imprime el cero y el uno
00074           
00075           if(buffer[0]=='O' && buffer[1]=='N' && buffer[2]=='A' ){LedAzul=0;}  //PRENDE EL LED AZUL
00076           if(buffer[0]=='O' && buffer[1]=='F'&& buffer[2]=='A'){LedAzul=1;}  //APAGA EL LED AZUL
00077           
00078           if(buffer[0]=='O' && buffer[1]=='N' && buffer[2]=='V' ){LedVerde=0;}//PRENDE EL LED VERDE
00079           if(buffer[0]=='O' && buffer[1]=='F'&& buffer[2]=='V'){LedVerde=1;}  //APAGA EL LED VERDE
00080           
00081           if(buffer[0]=='O' && buffer[1]=='N' && buffer[2]=='R' ){LedRojo=0;}  //PRENDE EL LED ROJO
00082           if(buffer[0]=='O' && buffer[1]=='F'&& buffer[2]=='R'){LedRojo=1;}  //APAGA EL LED ROJO
00083           char *s2 = buffer;
00084           strcpy( s1, s2 );
00085           int num = atoi(s1);
00086           pm=num/100.0;
00087           led.write(pm);
00088           aout=pm;
00089           pc.printf("num= %d\n\r ",num);  //imprime el bufer
00090           pc.printf("pm= %f\n\r ",pm);  //imprime el bufer 
00091           cleanBuffer(buffer,5);   
00092           } 
00093           cleanBuffer(buffer,5);           
00094 }
00095 }
00096 
00097 /*
00098 char *cadena = "4856"; 
00099 int num = atoi(cadena);
00100 
00101 PwmOut led(PTA13);
00102 DigitalOut myled(LED2);
00103 
00104 int main() {
00105 led.period(0.005f);  // 4 second period
00106 led.write(0.40f);   
00107 
00108 
00109 PwmOut led(LED1);
00110  
00111 int main() {
00112     // specify period first
00113     led.period(4.0f);      // 4 second period
00114     led.write(0.50f);      // 50% duty cycle, relative to period
00115     
00116      stdlib.h
00117      char *str = "12345.67"; 
00118 
00119 n = atoi(str); 
00120 printf("string = %s integer = %d\n", str, n); 
00121  strcpy( s1, s2 );
00122     
00123 */