Autor Tema: Ayuda Buscar en una cadena  (Leído 2686 veces)

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

Desconectado salvador512

  • PIC10
  • *
  • Mensajes: 1
Ayuda Buscar en una cadena
« 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

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re: Ayuda Buscar en una cadena
« Respuesta #1 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.

Desconectado dogflu66

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3549
Re: Ayuda Buscar en una cadena
« Respuesta #2 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 ........
Saludos desde Granada, España.

Desconectado MerLiNz

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2463
Re: Ayuda Buscar en una cadena
« Respuesta #3 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
  • !=cadena
  • ) return 0;

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();


 

anything