Arduino-uprava programu presmer. na jinou stranku-[VYRESENO]

Diskuze a poradna o programátorech a programování různých obvodů

Moderátor: Moderátoři

Zpráva
Autor
Uživatelský avatar
MiloPS3
Příspěvky: 279
Registrován: 07 srp 2010, 00:00

#31 Příspěvek od MiloPS3 »

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
Přílohy
new 2.txt
(4.04 KiB) Staženo 122 x
Naposledy upravil(a) MiloPS3 dne 06 úno 2015, 20:11, celkem upraveno 2 x.
Uživatelský avatar
MiloPS3
Příspěvky: 279
Registrován: 07 srp 2010, 00:00

#32 Příspěvek od MiloPS3 »

uz sem to nasel, leti to uz par dni na F http://arduino.cz/e-book-zdarma/?utm_so ... mpaign=slf
Uživatelský avatar
jiri255
Příspěvky: 168
Registrován: 18 dub 2013, 00:00

#33 Příspěvek od jiri255 »

aha, tak to jsm nepochopil... moje chyba :( jj pomoct stále chci.
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
Uživatelský avatar
MiloPS3
Příspěvky: 279
Registrován: 07 srp 2010, 00:00

#34 Příspěvek od MiloPS3 »

Uživatelský avatar
jiri255
Příspěvky: 168
Registrován: 18 dub 2013, 00:00

#35 Příspěvek od jiri255 »

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

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();
                         }
                       
                      }
           
           
                }
     }
 }
[/code]
Uživatelský avatar
MiloPS3
Příspěvky: 279
Registrován: 07 srp 2010, 00:00

#36 Příspěvek od MiloPS3 »

pripoj si to na terminal , nahraj tam tuhle prilohu new 2.txt (aktualizovano) a pak sem postni do "code"vsechno co ti to vypsalo
Uživatelský avatar
jiri255
Příspěvky: 168
Registrován: 18 dub 2013, 00:00

#37 Příspěvek od jiri255 »

to tam nejde nahrát :( hlásí to chybu:
call of overloaded 'print(int [25])' is ambiguous
Uživatelský avatar
MiloPS3
Příspěvky: 279
Registrován: 07 srp 2010, 00:00

#38 Příspěvek od MiloPS3 »

tak se sakra snaz a neco s tim udelej ... chjo
skus to ...(aktualizovano new 2.txt )
Uživatelský avatar
jiri255
Příspěvky: 168
Registrován: 18 dub 2013, 00:00

#39 Příspěvek od jiri255 »

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:

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?
Uživatelský avatar
MiloPS3
Příspěvky: 279
Registrován: 07 srp 2010, 00:00

#40 Příspěvek od MiloPS3 »

Jo,vypada to ze jo..... :aplause:
Muzes si ten debug odstranit
Uživatelský avatar
jiri255
Příspěvky: 168
Registrován: 18 dub 2013, 00:00

#41 Příspěvek od jiri255 »

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?

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;
                        }
                     
                     }
         
         
               }
    }
}
Uživatelský avatar
jiri255
Příspěvky: 168
Registrován: 18 dub 2013, 00:00

#42 Příspěvek od jiri255 »

tak odzkoušeno otestováno a je to super funguje to přesně, tak jak jsem potřeboval... děkuji za pomoc a trpělivost :D
Uživatelský avatar
MiloPS3
Příspěvky: 279
Registrován: 07 srp 2010, 00:00

#43 Příspěvek od MiloPS3 »

od te doby co vymysleli penize se nedekuje... :agree:
Odpovědět

Zpět na „Programování PIC, ATMEL, EEPROM a dalších obvodů“