Go Down

Topic: Forma de poner la siguiente expresión (Read 368 times) previous topic - next topic

Cromo24

Buenas,
Estoy intentado poner en una sola línea una expresión que contiene variables para formar una URL que mi arduino visitará en un momento determinado.
Existe la posibilidad de poner lo siguiente en una sola línea:
...
    client.print("GET /ardu/insertar.php?temperatura=");
    client.print(t);
    client.print("&humedad=");
    client.print(h);
--
Con esa expresión consigo lo siguiente: /ardu/insertar.php?temperatura=12&humedad=12
....
hay alguna forma de poder ponerlo asi:
cliente.println("GET /ardu/insertar.php?temperatura="t"&humedad="h);

¿No sé si me habéis entendido?

pacoooh

Hola Cromo24.

dale vuelta a este código que seguro te saca del aprieto, y no consumirás tanta memoria

Quote

// Creamos lineas
PROGMEM char   lineadatos0[]="GET /ardu/insertar.php?temperatura=%d&humedad=%d";
PROGMEM char   lineadatos1[]="Antonio tenia %d perros y %d gallinas";
PROGMEM char   lineadatos2[]="";

PROGMEM char *_gdatos[] = { lineadatos0,lineadatos1,lineadatos2};

char *gdatos(byte linea){// retorna la linea que se le pide de _gdatos
     char evento[200];char *_evento=evento;char c;
  char *even=(char*)pgm_read_word(&(_gdatos[linea])) ;
while (c = pgm_read_byte(even++)){
*_evento++=c;}
*_evento = '\0';
return evento;
  }


char *crea_linea_t_h(unsigned int t,unsigned int h){
  char datos[300]="";char *_datos=datos;
sprintf(_datos,gdatos(0),t,h);// cambia en esta linea gdatos(1)
strcat(_datos,"\0");// eliminar si interesa
 
   // Serial.println(datos);
     
  return datos;
}
  //////////////////////////////////////////////////////// 
     unsigned int t=24;
unsigned int h=65;


void setup(){
 
  Serial.begin(9600);
  Serial.println(  crea_linea_t_h(t,h));

//return;

}


void loop(){
 
}

Cromo24

Gracias por responder.
Algo complejo. No hay ninguna forma más simple?

pacoooh

Hola cromo24
Si se es algo lioso el código, prueba a utilizar String:

cliente.println("GET /ardu/insertar.php?temperatura="+String(t)+"&humedad="+String(h));



Saludos

noter

#4
Apr 03, 2014, 10:28 pm Last Edit: Apr 04, 2014, 10:14 pm by noter Reason: 1
La solución la tienes escondida en la primera respuesta. Echa un vistazo a la función sprint de C.

char buffer[100];
sprintf(buffer, " /ardu/insertar.php?temperatura=%d&humedad=%d", temperatura, humedad);
serial.print(buffer);

Edito: perdón por el error, que había puesto char *buffer[100].
Me sobraba el asterisco.

Go Up