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: 259
Registrován: 07 srp 2010, 02: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 90 x
Naposledy upravil(a) MiloPS3 dne 06 úno 2015, 20:11, celkem upraveno 2 x.

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

#34 Příspěvek od MiloPS3 »


Uživatelský avatar
jiri255
Příspěvky: 168
Registrován: 18 dub 2013, 02: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: 259
Registrován: 07 srp 2010, 02: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, 02: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: 259
Registrován: 07 srp 2010, 02: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, 02: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: 259
Registrován: 07 srp 2010, 02: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, 02: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, 02: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: 259
Registrován: 07 srp 2010, 02: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ů“