Código para enviar un valor entero a binario para monitorear una variable con ayuda de app inventor
Fork of VOLTIMETRO1 by
Diff: main.cpp
- Revision:
- 1:d0a4ddc1bd88
- Parent:
- 0:4676a90107ca
- Child:
- 2:8a0e46a84596
diff -r 4676a90107ca -r d0a4ddc1bd88 main.cpp --- a/main.cpp Tue Apr 14 02:05:54 2015 +0000 +++ b/main.cpp Fri Apr 17 19:58:59 2015 +0000 @@ -1,295 +1,38 @@ -//programa para enviar cadenas de caracters y probarlas con app inventor -//el programa tambien recibe cadenas +//programa para enviar valores analogos y probarlos con app inventor +//el programa en esta oportunidad manda valores provenientes del puero analogico en +//enteros HEX (xxxx) entre 0 y 1000 +//se prueba con voltimetro1 .apk APPINVENTOR. cambie GSM A pc si quere probar directo sobre la pc #include "mbed.h" -#include "DebouncedIn.h" -#include "stdio.h" -#include "string.h" -Timer t; +#include <stdio.h> +//#include <conio.h> DigitalOut LedVerde(LED2); DigitalOut LedRojo(LED1); DigitalOut LedAzul(LED3); -DebouncedIn button1(PTC12); -DebouncedIn button2(PTC13); -DebouncedIn button3(PTC16); + Serial GSM(PTE0,PTE1); //puertos del FRDM para el modem Serial pc(USBTX,USBRX); -void Rx_interrupt(); -int position=0; -int lenpack=6; -int longi=0; -char tel[10]; -char DE[50]; -char buffer[512]; -char buffermsg[100]; -char buffer1[13]; -char mensaje[100]; -char NUMBER[13]; -short int index1; -short int index2; -short int index3; -int count; -int i = 0; -int c=0; -int cont=0; -unsigned char CtrlZ = 0x1A; -bool Flag = false; -char r[]=""; -char msg[256]; -char char1; -void FlushGSM(void) { -char1 = 0; - while (GSM.readable()){ - char1 = GSM.getc();} - return;} - -void callback() { - - pc.printf("%c\n", GSM.getc()); - -} - -int readBuffer(char *buffer,int count) -{ - int i=0; - t.start(); - while(1) { - while (GSM.readable()) { - char c = GSM.getc(); - if (c == '\r' || c == '\n') c = '$'; - buffer[i++] = c; - if(i > count)break; - } - if(i > count)break; - if(t.read() > 3) { - t.stop(); - t.reset(); - break; - } - } - wait(0.5); - while(GSM.readable()) { - char c = GSM.getc(); - } - return 0; -} - -void cleanBuffer(char *buffer, int count) -{ - for(int i=0; i < count; i++) { - buffer[i] = '\0'; - } -} - -void sendCmd(char *cmd) -{ - GSM.puts(cmd); -} - -int waitForResp(char *resp, int timeout) -{ - int len = strlen(resp); - int sum=0; - t.start(); - - while(1) { - if(GSM.readable()) { - char c = GSM.getc(); - sum = (c==resp[sum]) ? sum+1 : 0; - if(sum == len)break; - } - if(t.read() > timeout) { - t.stop(); - t.reset(); - return -1; - } - } - t.stop(); - t.reset(); - while(GSM.readable()) { - char c = GSM.getc(); - } - - return 0; -} - -int sendCmdAndWaitForResp(char *cmd, char *resp, int timeout) -{ - sendCmd(cmd); - return waitForResp(resp,timeout); -} - -int powerCheck(void) -{ - return sendCmdAndWaitForResp("AT\r\n", "OK", 2); -} - -int checkSIMStatus(void) -{ - char gprsBuffer[30]; - int count = 0; - cleanBuffer(gprsBuffer,30); - while(count < 3) { - sendCmd("AT+CPIN?\r\n"); - readBuffer(gprsBuffer,30); - if((NULL != strstr(gprsBuffer,"+CPIN: READY"))) { - break; - } - count++; - wait(1); - } - - if(count == 3) { - return -1; - } - return 0; -} - -int checkSignalStrength(void) -{ - char gprsBuffer[100]; - int index,count = 0; - cleanBuffer(gprsBuffer,100); - while(count < 3) { - sendCmd("AT+CSQ\r\n"); - readBuffer(gprsBuffer,25); - if(sscanf(gprsBuffer, "AT+CSQ$$$$+CSQ: %d", &index)>0) { - break; - } - count++; - wait(1); - } - if(count == 3) { - return -1; - } - return index; -} - -int init() -{ - for(int i = 0; i < 3; i++){ - sendCmdAndWaitForResp("AT\r\n", "OK", 1); - wait(0.5); - } - if(0 != checkSIMStatus()) { - return -1; - } - if(checkSignalStrength()<1) { - return -1; - } - - GSM.attach(&Rx_interrupt, Serial::RxIrq); - return 0; -} - -int readSMSpdu(char *message, int index) -{ - int i = 0; - char gprsBuffer[100]; - char *p,*s; - GSM.printf("AT+CMGR=%d\r\n",index); - cleanBuffer(gprsBuffer,100); - readBuffer(gprsBuffer,100); - if(NULL == ( s = strstr(gprsBuffer,"+CMGR"))) { - return -1; - } - if(NULL != ( s = strstr(gprsBuffer,"+32"))) { - p = s + 6; - while((*p != '$')&&(i < 5)) { - message[i++] = *(p++); - } - message[i] = '\0'; - } - return 0; -} - -int deleteSMS(int index) -{ - char cmd[32]; - snprintf(cmd,sizeof(cmd),"AT+CMGD=%d\r\n",index); - sendCmd(cmd); - return 0; -} - -void Rx_interrupt(){ - } - +int med,num,i,j,k; +AnalogIn input(PTC2); + int main(void) { - LedVerde=1; - LedRojo=1; - LedAzul=1; - GSM.baud(9600); + GSM.baud(9600); // asigno baudios y configuro puerto serie de la usart GSM.format(8,Serial::None,1); - - + while(1){ - if (button1.falling()) - { - index1=!index1; - if (index1==0){ - GSM.printf("VERDEON");} - else{ - GSM.printf("VERDEOF"); - } - } - if (button2.falling()) - { - index2=!index2; - if (index2==0){ - GSM.printf("ROJOON");} - else{ - GSM.printf("ROJOOF"); - } - } - - if (button3.falling()) - { - index3=!index3; - if (index3==0){ - GSM.printf("AZULON");} - else{ - GSM.printf("AZULOF"); - } - } - - - - - - - - if (GSM.readable()) { - readBuffer(buffer,100); - pc.printf("buffer= %s\n\r ",buffer); - pc.printf("buffer= %c %c\n\r ",buffer[10],buffer[11]); - if(buffer[67]=='A'){for(i=0;i<86;i++) - {buffermsg[i]=buffer[i];} - pc.printf("mensaje= %s\n\r ",buffermsg); - pc.printf("mensaje[72]= %c mensaje[73]=%c\n\r ",buffermsg[72],buffermsg[73]); - buffer[67]='c'; - } - - if(buffer[10]=='S'&& buffer[11]=='M'){ - for(i=0;i<5;i++) - {buffer1[i]=buffer[2+i];} - pc.printf("buffer1= %s\n\r ",buffer1); - buffer[10]='c'; - buffer[11]='c'; - } -if(buffer1[3]=='T'){pc.printf("AT+CMGL=0\n\r"); - wait(0.5); - GSM.printf("AT+CMGL=0\r\n"); - buffer1[3]='p'; - } - - -// CC3219642FCBC965 ESTO SIGNIFICA "Led verde" si mandan ese mensaje de texto se prende el led azul - -if(buffermsg[70]=='C' && buffermsg[71]=='C' && buffermsg[72]=='3' && buffermsg[73]=='2' && buffermsg[74]=='1' && buffermsg[75]=='9' && buffermsg[76]=='6' && buffermsg[77]=='4' && buffermsg[78]=='2' && buffermsg[79]=='F' && buffermsg[80]=='C' && buffermsg[81]=='B' && buffermsg[82]=='C' && buffermsg[83]=='9' && buffermsg[84]=='6' && buffermsg[85]=='5'){LedAzul=0;} -if(buffermsg[72]=='7' && buffermsg[73]=='3'){LedAzul=1;} //apaga con Lgeverde - - - } + med = input.read(); //leo puerto analogico + wait(0.5); + num = med*1000; //agrando el numero de cero a mil + if(num<256){ //debo generar dos casos a APP inventor solo me recibe hex asi: 0xhhhh (4 cifras) + GSM.putc(0); //si el numero es hasta 255 se le ponen dos ceros adelante a la secuencia de bits + GSM.putc(i); //luego la cifra menos significativa + } + if(num>255){ //pero si es mayor a 255 las cifras deben ser convertidas a un hex de dos bytes de la siguiente forma + j=num/256; //calculo la cifra mas significativa + k=num-j*256; //calculo la cifra menos significativa + GSM.putc(j); //las envio a la usart para que se las ponga al modulo bluetooth y la lleve al android + GSM.putc(k); //mas significativa primero, menos despues si no no funciona!!! y con la orden PUTC solo asi le envia binarios + } } -} \ No newline at end of file +} \ No newline at end of file