TODOPIC

Microcontroladores PIC => Lenguaje Basic para microcontroladores PIC => Mensaje iniciado por: salvador512 en 06 de Febrero de 2015, 18:58:33

Título: Ayuda Buscar en una cadena
Publicado por: salvador512 en 06 de Febrero de 2015, 18:58:33
Hola a todos , estoy programando en un pic un sistema en donde usando un modulo GSM , al recibir una llamada de un determinado numero este prende un led.

El problema es que no se filtrar el numero de telefono

El comando que me regresa el modulo GSM por via RS232 es asi
+CLIP: “+5691234567”,145,,,,0

y me gustaría filtrar “+5691234567” para comparar con un numero ya guardado.

Estoy programando en Pic Basic de Proton , pero si alguien sabe como hacerlo en C , me mudo a C
Título: Re: Ayuda Buscar en una cadena
Publicado por: KILLERJC en 06 de Febrero de 2015, 19:09:57
si tuvieras en C todo ese dato en un array ( recibido desde la UART )

cadena[]= '+CLIP: \“+5691234567\”,145,,,,0'

Tendrias tu valor desde cadena[8] a cadena[18] sino me equivoco.

o podrias buscar el primer " y pasar por todos los demas hasta llegar al proximo ". Y ya tendrias tu numero, no se que manejo de string tiene basic. Pero en C parece bastante simple.
Título: Re: Ayuda Buscar en una cadena
Publicado por: dogflu66 en 08 de Febrero de 2015, 22:40:38
En basic Pic Simulator IDE se podría proceder de la siguiente manera:

string_var = "ab6060606 y mas cosas"
string_telf = "6060606"
string_var1 = MidStr(string_var, 3, 7)

MidStr del ejemplo; es un comando o función que extrae 7 caracteres de la cadena string_var, comenzando por el tercero de izquierda a derecha.

If string_var1 = string_telf then ........
Título: Re: Ayuda Buscar en una cadena
Publicado por: MerLiNz en 09 de Febrero de 2015, 08:23:01
no hace falta complicarse tanto, simplemente con una comparacion vale.

Si siempre sera +CLIP: “+5691234567”,145,,,,0 podrias hacerlo asi:

clip[]="+CLIP: “+5691234567”,145,,,,0";

int compara() {
for(x=0;x<num;x++)
if(clip
return 1;
}

en "x<num" (num) tienes que poner el numero de caracteres a comparar (no me he parado a contarlos).

la funcion seria

if(compara()) enciendeled();