[solucionado] transformar función a libreria (buscar keyword y pasarlo a int)
hola estimados,
estuve investigando por hay y si con ciertos códigos que uni y modifique para lograr lo que necesitaba.
tomar la cadena que envía el navegador el famoso ("123.13.13.1?sensor1=001&sensor2=022&sensor3=303&sensor4=444&sensor5=005&sensor6=006")
y que me leyera el valor del key sensorx y me lo devolviera como un int para poder usarlo como set de alguna variable.
ahora quiero hacerlo una librería para incluirlo de manera mas fácil la función pero tengo error, al pasarlo librería, les agradecería una orientación,
los códigos son:
funcion
webtoint.ccp
webtoint.h
saludos
estuve investigando por hay y si con ciertos códigos que uni y modifique para lograr lo que necesitaba.
tomar la cadena que envía el navegador el famoso ("123.13.13.1?sensor1=001&sensor2=022&sensor3=303&sensor4=444&sensor5=005&sensor6=006")
y que me leyera el valor del key sensorx y me lo devolviera como un int para poder usarlo como set de alguna variable.
ahora quiero hacerlo una librería para incluirlo de manera mas fácil la función pero tengo error, al pasarlo librería, les agradecería una orientación,
los códigos son:
funcion
code: [select]
void setup() {
// put setup code here, run once:
serial.begin(9600);
}
//define largos de variable "?sensor1=001&sensor2=022&sensor3=303&sensor4=444&sensor5=005&sensor6=006"
int lenvarname = 7; //largo del nombre de la variable, len name of variable ej: "sensor1" len = 7
int lenvardig = 3; //largo de comando de la variable, len name of command ej: "000" len = 3
//tranforma el substring web int
int webtoint(string incomingweb,string keyweb){
int indexvar = incomingweb.indexof(keyweb); //obtiene el inicio del nombre de la variable
string comando = incomingweb.substring(indexvar+lenvarname+1,indexvar+lenvarname+lenvardig+1);//crea el substring para meter la tranformacion
// string substring = comando;
// crear un array con el largo de la cadena mas un null
char valuearray[comando.length() + 1];
// copiar el sub string en el array
comando.tochararray(valuearray, sizeof(valuearray));
// convertir el array en int
int value = atoi(valuearray);
//devuelve el valor transformado
return value;
}
void loop() {
// put main code here, run repeatedly:
char *data ="123.13.13.1?sensor1=001&sensor2=022&sensor3=303&sensor4=444&sensor5=005&sensor6=006";
//14 8 10 8
string cadenaserver = data; //copia informacion del servidor como cadena
int web1 = webtoint(cadenaserver , "sensor6");
serial.println(web1);
delay(2000);
}
webtoint.ccp
code: [select]
#include "webtoint.h";
#include "arduino.h";
//define largos de variable "?sensor1=001&sensor2=022&sensor3=303&sensor4=444&sensor5=005&sensor6=006"
int lenvarname = 7;//largo del nombre del key leer
int lenvardig = 3;//numero de caracteres del numero transformar
//tranforma el substring web int
int webtoint(string incomingweb,string keyweb){
int indexvar = incomingweb.indexof(keyweb); //obtiene el inicio del nombre de la variable
string comando = incomingweb.substring(indexvar+lenvarname+1,indexvar+lenvarname+lenvardig+1);//crea el substring para meter la tranformacion
//
string substring = comando;
// crear un array con el largo de la cadena mas un null
char valuearray[comando.length() + 1];
// copiar el sub string en el array
comando.tochararray(valuearray, sizeof(valuearray));
// convertir el array en int
int value = atoi(valuearray);
//devuelve el valor transformado
return value;
}
webtoint.h
code: [select]
#ifndef webtoint_h
#define webtoint_h
#include "arduino.h";
class webtoint
{
public:
int webtoint(string incomingweb,string keyweb);
int lenvarname;
int lenvardig;
private:
string comando;
char valuearray;
int value;
int _lenvarname;
int _lenvardig;
};
#endif
saludos
ayudaría si copiaras el error que te da, suele tener pistas para localizar el fallo.
no mirado muy en profundidad tu código, pero creo que los variables como lenvarname y lenvardiag deberías pasarlas como argumento y no declararlas con un valor fijo en el código de la función ya que la idea es crear una librería que acepete otro tamaños supongo.
no mirado muy en profundidad tu código, pero creo que los variables como lenvarname y lenvardiag deberías pasarlas como argumento y no declararlas con un valor fijo en el código de la función ya que la idea es crear una librería que acepete otro tamaños supongo.
Arduino Forum > International > Español > Software (Moderators: surbyte, Hector_A) > [solucionado] transformar función a libreria (buscar keyword y pasarlo a int)
arduino
Comments
Post a Comment