Autor Tema: Problema enviar trama NMEA por SMS Tracme SIM908  (Leído 2165 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado celades88

  • PIC10
  • *
  • Mensajes: 1
Problema enviar trama NMEA por SMS Tracme SIM908
« en: 04 de Agosto de 2015, 21:34:24 »
Buena noche,

Desde hace un tiempo he intentado poner a funcionar una placa TrackME de MCElectronics sin mucho éxito.
Lo que deseo hacer es enviar la trama NMEA por SMS a mi movil cuando presiono un pulsador, pero no funciona. He tomado programas de ejemplo que brinda MCElectronics para adecuar la placa a lo que necesito hacer. Descubrí que el programa no está entrando al SWICH porque la variable "e" no tiene la información necesaria y he allí el problema, porque no se como solucionar esto. Se que es un tema viejo, pero no he dado con la info suficiente para sacar adelante lo que pretendo hacer. Sé que el módulo GPS funciona porque si le cargo el .HEX que trae el TrackME cuando lo venden, se pueden ver las diferentes tramas mediante Hercules en mi PC. Y se que el módulo GSM tambien funciona porque si anulo la condicional SWITCH, la placa me envía un mensaje... pero vacío  :?
Por esta razón les pido ayuda!
De antemano les agradezco en el alma!   :-/
Dejo el código por acá:

#include <main.h>
#include <string.h>
#INCLUDE <stdlib.h>

#pin_select U2TX=PIN_A1
#pin_select U2RX=PIN_A0

#use rs232(UART2, BAUD=9600, PARITY=N, BITS=8, stream=SERIAL_GSM)
#use rs232(UART, baud=4800,parity=N,rcv=PIN_B0,xmit=PIN_B1, bits=8,stream=SERIAL_GPS)

#FUSES HSPLL, NOWDT, PLL3, NOXINST, NOCPUDIV, NOFCMEN, NOIESO, NOIOL1WAY
#use delay(clock=12MHz)
  #define PIN_ON  output_high
  #define PIN_OFF output_low
  #define POWERKEYGSM  PIN_C1
  #define PANIC  PIN_C0
  #define LED  PIN_B2               


char e;
char xbuff;
int const lenbuffGPS=90; 

int8 cbuffGPS[lenbuffGPS];   
int8 cbuffGPS2[lenbuffGPS];


void inicializacionSIM900(void)
{
int cont;
delay_ms(1000);
puts("A",SERIAL_GSM);
delay_ms(300);
putchar(0x0d,SERIAL_GSM);
delay_ms(3000);
for(cont=0;cont<5;cont++)
{
puts("AT",SERIAL_GSM);
delay_ms(300);
putchar(0x0d,SERIAL_GSM);
delay_ms(200);
output_high(LED);
delay_ms(200);
output_low(LED);
}
puts("AT+CMGF=1\r",SERIAL_GSM);
delay_ms(100);
putchar(0x0d,SERIAL_GSM);
delay_ms(100);
puts("AT+CSTT=internet.comcel.com.co",SERIAL_GSM);
delay_ms(100);
puts("AT\r",SERIAL_GPS);
delay_ms(1000);
puts("AT+CGPSPWR=1\r",SERIAL_GPS);
delay_ms(300);     
puts("AT+CGPSRST=0\r",SERIAL_GPS);
delay_ms(30300);
 
   return;
}   


void RX_GPS_GPRMC (void)

   {
 
   puts("AT+CGPSINF=32\r",SERIAL_GPS);     
   delay_ms(300);     
           
   int flag=1;
   while (flag==1)               
      {
      if ( kbhit (SERIAL_GPS)==1 )
         {
         e=0;
         e=fgetc(SERIAL_GPS);
 
         
         
         switch(e)
            {
            case 10: 
 
   
           
     if(cbuffGPS[0]=='$' && cbuffGPS[1]=='G' && cbuffGPS[2]=='P' && cbuffGPS[3]=='R' && cbuffGPS[4]=='M' && cbuffGPS[5]=='C')   
               {
               PIN_ON(LED);
               strcpy(cbuffGPS2,cbuffGPS);
               }
               xbuff=0;
               flag=0;
            break;
            default:
   
            cbuffGPS[xbuff++]=e;
            if(xbuff>(lenbuffGPS-1))
            xbuff=lenbuffGPS;
            }   
      }
      }
       
      return;
   }
void main() {
   setup_adc_ports(NO_ANALOGS|VSS_VDD);
   setup_adc(ADC_OFF|ADC_TAD_MUL_0);   
 
   setup_wdt(WDT_OFF);
       
 //  set_tris_a(0b00101101);
  // set_tris_b(0b00000101);
  // set_tris_c(0b01000101);       
setup_adc(ADC_OFF);
PIN_ON(POWERKEYGSM);   
inicializacionSIM900(); 
PIN_OFF(LED);
 
    while(true)
    {
   
  RX_GPS_GPRMC();
 
   
   if(input(PANIC)==0)                                 
      {   
      PIN_ON(LED);
      delay_ms(300);
    fprintf(SERIAL_GSM,"AT+CMGS=\"3113200202\"\r");
      delay_ms(300);
     puts(cbuffGPS2,SERIAL_GSM);                                     
      delay_ms(300);
      fprintf(SERIAL_GSM,"%c",0x1a);     
     PIN_OFF(LED);
   
      }
   }   
       
       
}