![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
envio teste
Dependencies: C12832 XBeeGetRssi mbed xbee_lib
Diff: main.cpp
- Revision:
- 0:f087a480051a
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Wed Jun 24 19:06:55 2015 +0000 @@ -0,0 +1,145 @@ +#include "mbed.h" +#include "C12832.h" + +Serial pc(USBTX, USBRX); // tx, rx +Serial xbee1(p9,p10); +DigitalOut rst1(p11); //Digital reset for the XBee, 200ns for reset +Serial serial (p9,p10); +C12832 lcd(p5, p7, p6, p8, p11); //C12832(PinName mosi, PinName sck, PinName reset, PinName a0, PinName ncs, const char* name = "LCD"); + + +//variaveis globais +int rssi=0; +int atdb=0; +int recepcao; +char mens[20]; +char mens1[20]; +unsigned char cont=0; +unsigned char cont1=0; +unsigned char tam=0; +unsigned char cks=0; +unsigned char estado=0; +unsigned char estado1=0; +//unsigned char rssi=0; +unsigned char temp=0; +unsigned char temp1=0; + + + +int main(void){ + + xbee1.baud(9600); + pc.baud(9600); + lcd.locate(0,3); + while(1){ + switch(estado){ + case 0: + INI: + while(!xbee1.readable()){ + lcd.locate(0,0); + lcd.cls(); + lcd.printf("Aguardando..."); + } + temp = xbee1.getc(); + if(temp==0x7E){ + cont=0; + } + mens[cont]=temp; + //lcd.locate(0,0); + //lcd.cls(); + //lcd.printf("Recebeu %x cont=%d",temp,cont);//debug - recebeu o primeiro caracter? + //wait(0.5); + temp = 0; + cont++; + if(cont==(mens[2]+4)){ //compara o tamanho enviado + 4 bytes (1 de inicio,2 de tamanho e checksum) para + estado = 1; // verificar se chegou ao final do frame, de maneira dinâmica + //lcd.cls(); + //lcd.locate(0,10); + //lcd.printf("Frame 1 - Completo");//debug - completou o frame? + //wait(0.5); + } + break; + case 1: //montou o primeiro pacote + //lcd.locate(0,20); + //lcd.printf("M[%x %x %x %x %x %x %x %x %x %x ]",mens[0],mens[1],mens[2],mens[3],mens[4],mens[5],mens[6],mens[7],mens[8],mens[9]);//debug - recebeu o primeiro caracter? + //wait(7);//debug + + //lcd.locate(0,0); + //lcd.cls();//debug + //lcd.printf("Verificando..."); + //wait(0.5); + REP: xbee1.printf("%c%c%c%c%c%c%c%c",0x7E,0X00,0X04,0X08,0X01,0X64,0X62,0X30); + //wait(2); + //lcd.locate(0,10); + //lcd.cls();//debug + //lcd.printf("passou."); + //wait(1); + while (atdb==0){ + switch(estado1){ + case 0: + while(!xbee1.readable()){ + lcd.locate(0,0); + lcd.cls(); + lcd.printf("Aguardando ATDB..."); + } + temp1 = xbee1.getc();//gets(temp); + if(temp1==0x7E){ + cont1=0; + } + mens1[cont1]=temp1; + //lcd.locate(0,0); + //lcd.cls(); + //lcd.printf("Recebeu %x ATDB=%d",temp1,cont1);//debug - recebeu o primeiro caracter? + //wait(1); + temp1 = 0; + cont1++; + if(cont1==(mens1[2]+4)){ + estado1 = 1; + //lcd.locate(0,10); + //lcd.cls(); + //lcd.printf("Frame 2 - Completo");//debug - completou o frame? + //wait(0.5); + } + break; + case 1: //ja montou o frame AT response + atdb=1; + switch(mens1[3]){ + case 0x88: + lcd.locate(0,10); + lcd.cls(); + lcd.printf("Frame ATDB:mens1[3]=%x",mens1[3]);//debug para confirmar frame ATDB + //wait(1); + rssi=mens1[8]; + lcd.locate(0,10); + lcd.cls(); + lcd.printf("RSSI=%x",mens1[8]);//debug para confirmar frame ATDB + wait(0.1); + estado=0; + cont=0; + atdb=0; + goto INI; + break; + default: + estado1=0; + cont1=0; + temp1=0; + lcd.locate(0,10); + lcd.cls(); + lcd.printf("ERRO: Nao eh ATDB:mens1[3]=%x",mens1[3]);//debug para confirmar frame ATDB + wait(1); + estado=0; + cont=0; + atdb=0; + goto INI; + }//fecha switch mensg[3]=0x88 + break; + }//fecha switch estado1 + }//fecha while atdb + break; + }//fecha switch estado + + + }//fecha while1 +}//fecha int main() + + \ No newline at end of file