Autor Tema: No puedo MANDAR mensajes desde modulo gprs  (Leído 8213 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado soymoe

  • PIC18
  • ****
  • Mensajes: 456
    • El blog de Moe
No puedo MANDAR mensajes desde modulo gprs
« en: 18 de Mayo de 2016, 18:28:06 »
Hola como andan, estoy aprendiendo a manejar el modulo con sis 900 y quiero mandar un mensaje pero no lo hace
Código: [Seleccionar]
while(1){
   printf("AT\r\n");
   delay_ms(4000);
   printf("AT+CMGS=543xxxxxxx\r\n");
   delay_ms(4000);
   printf("HOLA DESDE PIC"+0X1A);
   Delay_ms(4000);
   }         
A ver si me dan una mano. Gracias

Desconectado RICHI777

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1498
Re:No puedo MANDAR mensajes desde modulo gprs
« Respuesta #1 en: 18 de Mayo de 2016, 19:21:17 »
Checkeaste que el baud-rate sea el correcto ?

Desconectado soymoe

  • PIC18
  • ****
  • Mensajes: 456
    • El blog de Moe
Re:No puedo MANDAR mensajes desde modulo gprs
« Respuesta #2 en: 18 de Mayo de 2016, 19:33:15 »
Checkeaste que el baud-rate sea el correcto ?
si porque me deja llamar

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:No puedo MANDAR mensajes desde modulo gprs
« Respuesta #3 en: 18 de Mayo de 2016, 19:40:18 »
Te fijaste que te responde ?
Podrias determinar cual es el problema mirando eso.

Desconectado soymoe

  • PIC18
  • ****
  • Mensajes: 456
    • El blog de Moe
Re:No puedo MANDAR mensajes desde modulo gprs
« Respuesta #4 en: 18 de Mayo de 2016, 21:02:50 »
Te fijaste que te responde ?
Podrias determinar cual es el problema mirando eso.
El problema es que tengo que poner comillas y no se como ponerlas en el string tengo que poner, o mandar: AT+CMGS="543496508790"
pero no se como se ponen las comillas dentro del printf para que lo tome como un caracter mas

Desconectado elgarbe

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2178
Re:No puedo MANDAR mensajes desde modulo gprs
« Respuesta #5 en: 18 de Mayo de 2016, 21:22:34 »
fprintf(SIM900,"AT+CMGS=\"%s\"\r",num); // Teléfono al cual le enviaremos el mensaje.

por ejemplo

fprintf(SIM900,"AT+CMGS=\"336xxxxxxx\"\r");

saludos
-
Leonardo Garberoglio

Desconectado soymoe

  • PIC18
  • ****
  • Mensajes: 456
    • El blog de Moe
Re:No puedo MANDAR mensajes desde modulo gprs
« Respuesta #6 en: 19 de Mayo de 2016, 09:27:18 »
printf("AT+CMGS=\"543496xxxxx\"\r");
   //delay_ms(3000);
   printf("HOLA DESDE PIC\r\n");
Pongo esto pero no me funciona

Desconectado elgarbe

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2178
Re:No puedo MANDAR mensajes desde modulo gprs
« Respuesta #7 en: 19 de Mayo de 2016, 09:33:10 »
para finalizar el mensaje tenes que enviar el caracter CTRL+z o 0x1A

agregá esto al final:
printf("%c", 0x1A);

saludos!
-
Leonardo Garberoglio

Desconectado soymoe

  • PIC18
  • ****
  • Mensajes: 456
    • El blog de Moe
Re:No puedo MANDAR mensajes desde modulo gprs
« Respuesta #8 en: 19 de Mayo de 2016, 10:10:34 »
para finalizar el mensaje tenes que enviar el caracter CTRL+z o 0x1A

agregá esto al final:
printf("%c", 0x1A);

saludos!
donde puedo encontrar info sobre el fprint?

Desconectado elgarbe

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2178
Re:No puedo MANDAR mensajes desde modulo gprs
« Respuesta #9 en: 19 de Mayo de 2016, 10:22:48 »
en google  ;-)




printf("format", args) is used to print the data onto the standard output which is often a computer monitor.

sprintf(char *, "format", args) is like printf. Instead on displaying the formated string on the standard output i.e. a monitor, it stores the formated data in a string pointed to by the char pointer (the very first parameter). The string location is the only difference between printf and sprint syntax.

fprintf(FILE *fp, "format", args) is like printf again. Here instead on displaying the data on the monitor, or saving it in some string, the formated data is saved on a file which is pointed to by the file pointer which is used as the first parameter to fprintf. The file pointer is the only addition to the syntax of printf.

If stdout file is used as the first parameter in fprintf, its working is then considered equivalent to that of printf.


yo normalmente uso sprintf para armar la cadena que quiero enviar en un buffer. Luego con alguna funcion propia de la uart se lo mandas al SIM. Si ya tenes configurado el prinf para que use la uart como salida, es buena opcion tambien. El fprintf no lo uso casi nunca, en el ejemplo que te envié usa fprintf, pero no es mio ese código.

saludos
-
Leonardo Garberoglio

Desconectado elgarbe

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2178
Re:No puedo MANDAR mensajes desde modulo gprs
« Respuesta #10 en: 19 de Mayo de 2016, 10:23:45 »
para finalizar el mensaje tenes que enviar el caracter CTRL+z o 0x1A

agregá esto al final:
printf("%c", 0x1A);

saludos!

te funcionó esto?

sds.
-
Leonardo Garberoglio

Desconectado soymoe

  • PIC18
  • ****
  • Mensajes: 456
    • El blog de Moe
Re:No puedo MANDAR mensajes desde modulo gprs
« Respuesta #11 en: 19 de Mayo de 2016, 17:56:50 »
para finalizar el mensaje tenes que enviar el caracter CTRL+z o 0x1A

agregá esto al final:
printf("%c", 0x1A);

saludos!

te funcionó esto?

sds.
si funciono ahora trato de activar algo al recibir un mensaje de sms desde un telefono celular pero no me sale y encima no veo cual es el problema, porque no puedo monitoriar el puerto que tengo conectado a la sis900

Desconectado soymoe

  • PIC18
  • ****
  • Mensajes: 456
    • El blog de Moe
Re:No puedo MANDAR mensajes desde modulo gprs
« Respuesta #12 en: 19 de Mayo de 2016, 20:45:32 »
Aqui parte del codigo para leer el primer mensaje
Código: [Seleccionar]
while(1){
   delay_ms(1000);
   IF(!(BIT_TEST(PORTA,5)))
   {
   printf("AT+CMGS=\"543xxxxxx\"\r");
   delay_ms(3000);
   printf("HOLA DESDE PIC\r\n");
   printf("%c", 0x1A);
   IF ((Cadena[0]=='+'))
      {
         printf("AT+CMGR=1\r"); //leer sms
         delay_ms(500);//espero a que conteste
         if(Cadena[0]=='P')output_high(PIN_B1);

Desconectado elgarbe

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2178
Re:No puedo MANDAR mensajes desde modulo gprs
« Respuesta #13 en: 19 de Mayo de 2016, 22:55:47 »
Código: C
  1. printf("AT+CMGR=1\r"); //leer sms

ese comando no es para leer los mensajes SMS, lo que hace es poner el modo SMS en modo texto.
quizà esto te sirva:
http://www.theengineeringprojects.com/2015/02/receive-sms-commands-using-sim900-arduino.html

la ultima parte del còdigo te lo venden jajaja, pero seguro vas a poder implementar lo que explican. Te manejas bien con el ingles?

sds.
-
Leonardo Garberoglio

Desconectado soymoe

  • PIC18
  • ****
  • Mensajes: 456
    • El blog de Moe
Re:No puedo MANDAR mensajes desde modulo gprs
« Respuesta #14 en: 20 de Mayo de 2016, 11:27:36 »
Código: C
  1. printf("AT+CMGR=1\r"); //leer sms

ese comando no es para leer los mensajes SMS, lo que hace es poner el modo SMS en modo texto.
quizà esto te sirva:
http://www.theengineeringprojects.com/2015/02/receive-sms-commands-using-sim900-arduino.html

la ultima parte del còdigo te lo venden jajaja, pero seguro vas a poder implementar lo que explican. Te manejas bien con el ingles?

sds.
che gracias por responder, me fije en el manual de la sis900 y ese es el comando para leer pero como ya lo configure para que tire el mensaje como el ejemplo que me diste no lo necesito lo que pasa es que algo esta mal con la recepcion de la cadena de caracteres porque no detecta nada de lo que recibo solo detecto la interrupcion de la uart
Código: [Seleccionar]
void rd_isr(void)//función de interrupción por recepción de datos USART
{
   ch=getc();
   Cadena[i]=ch;
  // putc(ch);
   output_toggle(PIN_B0);
   i++;
   if(i>60)i=0;
}
void main()
{
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
   setup_timer_1 ( T1_INTERNAL | T1_DIV_BY_4 );
   setup_timer_2(T2_DISABLED,0,1);
   setup_ccp1(CCP_OFF);
   setup_comparator(NC_NC_NC_NC);
   set_tris_b(0x04);            //portb como salida
   set_tris_a(0x20);   //porta como Entrada
   enable_interrupts(int_rda);
   enable_interrupts(GLOBAL);   //activadas interrupciones
   output_Low(PIN_B1);
   output_Low(PIN_B0);
   while(1){
         if((Cadena[0]=='+')&&(Cadena[1]=='C')&&(Cadena[2]=='M')&&(Cadena[3]=='T'))output_high(PIN_B1);
   }
 }