Pages: [1]   Go Down
Author Topic: Forma de poner la siguiente expresión  (Read 339 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 7
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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?
Logged

Barcelona
Offline Offline
Jr. Member
**
Karma: 0
Posts: 67
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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(){
 
}
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 7
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Barcelona
Offline Offline
Jr. Member
**
Karma: 0
Posts: 67
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

Palencia, Spain
Offline Offline
God Member
*****
Karma: 25
Posts: 568
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
« Last Edit: April 04, 2014, 03:14:55 pm by noter » Logged

Pages: [1]   Go Up
Jump to: