Of course I'm a little bit lost ... Is my first program in arduino and their language, but I'm trying to understand ... I'll try to look this up to see if I learn how to do what I want... Thanks for your time...
I don't know if it's the best way to solve the problem, but it's working for me ...
if (readString.indexOf("?H") > 1)
{
int Pos_Hour = readString.indexOf("H");
int Pos_Minute = readString.indexOf("M", Pos_Hour);
int End = readString.indexOf("H", Pos_Minute);
if(End < 0)
{
End = readString.length() + 1;
}
int tamanhotexto = ((Pos_Minute) - (Pos_Hour+2));
if (tamanhotexto>3)
tamanhotexto=3;
char matriztexto[3];
readString.substring((Pos_Hour+2), (Pos_Minute-1)).toCharArray(matriztexto, tamanhotexto);
AlarmHora=atoi(matriztexto);
tamanhotexto = ((End) - (Pos_Minute+2));
if (tamanhotexto > 3)
tamanhotexto = 3;
readString.substring((Pos_Minute+2), (End-1)).toCharArray(matriztexto, tamanhotexto);
AlarmMinutos=atoi(matriztexto);
}
I'll put here the full code if someone has the same problem and want to use the same solution ....
#include <SPI.h>
#include <Ethernet.h>
#include <Time.h>
#include <TimeAlarms.h>
int rele1 = 2;
int AlarmHora = 0;
int AlarmMinutos = 0;
EthernetServer servidor(8080);
byte mac[]={0xDE,0xAD,0xBE,0xEF,0xFE,0xED}; //MAC
IPAddress ip(169, 254, 23, 17); //IP
String readString=String(30); //le os caracteres de uma sequencia em cadeia.
String state=String(6);
void setup() {
Ethernet.begin(mac, ip); //Inicializamos com as direccões designadas
servidor.begin();
Serial.begin(9600);
setTime(0,0,0,1,1,11); // define hora
pinMode(rele1, OUTPUT);
digitalWrite(rele1, LOW);
state="OFF ";
}
void loop()
{
//EthernetClient Crea um cliente
EthernetClient cliente= servidor.available();
if(cliente) {
boolean lineaenblanco=true;
while(cliente.connected()) {
if(cliente.available()) {
char c=cliente.read();
if(readString.length()<30) {
readString.concat(c);
Serial.print("The client request is: [");
Serial.print(readString);
Serial.println("]");
//Cliente conectado
}
if(c=='\n' && lineaenblanco)
{
if (readString.indexOf("?H") > 1)
{
int Pos_Hour = readString.indexOf("H");
int Pos_Minute = readString.indexOf("M", Pos_Hour);
int End = readString.indexOf("H", Pos_Minute);
if(End < 0)
{
End = readString.length() + 1;
}
int tamanhotexto = ((Pos_Minute) - (Pos_Hour+2));
if (tamanhotexto>3)
tamanhotexto=3;
char matriztexto[3];
readString.substring((Pos_Hour+2), (Pos_Minute-1)).toCharArray(matriztexto, tamanhotexto);
AlarmHora=atoi(matriztexto);
tamanhotexto = ((End) - (Pos_Minute+2));
if (tamanhotexto > 3)
tamanhotexto = 3;
readString.substring((Pos_Minute+2), (End-1)).toCharArray(matriztexto, tamanhotexto);
AlarmMinutos=atoi(matriztexto);
}
// vamos verificar se o LED deve ser ligado
if(readString.indexOf("r1")>=0)
{
// O Led vai ser ligado
digitalWrite(rele1, HIGH);
state="ON ";
}
// Se a string possui o texto L=Desligar
if(readString.indexOf("d1")>=0)
{
// O Led vai ser desligado
digitalWrite(rele1, LOW);
state="OFF ";
}
//HTTP estándar
cliente.println("HTTP/1.1 200 OK");
cliente.println("Content-Type: text/html");
cliente.println(); //Página Web en HTML
cliente.println("<html>");
cliente.println("<head>");
cliente.println("<title>Arduino</title>");
cliente.println("</head>");
cliente.println("<body width=100% height=100%>");
cliente.println("<center>");
cliente.print("<B><span style=\"color: #000080;\">");
cliente.print("<h1>O Arduino do....</h1>");
cliente.println("<input type=submit value='RELE 2:ON' style=width:200px;height:35px onClick=location.href='./?r1\'>");
cliente.println("<input type=submit value='RELE 2:OFF' style=width:200px;height:35px onClick=location.href='./?d1\'>");
cliente.print("<B><span style=\"color: #800000;\">");
cliente.println("<B><span style=\"font-size:11px;\">");
cliente.print(" ESTADO: ");
cliente.print(state);
cliente.print("
");
cliente.print("Alarm: ");
if (AlarmHora<10)
cliente.print("0");
cliente.print(AlarmHora);
cliente.print(":");
if (AlarmMinutos<10)
cliente.print("0");
cliente.print(AlarmMinutos);
cliente.println("
");
cliente.println("<form method=get>Hora:<input type=text size=2 name=H> Min:<input type=text size=2 name=M> <input name=E type=submit value=Submit></form>");
cliente.println("</center>");
cliente.println("</body>");
cliente.println("</html>");
cliente.stop();
//Coneção terminada com o cliente
readString="";
}
}
}
}
}
You might be interested in using a text box web page like below where you enter the desired value.
//zoomkat 12-08-12
//get submit box code
//for use with IDE 1.0
//open serial monitor to see what the arduino receives
//use the \ slash to escape the " in the html or use a '
//address will look like http://192.168.1.102:84 when submited
//for use with W5100 based ethernet shields
//note that the below bug fix may be required
// http://code.google.com/p/arduino/issues/detail?id=605
#include <SPI.h>
#include <Ethernet.h>
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; //physical mac address
byte ip[] = { 192, 168, 1, 102 }; // ip in lan
byte gateway[] = { 192, 168, 1, 1 }; // internet access via router
byte subnet[] = { 255, 255, 255, 0 }; //subnet mask
EthernetServer server(84);; //server port
String readString;
//////////////////////
void setup(){
pinMode(5, OUTPUT); //pin selected to control
//start Ethernet
Ethernet.begin(mac, ip, gateway, gateway, subnet);
server.begin();
//enable serial data print
Serial.begin(9600);
Serial.println("server text box test1"); // so I can keep track of what is loaded
}
void loop(){
// Create a client connection
EthernetClient client = server.available();
if (client) {
while (client.connected()) {
if (client.available()) {
char c = client.read();
//read char by char HTTP request
if (readString.length() < 100) {
//store characters to string
readString += c;
//Serial.print(c);
}
//if HTTP request has ended
if (c == '\n') {
///////////////
Serial.println(readString); //see what was captured
//now output HTML data header
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println();
client.println("<HTML>");
client.println("<HEAD>");
client.println("<TITLE>Arduino GET test page</TITLE>");
client.println("</HEAD>");
client.println("<BODY>");
client.println("<H1>HTML form GET example</H1>");
client.println("<FORM ACTION='/' method=get >"); //uses IP/port of web page
client.println("Pin 5 'on5' or 'off5': <INPUT TYPE=TEXT NAME='LED' VALUE='' SIZE='25' MAXLENGTH='50'>
");
client.println("<INPUT TYPE=SUBMIT NAME='submit' VALUE='Change Pin 5!'>");
client.println("</FORM>");
client.println("
");
client.println("</BODY>");
client.println("</HTML>");
delay(1);
//stopping client
client.stop();
/////////////////////
if(readString.indexOf("on5") >0)//checks for on
{
digitalWrite(5, HIGH); // set pin 5 high
Serial.println("Led On");
}
if(readString.indexOf("off5") >0)//checks for off
{
digitalWrite(5, LOW); // set pin 5 low
Serial.println("Led Off");
}
//clearing string for next read
readString="";
}
}
}
}
}