Autor Tema: Composición de un buffer - Duda con implementación  (Leído 1529 veces)

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

Desconectado jonathanPIC888

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 320
Composición de un buffer - Duda con implementación
« en: 20 de Agosto de 2011, 20:18:59 »
Hola a todos   :mrgreen:

Trabajando en mi proyecto sobre control de dispositivos mediante SMS se me presentó una duda que me está costando resolver   :lol:

El tema es el siguiente:

Yo tengo 10 variables que necesito guardar en un buffer y luego enviarlas a un celular mediante mensajes de texto.

Programando en CCS, se me ocurrió crear un buffer mensaje[] y usar la función sprintf para guardar los datos. Pero haciendo lo siguiente:

Código: C
  1. sprintf(mensaje,"Variable1:%u\n\r",var1);
  2. sprintf(mensaje,"Variable2:%u\n\r",var1);
  3. sprintf(mensaje,"Variable3:%u\n\r",var1);
  4. sprintf(mensaje,"Variable5:%u\n\r",var1);
  5. sprintf(mensaje,"Variable6:%u\n\r",var1);
  6. ......................................................
  7. sprintf(mensaje,"Variable10:%u\n\r",var10);
  8.  
  9. fprintf(DEBUG,"%s\n\r",mensaje); // Imprimimos lo que contiene la cadena mensaje.

Solo me imprime Variable10: "contenido de la variable 10" 

Como puedo operar para que me imprima:

variable1: contenido de la variable 1
variable2: contenido de la variable 2...
variable3:
variable4:
.............
variable10:

Es decir, necesito que en la cadena mensaje me queden todas la variables como si de un mensaje de texto se tratara.

También probé con la función strcat, pero no entiendo como concatenar los diferentes mensajes en 1 solo. 

Saludos   ;-)

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Composición de un buffer - Duda con implementación
« Respuesta #1 en: 20 de Agosto de 2011, 20:42:54 »
Una forma:

Código: C
  1. char *Sc;
  2. long k=0;
  3.  
  4. sprintf(&mensaje[k],"Variable1:%u\n\r",var1);
  5. for(Sc=&mensaje[k];*Sc != 0; Sc++);
  6. k+=Sc - &mensaje[k];
  7. // *----------------------------------*
  8. sprintf(&mensaje[k],"Variable2:%u\n\r",var2);
  9. for(Sc=&mensaje[k];*Sc != 0; Sc++);
  10. k+=Sc - &mensaje[k];
  11. // *----------------------------------*
  12. // * * *
  13. sprintf(&mensaje[k],"Variable10:%u\n\r",var10);

Hay que estar seguro que el buffer mensaje tiene el tamaño adecuado.

Si tuvieras las variables en un arreglo:

Código: C
  1. for(j=0,k=0;j<10;j++){
  2.      sprintf(&mensaje[k],"Variable%u:%u\n\r",(j+1),vars[j]);
  3.      for(Sc=&mensaje[k];*Sc != 0; Sc++);
  4.      k+=Sc - &mensaje[k];
  5. }

Saludos!
« Última modificación: 20 de Agosto de 2011, 20:45:29 por Suky »
No contesto mensajes privados, las consultas en el foro

Desconectado jonathanPIC888

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 320
Re: Composición de un buffer - Duda con implementación
« Respuesta #2 en: 20 de Agosto de 2011, 20:51:02 »
Muchas gracias Suky  :)

Tratando de entender lo que pusiste, que haces en este punto:

Código: C
  1. for(Sc=&mensaje[k];*Sc != 0; Sc++);
  2. k+=Sc - &mensaje[k];


Desconectado jonathanPIC888

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 320
Re: Composición de un buffer - Duda con implementación
« Respuesta #3 en: 20 de Agosto de 2011, 21:11:09 »
Ahí lo hice funcionar  :-/

Muchas gracias Suky  ;-)

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Composición de un buffer - Duda con implementación
« Respuesta #4 en: 20 de Agosto de 2011, 21:14:44 »
Muchas gracias Suky  :)

Tratando de entender lo que pusiste, que haces en este punto:

Código: C
  1. for(Sc=&mensaje[k];*Sc != 0; Sc++);
  2. k+=Sc - &mensaje[k];



Se determina la última posición ocupada del buffer.


Saludos!
No contesto mensajes privados, las consultas en el foro


 

anything