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()