Saturday, 10 May 2014

gprs-pic code for sending latitude and longitude to a specified URL

unsigned char SAT_DATA[57],i;
unsigned char error, byte_read,FLAG=2,FLAG1=0,FLAG2=2;
sbit fin1 at RB0_bit;

sbit shock at RB6_bit;
sbit shock1 at RB7_bit;

unsigned short count=0;

      unsigned char RA=0, BYTE=0,BYTE1;

unsigned char  SITE[]="gprsmanager.orgfree.com/animal/gprsvalue.php?";
//gprsmanager.orgfree.com/animal/gprsvalue.php

  void RX_GPRMS()
{
unsigned char RX=0;
while(RX!='$')
        {
        RX=Soft_UART_Read(&error);   // Read byte, then test error flag
        }
        RX=0;
        while(RX!='G')
        {
        RX=Soft_UART_Read(&error);   // Read byte, then test error flag
        }
        RX=0;
        while(RX!='P')
        {
        RX=Soft_UART_Read(&error);   // Read byte, then test error flag
        }
        RX=0;
        while(RX!='R')
        {
        RX=Soft_UART_Read(&error);   // Read byte, then test error flag
        }
        RX=0;
        while(RX!='M')
        {
        RX=Soft_UART_Read(&error);   // Read byte, then test error flag
        }
        RX=0;
        while(RX!='C')
        {
        RX=Soft_UART_Read(&error);   // Read byte, then test error flag
        }
         RX=0;
}
void RX_DATA()
{
        for(i=0;i<57;i++)
        {
        SAT_DATA[i]=Soft_UART_Read(&error);   // Read byte, then test error flag
        }
}
void TRANSMIT(unsigned char *string)
        {
        while(*string)
        Soft_UART_Write(*string++);
        }

       void SEND_CMD(unsigned char *BASE_ADD,unsigned char COUNT)
 {                unsigned char i;


        for(i=0;i<COUNT;i++)
        {

         UART1_Write(*BASE_ADD);

          BASE_ADD++;

        }
 }
 void ENTER(void)
 {
 UART1_Write(13);
  UART1_Write(10);
 }
  void RX_REPLY()
 {
    RA=0;
        while(RA!='K')
        {
          while(!UART1_Data_Ready());     // If data is received,
      RA= UART1_Read();
     //  UART1_Write(RX);
        }
 }
  void val()
  {
    UART1_Write('"');
  }
     void fin1_angle_0()
     {                                                 //for servo motor at angle 0 degree
      for (count=0;count<30;count++)                //loop
         {
         fin1=1;
         delay_us(582);

        fin1=0;
         delay_us(19418);
                                  // add with 19418us to be 20000us because servo recognizes 20us signals
         }
     }
    void fin1_angle_90()                                  // for s bervo motor at angle 90 degrees
     {
   for (count=0;count<30;count++)
         {
         fin1=1;
         delay_us(1400);

         fin1=0;
         delay_us(18600);

         }
     }

void main() {
TRISB0_bit=0;
TRISB6_bit=0;
TRISB7_bit=0;
PORTB=0X00;
    UART1_Init(9600);               // Initialize UART module at 9600 bps
  Delay_ms(100);
     //UART1_Write_Text("Start");
  //UART1_Write(10);
 // UART1_Write(13);
 error=Soft_UART_Init(&PORTC, 4, 3, 9600, 0);
 Delay_ms(100);
 Soft_UART_Write('r');
  Delay_ms(100);
  fin1_angle_90();
  fin1_angle_0();
  fin1_angle_90();
    fin1_angle_0();
 
    strt:
                Delay_ms(100);
           SEND_CMD("AT",2);
         ENTER();
        Delay_ms(1000);
        SEND_CMD("AT",2);
         ENTER();

        Delay_ms(500);
        SEND_CMD("AT+CMGF=1",9);
         ENTER();

        Delay_ms(1000);
        SEND_CMD("AT+SAPBR=3,1,\"CONTYPE\",\"GPRS\"",29);
        ENTER();
         RX_REPLY();

        Delay_ms(500);
        SEND_CMD("AT+SAPBR=3,1,\"APN\",\"WWW\"",25);
        ENTER();
        RX_REPLY();
        Delay_ms(1000);

        SEND_CMD("AT+SAPBR=1,1",12);
        ENTER();
        BYTE=0;
        while(BYTE!='K')
        {
          while(!UART1_Data_Ready());     // If data is received,
      BYTE = UART1_Read();
      if(BYTE=='E')
      goto strt;
        }
        Delay_ms(500);

        SEND_CMD("AT+HTTPINIT",11);
        ENTER();
        RX_REPLY();
        Delay_ms(500);
        SEND_CMD("AT+HTTPPARA=\"CID\",1",19);
        ENTER();
        RX_REPLY();
          Delay_ms(1000);
          //  SEND_CMD("AT+HTTPPARA=\"URL\",",18);
          //val();
        //SEND_CMD(SITE,41);
 while(1)
 {
 Delay_ms(5000);
   RX_GPRMS();
   RX_DATA();
 /*  TRANSMIT("LAT") ;

  for(i=14;i<26;i++)
          {
         Soft_UART_Write(SAT_DATA[i]);
         }
         TRANSMIT("LOG");
          for(i=27;i<39;i++)
         {
         Soft_UART_Write(SAT_DATA[i]);
         }
          Delay_ms(1000);
          Soft_UART_Write(10);
          Soft_UART_Write(13);
           Delay_ms(1000);  */
              SEND_CMD("AT+HTTPPARA=\"URL\",",18);
          val();
          //val();
        SEND_CMD(SITE,45);
        // TRANSMIT("LAT") ;
        UART1_Write_Text("v1=");
  for(i=14;i<23;i++)
          {
         Soft_UART_Write(SAT_DATA[i]);
           UART1_Write(SAT_DATA[i]);
         }
        // TRANSMIT("LOG");
         UART1_Write('&');
          UART1_Write_Text("v2=");
          for(i=27;i<36;i++)
         {
         Soft_UART_Write(SAT_DATA[i]);
           UART1_Write(SAT_DATA[i]);
         }
        /*  for(i=0;i<57;i++)
        {
        SAT_DATA[i]=Soft_UART_Read(&error);   // Read byte, then test error flag
        UART1_Write(SAT_DATA[i]);
        } */

        val();
          ENTER();
      //    RX_REPLY();


       Delay_ms(1000);
         SEND_CMD("AT+HTTPACTION=0",15);
         ENTER();

       while(BYTE1!='2')
        {
         while(!UART1_Data_Ready());     // If data is received,
      BYTE1 = UART1_Read();

        }
           Delay_ms(2000);
          //  red=0;
        SEND_CMD("AT+HTTPREAD=0,200",17);
         ENTER();

         while(BYTE1!='@')
        {

       while(!UART1_Data_Ready());     // If data is received,
     BYTE1 = UART1_Read();
        if(BYTE1=='K')
        goto END;
        //  UART1_Write(RX);
        }
         while(!UART1_Data_Ready());     // If data is received,
      BYTE1 = UART1_Read();
             if(BYTE1=='S')
       {
   //    RELAY=1;
   if(FLAG2==0)
   {
   FLAG2=1;
shock=1;
  Delay_ms(10);
  shock1=1;
    Delay_ms(10);
     }
     }
        FLAG2=0;
       if(BYTE1=='N')
       {
   //    RELAY=1;
   if(FLAG==0)
   {
   FLAG=1;
   fin1_angle_90();
  // Delay_ms(1000);
     fin1_angle_0();
     }
     }
       if(BYTE1=='F')
       FLAG=0;
     //  RELAY=0;
             Delay_ms(500);


        END:

         Delay_ms(1000);
         }
 


}

No comments:

Post a Comment