envio teste
Dependencies: C12832 XBeeGetRssi mbed xbee_lib
main.cpp
- Committer:
- mbastos
- Date:
- 2015-06-24
- Revision:
- 0:f087a480051a
File content as of revision 0:f087a480051a:
#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()