MOdulo Gsm y pic18f4550

#1
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!
 
#2
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
 
#3
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
 
#4
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....
 

Temas similares

Arriba