Arduino-uprava programu presmer. na jinou stranku-[VYRESENO]
Moderátor: Moderátoři
resime tvuj problem.... nebo uz nechces ?
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
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 90 x
Naposledy upravil(a) MiloPS3 dne 06 úno 2015, 20:11, celkem upraveno 2 x.
uz sem to nasel, leti to uz par dni na F http://arduino.cz/e-book-zdarma/?utm_so ... mpaign=slf
aha, tak to jsm nepochopil... moje chyba
jj pomoct stále chci.
Odzkoušel jsem ten upravený kód a na řádku:
to hlásí chybu:
'client'was not declared in this scope
![Sad :(](./images/smilies/icon_sad.gif)
Odzkoušel jsem ten upravený kód a na řádku:
Kód: Vybrat vše
client.println("HTTP/1.1 200 OK");
'client'was not declared in this scope
jj díky za nápovědu... teď už to chybu nehlásí, ale po nahrátí se stránka http://192.168.0.88 nenačte, tak jsem dle toho fora posunul i to
zde je to celé
:
[/code]
Kód: Vybrat vše
client.stop();
![Sad :(](./images/smilies/icon_sad.gif)
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();
}
}
}
}
}
pripoj si to na terminal , nahraj tam tuhle prilohu new 2.txt (aktualizovano) a pak sem postni do "code"vsechno co ti to vypsalo
nahrál jsem to a vše prošlo ok stránka se zobrazí a po kliknutí na stránku1 se zobrazí stránka 2 a po kliknutí na tlačítko se to vrátí zase zpět na stránku 1 a ve výpise je:
mám dotaz zdali je podle výpisu vše ok, protože takto to vypadá, že to funguje?
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
jen ještě pro upřesnění takto jsou všechny ty řádky viz níže odstraněné...
nevynechal jsem ještě něco co tam bylo z důvodu testu?
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;
}
}
}
}
}