Ola, eu estou me batendo em como extrair uma informação de valor da string.... (perdão se estiver falando errado, estou aprendendo)
Ex:
http://192.168.1.177:8888/?hliga=22&LA=Trocar+Horario
como fazer o arduino pegar só o valor 22 ? que ira para uma variavel do RTC...
if(readString.indexOf("LA") >0){
// EXECUTA O COMANDO...
HoraLiga = readString.indexOf("hliga");
Serial.println(HoraLiga);
} // FIM COMANDO
a ideia é eu setar numa box de texto no HTML dentro do arduino o valor da variavel "HoraLiga"
Tags:
Olá André
Se na URL sempre vierem os parâmetros hliga e LA, então você pode fazer o seguinte:
1) Obtenha a posição do "=" antes do valor (22)
2) Obtenha a posição do "&" depois do valor (22)
3) Use o método substring para pegar o valor desejado.
Fiz um teste aqui em casa e deu certo. Veja o sketch que usei para testar:
String readString;
String HoraLiga;
void setup() {
readString = "http://192.168.1.177:8888/?hliga=22&LA=Trocar+Horario";
Serial.begin(9600);
}
void loop() {
if(readString.indexOf("hliga") > 0){
int posIgual = readString.indexOf("=") + 1; // Pega a posição do = antes do valor
int posE = readString.indexOf("&"); // Pega a posição do & depois do valor
HoraLiga = readString.substring(posIgual,posE);
Serial.println(HoraLiga);
delay(3000);
}
}
Falta só converter a variável horaliga para int se precisar. Pode fazer isso: horaliga = HoraLiga.toInt())
Abraço,
José Cintra
Caro Jose, seu codigo me ajudou muito, consegui extrair o valor, porem ele repete o valor no no Seial 10 x eu preciso que este valor se repita apena 1 vez segue abaixo parte do meu codigo
if (client) {
while (client.connected()){
if (client.available()){
char c = client.read();
if (readString.length() < 30)// ler caractere por caractere vindo do HTTP
{
readString += (c);// armazena os caracteres para string
}
if (c == '\n')
{
if(readString.indexOf("liga") > 0){
int posIgual = readString.indexOf("=") + 1; // Pega a posição do = antes do valor
int posE = readString.indexOf("f"); // Pega a posição do f depois do valor
int horaliga;
HoraLiga = readString.substring(posIgual,posE);
horaliga = HoraLiga.toInt();
Serial.println(HoraLiga);
//imprimeBrowser(client);
readString="";//limpa string para a próxima leitura
digitalWrite(rele[horaliga], !statusrele[horaliga]);
statusrele[horaliga] = !statusrele[horaliga];
delay(200);
client.stop(); // parar cliente
// Serial.println(HoraLiga);
}
}
}
}
}
}
void setup() {
/*
a primeira linha do que vc recebe no seu webserver é mais ou menos isso:
GET /?hliga=22&LA=Trocar+Horario HTTP/1.1
Supondo que voce tenha armazenado em uma variavel String
*/
// put your setup code here, to run once:
String msgClient = "GET /?hliga=22&LA=Trocar+Horario HTTP/1.1";
int horaLiga;
String strLA;
int index;
//pega primeira variavel armazena em horaLiga
if ( (index=msgClient.indexOf("hliga=")) >= 0) {
int iFinal;
//busca '&'
for (iFinal=index+6; msgClient.charAt(iFinal) != '&'; iFinal++)
;
horaLiga = (msgClient.substring(index+6, iFinal)).toInt();
}
//pega segunda variavel armazena em strLA
if ( (index=msgClient.indexOf("LA=")) >= 0) {
int iFinal;
//busca ' '
for (iFinal=index+3; msgClient.charAt(iFinal) != ' '; iFinal++)
;
strLA = msgClient.substring(index+3, iFinal);
}
Serial.begin(9600);
Serial.print("horaLiga="); Serial.println(horaLiga);
Serial.print("LA="); Serial.println(strLA);
}
void loop() {
// put your main code here, to run repeatedly:
}
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por