Arduino-uprava programu presmer. na jinou stranku-[VYRESENO]
Moderátor: Moderátoři
pokud upravis program a chces s nim pomoct tak ho sem nahraj a dej ho do "code",(popripade edituj predchozi a napis to) aby sme vedely co si tam s tim vyved , to samy kdyz ti to vyhodi nejakej error nebo hlaseni..
rozumime ?
stahni si prirucku, procti si to...
program beha ve smycce LOOP, tam musis zakomponovat to vyhodnoceni odpovedi,a kdyz tam nacpes celou funkci s hranatyma zavorkama a jeste z nazvem main tak se nesmis divit ze ti to ani neprelozi..
vydel bych to asi takle (priloha)
akorad netusim jak je to s tim (client.available), vyskousej a uvidis
- Přílohy
-
new 2.txt- (4.04 KiB) Staženo 121 x
Odzkoušel jsem ten upravený kód a na řádku:
Kód: Vybrat vše
client.println("HTTP/1.1 200 OK");
to hlásí chybu:
'client'was not declared in this scope
Kód: Vybrat vše
client.stop();
zde je to celé
Kód: Vybrat vše
#include <SPI.h>
#include <Ethernet.h>
#include <stdio.h>
// zde si upravte podle sebe
byte mac[] = { 0xD4, 0xAD, 0xBE, 0xEF, 0xFE, 0x7D };
// IP adresa
IPAddress ip(192,168,0, 88);
// port
EthernetServer server(80);
EthernetClient client;
int odpoved [25]; //GET / HTTP/1.1
byte odpoved_len=0;
//**********************************************
void stranka_jedna()
{
// odešle klasickou hlavičku HTML stránky
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println("Connection: close");
client.println();
client.println("<!DOCTYPE HTML>");
// zde již klasická html data
client.println("<html>");
client.println("<head>");
// Název stránky
client.println("<title>Arduinio Server</title>");
client.println("</head>");
client.println("<body>");
// vypíše text
client.println("<a href='http://192.168.0.88?2page'><button style='background:red;width:20%;height:30px'>Nova stranka2</button></a>");
client.println("</body>");
client.println("</html>");
//ukončí přenos
client.stop();
}
//****************************************************
void stranka_dve()
{
// odešle klasickou hlavičku HTML stránky
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println("Connection: close");
client.println();
client.println("<!DOCTYPE HTML>");
// zde již klasická html data
client.println("<html>");
client.println("<head>");
// Název stránky
client.println("<title>Arduinio Server</title>");
client.println("</head>");
client.println("<body>");
// vypíše text
client.println("<a href='http://192.168.0.88?1page'><button style='background:red;width:20%;height:30px'>Nova stranka1</button></a>");
client.println("</body>");
client.println("</html>");
//ukončí přenos
//client.stop();
}
//*****************************************************
int vyhodnot_odpoved()
{
for(odpoved_len=0;((!(odpoved[odpoved_len]=='?'))&&(!(odpoved[odpoved_len]=='\n')));odpoved_len++)
{}
byte znak=odpoved[odpoved_len+1];
odpoved_len=0;
if((znak<0x39)&&(znak>0x30))return(znak);
else return(0x30);
}
//*****************************************************
void setup()
{
Serial.begin(9600);
// inicalizace sítě
Ethernet.begin(mac, ip);
// inicializace serveru
server.begin();
}
//******************************************************
void loop()
{
// když je připojen klient, zjistíme, zda jsou odeslána data
// od klienta směrem k nám
EthernetClient client = server.available();
// dokud je klient připojen
while (client.connected())
{
// čti data od něj dokud nenarazíš na znak nového řádku
if (client.available())
{
char c = client.read();
Serial.print(c);
odpoved [odpoved_len++]=c;
if (c == '\n')
{
//odpoved[odpoved_len]=0;
switch(vyhodnot_odpoved())
{
case 0x31:stranka_jedna();
break;
case 0x32:stranka_dve();
break;
default:stranka_jedna();
break;
client.stop();
}
}
}
}
}
Kód: Vybrat vše
op
loop
loop
loop
loop
loop
client.connected
Gclient.connected
Eclient.connected
Tclient.connected
client.connected
/client.connected
client.connected
Hclient.connected
Tclient.connected
Tclient.connected
Pclient.connected
/client.connected
1client.connected
.client.connected
1client.connected
client.connected
71698432473272848480474946491310
znak=0
0
stranka_jedna_def
stranka_jedna
stranka_jedna_konec
loop
loop
loop
loop
loop
loop
loop
client.connected
Gclient.connected
Eclient.connected
Tclient.connected
client.connected
/client.connected
?client.connected
2client.connected
pclient.connected
aclient.connected
gclient.connected
eclient.connected
client.connected
Hclient.connected
Tclient.connected
Tclient.connected
Pclient.connected
/client.connected
1client.connected
.client.connected
1client.connected
client.connected
71698432476350112971031013272848480474946491310
znak=50
2
stranka_dve
stranka_dve_konec
loop
loop
loop
loop
loop
loop
loop
client.connected
Gclient.connected
Eclient.connected
Tclient.connected
client.connected
/client.connected
?client.connected
1client.connected
pclient.connected
aclient.connected
gclient.connected
eclient.connected
client.connected
Hclient.connected
Tclient.connected
Tclient.connected
Pclient.connected
/client.connected
1client.connected
.client.connected
1client.connected
client.connected
71698432476349112971031013272848480474946491310
znak=49
1
stranka_jedna
stranka_jedna_konec
loop
mám dotaz zdali je podle výpisu vše ok, protože takto to vypadá, že to funguje?
nevynechal jsem ještě něco co tam bylo z důvodu testu?
Kód: Vybrat vše
#include <SPI.h>
#include <Ethernet.h>
#include <stdio.h>
// zde si upravte podle sebe
byte mac[] = { 0xD4, 0xAD, 0xBE, 0xEF, 0xFE, 0x7D };
// IP adresa
IPAddress ip(192,168,0, 88);
// port
EthernetServer server(80);
EthernetClient client;
int odpoved [25]; //GET / HTTP/1.1
byte odpoved_len=0;
//**********************************************
void stranka_jedna()
{
// odešle klasickou hlavičku HTML stránky
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println("Connection: close");
client.println();
client.println("<!DOCTYPE HTML>");
// zde již klasická html data
client.println("<html>");
client.println("<head>");
// Název stránky
client.println("<title>Arduinio Server</title>");
client.println("</head>");
client.println("<body>");
// vypíše text
client.println("<a href='http://192.168.0.88?2page'><button style='background:red;width:20%;height:30px'>Nova stranka2</button></a>");
client.println("</body>");
client.println("</html>");
//ukončí přenos
client.stop();
}
//****************************************************
void stranka_dve()
{
// odešle klasickou hlavičku HTML stránky
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println("Connection: close");
client.println();
client.println("<!DOCTYPE HTML>");
// zde již klasická html data
client.println("<html>");
client.println("<head>");
// Název stránky
client.println("<title>Arduinio Server</title>");
client.println("</head>");
client.println("<body>");
// vypíše text
client.println("<a href='http://192.168.0.88?1page'><button style='background:red;width:20%;height:30px'>Nova stranka1</button></a>");
client.println("</body>");
client.println("</html>");
//ukončí přenos
client.stop();
}
//*****************************************************
int vyhodnot_odpoved()
{
for(odpoved_len=0;((!(odpoved[odpoved_len]=='?'))&&(!(odpoved[odpoved_len]=='\n')));odpoved_len++)
{}
byte znak=odpoved[odpoved_len+1];
odpoved_len=0;
if((znak<0x39)&&(znak>0x30))return(znak);
else return(0x30);
}
//*****************************************************
void setup()
{
Serial.begin(9600);
// inicalizace sítě
Ethernet.begin(mac, ip);
// inicializace serveru
server.begin();
}
//******************************************************
void loop()
{
// když je připojen klient, zjistíme, zda jsou odeslána data
// od klienta směrem k nám
client = server.available();
// dokud je klient připojen
while (client.connected())
{
// čti data od něj dokud nenarazíš na znak nového řádku
if (client.available())
{
char c = client.read();
Serial.print(c);
odpoved [odpoved_len++]=c;
if (c == '\n')
{
Serial.print('\n');
odpoved[odpoved_len]=0;
byte i;
for(i=0;odpoved[i]!='\0';i++)Serial.print(odpoved[i]);
//Serial.print(odpoved);
Serial.print('\n');
c=vyhodnot_odpoved();
Serial.print(c);
Serial.print('\n');
switch(c)
{
case 0x31:stranka_jedna();
break;
case 0x32:stranka_dve();
break;
default:Serial.print("stranka_jedna_def\n");
stranka_jedna();
break;
}
}
}
}
}