Witam Wszystkich w nowym roku
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ę.
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="";
}
}