MOdulo Gsm y pic18f4550

En general el proyecto esta asi...


Mediante un mensaje de texto, recivido por el modulo gsm (todavia no se cual usar) i conectado a un pic aga una activacion de relays es para un reset de maquinaria por medio de GSM!

quiero saber si el modulo puede recivir mensajes i si puedo filtrar ciertos contenidos de mensajes para usarlos como comando de activacion de cada relay!
 
Como modulo GSM puedes usar un telefono celular con conexion serial (de los viejos) luego con el pic manejas por medio de comandos AT el envio o recepcion de mensajes luego con esos mensajes desde el pic abres y cierras los reles
 
muy bien albertoxx y zpirilo
yo probe con el SE k300 el problema ocn ese celu es que no domina formato texto
at+cmgf=1 //foramato texto
error cmgf 302 //
at+cmgf=?
:+cmgf (0) //solo formato pdu

hasta alli bien ahora estube buscando ejemplos de reconocimiento de una cadena en PDU con librerias en el ccs <string.h> o <strcmp.h> y el problea ahora es que en una comparacion el programa se queda en la linea:

char varable[4]; //para 4 caracteres puntero inicializado en '0'
gets(variable); //aqui
if (strcmp(variable,password)==0);
printf("clave correcta");
esle printf("clave incorrecta");
whlile(!strcmp(variable,password));
//todo en un bucle infinito

ahora encontre otro detalle
como puedo comparar una cadena de octetos (sms_pdu como "sensor_puerta_on") que tiene mas de 30 octetos?

si alguien a trabajado con comparaciones en ccs para formato PDU
por fa una ayuda
de ante mano mil gracias
 
Busca funciones que conviertan un mensaje en formato PDU aqui hay una pagina que lo hace en linea http://www.smartposition.nl/resources/sms_pdu.html#PDU_CONVERTER pero seria que buscaras una pagina donde este el codigo fuente o tambien la puedes hacer solo que manejes bien las conversiones hexadesimales, tendrias que usar algo asi:

printf("AT+CMGL=4");
gets(respuesta);
strcpy(MensajeDecodificado,FuncionDecodificadora(respuesta));

if( strcmp(MensajeDecodificado,"APAGALED") == 0 ){
output_low(pin_a1);
}
if( strcmp(MensajeDecodificado,"APAGALED") == 0 ){
output_high(pin_a2);
}

Repito es solo para que te des una idea, faltarian bastantes comandos mas: el que te selecciona de que memoria vas a leer el mensaje, el que te borre el mensaje luego de que lo procesaste, la funcion que te verifique que el modem te contesto bien, sino lo vas a dejar en un loop infinito etc....
 
Atrás
Arriba