INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Webserver URL nach Eingaben zurücksetzen
17.01.2020, 15:01
Beitrag #1
Webserver URL nach Eingaben zurücksetzen
Hallo,

ich habe einen Webserver auf einem Arduino Nano zur Ansteuerungen von Servos laufen. Es funktioniert alles einwandfrei.

Jedoch bleibt im Browser in der Adresszeile der Befehl hinter der IP stehen.
Code:
http://192.168.111.3/?3runter=%26%238609%3B%26%238609%3B%26%238609%3B

Gibt es eine Möglichkeit alles hinter der IP zu löschen?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
17.01.2020, 15:07 (Dieser Beitrag wurde zuletzt bearbeitet: 17.01.2020 15:13 von Tommy56.)
Beitrag #2
RE: Webserver URL nach Eingaben zurücksetzen
Das Formular mit POST abschicken oder auf eine Seite im ROOT redirecten.

Gruß Tommy

Edit: Oder eine passende Antwortseite zurück geben.

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
17.01.2020, 15:34
Beitrag #3
RE: Webserver URL nach Eingaben zurücksetzen
Wenn ich das über POST mache, dann funktioniert meine Abfrage nicht mehr :-(

Wie kann ich denn auf eine Seite im Root verlinken?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
17.01.2020, 15:39
Beitrag #4
RE: Webserver URL nach Eingaben zurücksetzen
(17.01.2020 15:34)kiximek schrieb:  Wenn ich das über POST mache, dann funktioniert meine Abfrage nicht mehr :-(

Wie kann ich denn auf eine Seite im Root verlinken?
Dann machst Du was falsch. Mehr kann man ohne Code nicht sagen.
Was sendest Du denn an den Browser zurück, wenn Du die Eingabe verarbeitet hast?
Ich vermute nichts, so dass im Browser alles stehen bleibt.
Warum schickst Du nicht das leere Formular wieder zurück, falls da eins war.

Seite im Root: Suche mal nach HTML-Meta-Attributen.

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
17.01.2020, 15:44
Beitrag #5
RE: Webserver URL nach Eingaben zurücksetzen
Das ist der Code:
Ich sende nichts zurück.

Code:
#include <Servo.h>
#include <SPI.h>
#include <UIPEthernet.h> //UIPEthernet.h bei Nano - Ethernet.h bei Uno
#include <EEPROMex.h>
#include <EEPROMVar.h>

//Variablen Startposition Servos & Home

int neigung = EEPROM.readInt(0);
int schwenk = EEPROM.readInt(2);
int schwenkstart=90;
int neigungstart=90;
    //schwenk=schwenkstart;
    //neigung=neigungstart;

//Variablen Max und Min Positionswerte, die angesteuert werden können - Angelehnt an die baulichen Voraussetzungen
int schwenkmax=179;
int schwenkmin=1;
int neigungmax=179;
int neigungmin=1;

//Servos deklarieren
Servo servo_Neigung;
Servo servo_Schwenk;

// Gib die 6 (hexadezimalen) Zahlen der Mac-Adresse Deines Ethernet-Shields ein.
// HAN-RUN-Shield hat keine ersichtliche MAC-Adresse!
byte mac[] = {0x90, 0xA2, 0xDA, 0x0D, 0x4E, 0xBD };

// IP Adresse eingeben
IPAddress ip(192,168,111,3);

//Starte Webserver (Port 80 ist ueblich fuer HTTP):
EthernetServer server(80);

void setup() {
  // Serielle Kommunikation (fuer den Seriellen Monitor)
  Serial.begin(9600);


  //  Servo Neigung ist an Pin 5 angeschlossen
   servo_Neigung.attach(5);
   //neigung=neigungstart;
   servo_Neigung.write(neigung);
//  Servo Schwenk ist an Pin 6 angeschlossen
   servo_Schwenk.attach(6);
   //schwenk=schwenkstart;
   servo_Schwenk.write(schwenk);
  
  // starte Ethernet Verbindungund den Server:
  Ethernet.begin(mac, ip);
  server.begin();
  Serial.print("Server an IP: ");
  Serial.println(Ethernet.localIP());
}

String buffer = "";   //String Clientdaten (Website)
int istr=0;           //Zählen der Zeichen im String
int iwinkel=0;        //Winkelwerte aus Textbox

void loop() {

  // listen
  EthernetClient client = server.available();
  if (client) {
    Serial.println("new client");
    boolean currentLineIsBlank = true;
    while (client.connected()) {
      if (client.available()) {
        //WICHTIG: client enthält Daten
        char c = client.read();

        //WICHTIG: buffer String erweitern mit jedem loop Durchgang.                          
        buffer+=c;
                                                                            
        if (c == '\n' && currentLineIsBlank) {          
          
//Website

    //Titel und Beschriftung
          client.print(F("<html><title>Schwenk-Neiger</title>"));
          client.print(F("<center>"));
          client.print(F("<body><h2><font color='red'><h2>Sony SNC-WR630 #183</font></h2>"));
          client.print(F("<br>"));

          
    //  Buttons auf HTML-Seite
          client.print(F("<form method=get><INPUT type =submit style=width:150;height:50;border:1;background-color:orangered;font-weight:bold; name=3hoch value=&Uarr;&Uarr;&Uarr;>"));
          client.print(F("<p>"));
          client.print(F("<INPUT type =submit style=width:120;height:40;border:1;background-color:yellow;font-weight:bold; name=2hoch value=&Uarr;&Uarr;> "));
          client.print(F("<p>"));
          client.print(F("<INPUT type =submit style=width:90;height:30;border:1;background-color:lime;font-weight:bold; name=1hoch value=&Uarr;> "));
          client.print(F("<p>"));
          client.print(F("<INPUT type =submit style=width:50;height:150;border:1;background-color:orangered;font-weight:bold; name=3links value=&Larr;&Larr;&Larr;> "));
          client.print(F("&nbsp;&nbsp;&nbsp;"));
          client.print(F("<INPUT type =submit style=width:40;height:120;border:1;background-color:yellow;font-weight:bold; name=2links value=&Larr;&Larr;> "));
          client.print(F("&nbsp;&nbsp;&nbsp;"));
          client.print(F("<INPUT type =submit style=width:30;height:90;border:1;background-color:lime;font-weight:bold; name=1links value=&Larr;> "));
  
          client.print(F("&nbsp;&nbsp;<INPUT type =submit style=width:100;height:50;border:3;font-weight:bold; name=Home value=Home>&nbsp;&nbsp;&nbsp;"));
          
          client.print(F("<INPUT type =submit style=width:30;height:90;border:1;background-color:lime;font-weight:bold; name=1rechts value=&Rarr;>"));
          client.print(F("&nbsp;&nbsp;&nbsp;"));
          client.print(F("<INPUT type =submit style=width:40;height:120;border:1;background-color:yellow;font-weight:bold; name=2rechts value=&Rarr;&Rarr;>"));
          client.print(F("&nbsp;&nbsp;&nbsp;"));
          client.print(F("<INPUT type =submit style=width:50;height:150;border:1;background-color:orangered;font-weight:bold; name=3rechts value=&Rarr;&Rarr;&Rarr;>"));
          client.print(F("<p>"));
          client.print(F("<INPUT type =submit style=width:90;height:30;border:1;background-color:lime;font-weight:bold; name=1runter value=&Darr;>"));
          client.print(F("<p>"));
          client.print(F("<INPUT type =submit style=width:120;height:40;border:1;background-color:yellow;font-weight:bold; name=2runter value=&Darr;&Darr;>"));
          client.print(F("<p>"));        
          client.print(F("<INPUT type =submit style=width:150;height:50;border:1;background-color:orangered;font-weight:bold; name=3runter value=&Darr;&Darr;&Darr;></form>"));
          client.print(F("<br>"));
          client.print(F("<br>"));

//Beginn Tabelle um die aktuelle Position und die Textfelder strukturierter darstellen zu können
    //Aktuelle Positionen darstellen
          client.print(F("<table><tr><th>"));  
          client.print(F("<h3><font color='green'>Aktuelle Positionen:<p>&nbsp;&nbsp;&nbsp;&nbsp;Schwenk "));
          client.print(F("(von "));
          client.print(schwenkmin);
          client.print(F(" bis "));
          client.print(schwenkmax);
          client.print(F("):&nbsp;&nbsp;"));
          client.print(schwenk);
          client.print(F("&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"));
          
          client.print(F("<p>Neigung "));
          client.print(F("(von "));
          client.print(neigungmin);
          client.print(F(" bis "));
          client.print(neigungmax);
          client.print(F("):&nbsp;&nbsp;"));
          client.print(neigung);
          client.print(F("</font></h3>"));
          client.print(F("</th>"));


    //Direkteingabe der Winkel per Nummernfeld
          client.print(F("<th><h3>"));
          client.print(F("Direkteingabe Winkel:"));
          client.print(F("<p>"));
          client.print(F("<form method=get>Schwenk:    <INPUT type=number min=1 max=180 name=schwenk><INPUT type =submit style:border=2; value=Einstellen></form> "));
          client.print(F("<p>"));
          client.print(F("<form method=get>Neigung:    <INPUT type=number min=1 max=180 name=neigung><INPUT type =submit style:border=2; value=Einstellen></form> "));
          client.print(F("</h3>"));
          client.print(F("</th></tr></table>"));    
//Ende Tabelle

          client.print(F("Version 1.0 "));
          client.print(F("</body>"));
          client.print(F("</center>"));

          break;                        
        }
          
          if (c == '\n') {
          buffer = "";
          currentLineIsBlank = true;          
          }
          else if (c == '\r') {          


//Auslesen welcher der Steuerungs-Buttons gedrückt wurde und Aktion starten

          if(buffer.indexOf("get /?Home")>=0){
              //Serial.println("Home-Position");
              schwenk=schwenkstart;
              neigung=neigungstart;
              //Serial.print("Neigung: ");
              //Serial.println(neigung);
              //Serial.print("Schwenk: ");
              //Serial.println(schwenk);  
              servo_Neigung.write(neigung);    
              servo_Schwenk.write(schwenk);        
              }
              
          if(buffer.indexOf("get /?3hoch")>=0){
              //Serial.println("3xHoch");
              if ((neigung>neigungmin)&&(neigung<neigungmax)){
              neigung=neigung+10;
              }
              //Serial.print("Neigung: ");
              //Serial.println(neigung);
              servo_Neigung.write(neigung);            
              }

          if(buffer.indexOf("get /?2hoch")>=0){
              //Serial.println("2xHoch");
              if ((neigung>neigungmin)&&(neigung<neigungmax)){
              neigung=neigung+5;
              }
              //Serial.print("Neigung: ");
              //Serial.println(neigung);  
              servo_Neigung.write(neigung);          
              }

          if(buffer.indexOf("get /?1hoch")>=0){
              //Serial.println("1xHoch");
              if ((neigung>neigungmin)&&(neigung<neigungmax)){
              neigung=neigung+1;
              }
              //Serial.print("Neigung: ");
              //Serial.println(neigung);
              servo_Neigung.write(neigung);          
              }            

          if(buffer.indexOf("get /?3links")>=0){
              //Serial.println("3xlinks");
              if ((schwenk>schwenkmin)&&(schwenk<schwenkmax)){
              schwenk=schwenk-10;
              }
              //Serial.print("Schwenk: ");  
              //Serial.println(schwenk);        
              servo_Schwenk.write(schwenk);  
              }

          if(buffer.indexOf("get /?2links")>=0){
              //Serial.println("2xlinks");
              if ((schwenk>schwenkmin)&&(schwenk<schwenkmax)){
              schwenk=schwenk-5;
              }
              //Serial.print("Schwenk: ");  
              //Serial.println(schwenk);  
              servo_Schwenk.write(schwenk);            
              }

          if(buffer.indexOf("get /?1links")>=0){
              //Serial.println("1xlinks");
              if ((schwenk>schwenkmin)&&(schwenk<schwenkmax)){
              schwenk=schwenk-1;
              }
              //Serial.print("Schwenk: ");  
              //Serial.println(schwenk);    
              servo_Schwenk.write(schwenk);        
              }
          
          if(buffer.indexOf("get /?3rechts")>=0){
              //Serial.println("3xrechts");
              if ((schwenk>schwenkmin)&&(schwenk<schwenkmax)){
              schwenk=schwenk+10;
              }
              //Serial.print("Schwenk: ");  
              //Serial.println(schwenk);      
              servo_Schwenk.write(schwenk);      
              }

          if(buffer.indexOf("get /?2rechts")>=0){
              //Serial.println("2xrechts");
              if ((schwenk>schwenkmin)&&(schwenk<schwenkmax)){
              schwenk=schwenk+5;
              }
              //Serial.print("Schwenk: ");  
              //Serial.println(schwenk);  
              servo_Schwenk.write(schwenk);          
              }

          if(buffer.indexOf("get /?1rechts")>=0){
              //Serial.println("1xrechts");
              if ((schwenk>schwenkmin)&&(schwenk<schwenkmax)){
              schwenk=schwenk+1;
              }
              //Serial.print("Schwenk: ");  
              //Serial.println(schwenk);    
              servo_Schwenk.write(schwenk);        
              }

          if(buffer.indexOf("get /?3runter")>=0){
              //Serial.println("3xrunter");
              if ((neigung>neigungmin)&&(neigung<neigungmax)){
              neigung=neigung-10;
              }
              //Serial.print("Neigung: ");
              //Serial.println(neigung);
              servo_Neigung.write(neigung);            
              }

          if(buffer.indexOf("get /?2runter")>=0){
              //Serial.println("2xrunter");
              if ((neigung>neigungmin)&&(neigung<neigungmax)){
              neigung=neigung-5;
              }
              //Serial.print("Neigung: ");
              //Serial.println(neigung);        
              servo_Neigung.write(neigung);    
              }

          if(buffer.indexOf("get /?1runter")>=0){
              //Serial.println("1xrunter");
              if ((neigung>neigungmin)&&(neigung<neigungmax)){
              neigung=neigung-1;
              }
              //Serial.print("Neigung: ");
              //Serial.println(neigung);  
              servo_Neigung.write(neigung);          
              }  

//Auslesen welche Werte direkt eingegeben werden sollen:

          if(buffer.indexOf("get /?schwenk")>=0){

                      buffer.remove(0, 15);
                      istr=buffer.length();
                      buffer.remove(istr-10,10);
                      iwinkel = buffer.toInt();

              //Serial.println(F("Schwenk Direkteingabe"));
              if ((schwenk>schwenkmin)&&(schwenk<schwenkmax)){
              schwenk=iwinkel;
              }
              //Serial.print("Schwenk: ");
              //Serial.println(schwenk);
              servo_Schwenk.write(schwenk);
              
              }

          if(buffer.indexOf("get /?neigung")>=0){

                      buffer.remove(0, 15);
                      istr=buffer.length();
                      buffer.remove(istr-10,10);
                      iwinkel = buffer.toInt();

              //Serial.println("Neigung Direkteingabe");
              if ((neigung>neigungmin)&&(neigung<neigungmax)){
              neigung=iwinkel;
              }
              //Serial.print("Neigung: ");
              //Serial.println(neigung);  
              servo_Neigung.write(neigung);        
              }
              
          buffer = "";
        }                                                                        
      }
    }
    // Gibt dem Webbrowser Zeit, die Daten zu erhalten.
    delay(10);

           EEPROM.writeInt(0, neigung);
           delay(10);
           EEPROM.writeInt(2, schwenk);
  
    // Schließe Connection:
    client.stop();
    Serial.println("client disonnected");
  }



}
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
17.01.2020, 15:55
Beitrag #6
RE: Webserver URL nach Eingaben zurücksetzen
(17.01.2020 15:44)kiximek schrieb:  Ich sende nichts zurück.
Das ist Dein Fehler. Der Browser zeigt nur das an, was Du ihm sendest.

Setze in den ganzen Teilen, in denen Du nach get ... suchst eine globale Variable gefunden = 1 und bevor Du die Connection schließt, schreibst Du eine einfache HTML-Seite zurück. Wenn gefunden == 1, dann mit dem Inhalt Wert gefunden, ansonsten mit nicht gefunden.

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
17.01.2020, 16:48
Beitrag #7
RE: Webserver URL nach Eingaben zurücksetzen
Das übersteigt meine Kenntnisse.
Ich habe auch nichts gefunden, dass sich mir erklären würde.

Ich möchte ja nicht die Seite ändern, sondern nur in der Adresszeile wieder die IP-Adresse stehen haben.
Ansonsten kann es beim Refresh zu ungewollten Servobewegungen kommen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
17.01.2020, 16:53 (Dieser Beitrag wurde zuletzt bearbeitet: 17.01.2020 16:54 von Tommy56.)
Beitrag #8
RE: Webserver URL nach Eingaben zurücksetzen
Du hast doch in Deinem Sketch schon eine Website drin. Etwas anderes ist das doch auch nicht.
Code:
client.print(F("<html><head><title>Antwort</title></head><body>"));
if (gefunden == 1) client.print(F("Wert gefunden"));
else client.print(F("Wert nicht gefunden"));
client.println(F("</body></html>"));

Nur vom kopieren ohne Grundkenntnisse kann man auf die Dauer halt nicht leben.

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  DFPlayer hört nach einem Song auf Cobblepot 11 304 Gestern 12:48
Letzter Beitrag: hotsystems
  Webseite auf Webserver hochladen DO3GE 20 370 08.09.2020 22:35
Letzter Beitrag: DO3GE
  IDE Probleme nach Update auf 1.8.13 DO3GE 7 272 04.09.2020 14:41
Letzter Beitrag: hotsystems
  einmaliger Loop nach Knopfdruck Saftschmuggler 2 335 09.08.2020 18:18
Letzter Beitrag: Saftschmuggler
  Arduino Webserver Hinweis PopUp kiximek 1 329 31.05.2020 19:41
Letzter Beitrag: Tommy56
  Probleme Webserver - Servos fahren unkontrolliert kiximek 10 1.049 07.04.2020 21:45
Letzter Beitrag: kiximek
  Schalter u. Slider von Nextion nach Arduino abfragen, Lösungsansatz gesucht alpenpower 2 747 09.03.2020 07:59
Letzter Beitrag: alpenpower
  Km Stand auch nach dem Ausschalten Anfänger2020 11 1.184 01.03.2020 18:46
Letzter Beitrag: hotsystems
  Webserver soll 2 Servos (Schwenk-Neiger) steuern - Winkelauswahl aus Radiobutton kiximek 19 1.785 06.01.2020 23:13
Letzter Beitrag: kiximek
  Angabe des Dynamischen Speicherverbrauchs nach Compilieren BennIY 14 1.414 16.10.2019 21:56
Letzter Beitrag: Bitklopfer

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste