![](/media/cache/profiles/bd1ce36d68a5c2bea97fe45863673b20.jpg.50x50_q85.jpg)
Este programa se usa en recepcion de cadenas de caracteres, util para probar programas de conexion bluetooth en APPINVENTOR
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 */
Generated on Thu Jul 14 2022 13:53:08 by
![doxygen](doxygen.png)