• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Web serwer na Arduino Uno
#1
Wink 
Witam Wszystkich w nowym roku  Big Grin
jest to mój pierszy post na forum.
Chciałbym prosić o pomoc w napisaniu kodu. Mianowicie założyłem sobie zbudować taki mini serwer web na arduino uno z shieldem ethernetowym. 
Miałby on wygladać nastęująco: 
1. Mieć dwie karty (strony w przegladarce). 
Pierwsza pokazywałaby stan wejść wyjść adrunio.(to umiem zrobić mam przetestowane i działa) 
Druga strona miałabybyć konfiguracyjna na której mogę odczytać i zmienić adres ip, maskę i bramę mojego webserwera i po wpisaniu hasła i wcisnieciu przycisku zapisać dane do arduino przeładować tak aby można było się już zalogować po nowym adresie IP. ( udało mi się zrobić stronę z polami tekstowymi, po wpisaniu ip i kliknieciu wyslij wysyłam adres do arduino tak potrafię już sparsować dane i wyłuskać adres ip w czterech zmiennych ip_1 do ip_4.

W czym mam problem: 
1. Chciałbym aby po wejsciu na stronę konfiguracji w polach tekstowych już był wpisany adres ip aktualnie ustawiony. Który moge skaswać i wpsiać noway adres i wysłać go do arduino.
2. Nie umiem ustawić pola tekstowego w kolumnie tak aby pola były jedno pod drugim.
3. Nie wiem jak zrobić drugą karte  (stronę) aby przełączać się pomiędzy Stanem wejsć a konfiguracją.
Załączam kod i proszę o pomoc z góry dziękuję.

Kod:
#include <SPI.h>
#include <Ethernet.h>

byte mac[] = {
  0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED
};
IPAddress ip(192, 168, 1, 100);

EthernetServer server(80);
String readString;
String ip_1;
String ip_2;
String ip_3;
String ip_4;

int poz1;
int poz2;
int poz3;
int poz4;
int poz5;

char test;

void setup() {

  Serial.begin(9600);
  while (!Serial) {
    ; // czekaj na poloczenie serial
  }
  Serial.println("SERWER ARDUINO");

  Ethernet.begin(mac, ip);

  // Sprawdzam połaczenie ethernet
  if (Ethernet.hardwareStatus() == EthernetNoHardware) {
    Serial.println("BRAK PLYTKI ETHERNET. :(");
    while (true) {
      delay(1); // opóżnienie
    }
  }
  if (Ethernet.linkStatus() == LinkOFF) {
    Serial.println("Kabel ethernetowy nie podłączony.");
  }

  // start serwera
  server.begin();
  Serial.print("ADR SERWE ");
  Serial.println(Ethernet.localIP());
}


void loop() {
  // nasłuch danych  od klienta
  EthernetClient client = server.available();
  if (client) {
    Serial.println("nowy klient");
    boolean currentLineIsBlank = true;
    while (client.connected()) {
      if (client.available()) {
        char c = client.read();

if (readString.length() < 100) {
          readString += c;   }
       
        Serial.write(c);
         if (c == '\n' && currentLineIsBlank) {
          // strona w html
          client.println("HTTP/1.1 200 OK");
          client.println("Content-Type: text/html");
          client.println("Connection: close");
          client.println();
          client.println("<!DOCTYPE HTML>");
          client.println("<html>");
          client.println("<head>");
          client.println("<title>SERWER ARDUINO</title>");
          client.println("</head>");
          client.println("<body>");
          client.println("<h1>Konfiguracja</h1>\n<form action=/config method=GET>Adres IP:<input type=text name=ip value=");
          client.println(">\n<br><br>Default GW IP:    <input type=text name=gw value="); 
          client.println(">\n<br><br>Maska Sieci:   <input type=text name=ms value=");
          client.println(">\n<br><br>New password: <input type=password name=np value=");
          client.println(">\n<br><br>Password: <input type=password name=oldp value=");
         
         
         
          client.println(">\n<br><br><br><br><br><input type=submit \"/?offf\" value=Wyslij>");    // działa jako przycisk w przegladarce
          client.println("</body>");
          client.println("</html>");
          break;
        }
        if (c == '\n') {
          // you're starting a new line
          currentLineIsBlank = true;
        } else if (c != '\r') {
          // you've gotten a character on the current line
          currentLineIsBlank = false;
        }
      }
    }
    // odczytuje adres ip ze strony www i parsuje go na 4 człony ip_1 do ip_4
    if (readString.length() >1){
    poz1 = readString.indexOf("ip");
    poz2 = readString.indexOf(".");
     
       ip_1 = readString.substring(poz1+3,poz2);
       Serial.println("ADRES IP");
       Serial.print("IP1:");
       Serial.println(ip_1);

       poz3 = readString.indexOf(".",poz2+1);
       ip_2 = readString.substring(poz2+1,poz3);
       Serial.print("IP2:");
       Serial.println(ip_2);

       poz4 = readString.indexOf(".",poz3+1);
       ip_3 = readString.substring(poz3+1,poz4);
       Serial.print("IP3:");
       Serial.println(ip_3);

       poz5 = readString.indexOf("&",poz4+1);
       ip_4 = readString.substring(poz4+1,poz5);
       Serial.print("IP4:");
       Serial.println(ip_4);
    }

 
   
   

    //czysczenie bufora
    readString="";
  }
}
 
Odpowiedź
  


Wiadomości w tym wątku
Web serwer na Arduino Uno - przez tomasz36a - 01-01-2020, 22:15
RE: Web serwer na Arduino Uno - przez semi - 02-01-2020, 12:14
RE: Web serwer na Arduino Uno - przez tomasz36a - 02-01-2020, 19:10
RE: Web serwer na Arduino Uno - przez Robson Kerman - 02-01-2020, 20:49
RE: Web serwer na Arduino Uno - przez tomasz36a - 02-01-2020, 22:06
RE: Web serwer na Arduino Uno - przez semi - 03-01-2020, 11:31
RE: Web serwer na Arduino Uno - przez Robson Kerman - 03-01-2020, 12:57
RE: Web serwer na Arduino Uno - przez semi - 03-01-2020, 21:19

Skocz do:


Przeglądający: 1 gości