- 3D-Druck Einstieg und Tipps         
Ergebnis 1 bis 8 von 8

Thema: Webserver mit dynamischer Seite auf AVR

  1. #1
    Erfahrener Benutzer Robotik Einstein Avatar von vohopri
    Registriert seit
    11.09.2004
    Ort
    südlich der Alpen
    Beiträge
    1.708

    Webserver mit dynamischer Seite auf AVR

    Anzeige

    Powerstation Test
    Nachdem mich die mc Faszination gepackt hat, will ich nun versuchen, eine dynamische Webseite auf dem mega32 eines NETIO zu implementieren.

    Die Originallösung des Netio, die einen eigenen Client braucht, ist suboptimal. Da hat man 2 Baustellen: Server und Client.

    Viel besser und Zeitgemäss ist eine Lösung, die clientseitig mit jedem beliebigen Browser arbeitet, und alles an EINER Stelle gelöst wird, nämlich serverseitig. Entwicklungstechnisch ist das schon einmal von Vorteil, und für den Endanwender umso mehr. Das Gerät wird angeschlossen und kann von jedem PC im Netz aus OHNE irgend eine Installation genutzt werden.

    Jetzt habe ich mal Ulrich Radigs Webserver genommen, und für die Verwendung auf dem NETIO adaptiert. Das war schon eine gute Einstiegsübung und das Ergebnis funktioniert bereits. Ich kann das NETIO mit dem Browser im LAN oder auch übers Internet bedienen. Herzlichen Dank an Ulrich Radig, für das Publizieren seiner Software, da hat man die wichtigste Info zu dem Thema in konzentrierter Form vorliegen.

    Jetzt soll es weiter gehen, von einer statischen Seite zu einer dynamischen.

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.12.2007
    Ort
    weit weg von nahe Bonn
    Alter
    39
    Beiträge
    3.416
    mir ist der code für beide varianten jetzt nciht SO geläufig, aber du könntest es doch mit speziellen tags lösen, in dem quellcode veränderst du den part, der aus der datei in den socket streamt, einfach so, dass er interpretiert WAS er da sendet udn wenn er dabei auf ein von dir definiertes tag stößt wird anstelle der textdatei die auswertung angestoßen und das ergebnis in den stream eingefügt und dann der rest der datei
    Es gibt 10 Sorten von Menschen: Die einen können binär zählen, die anderen
    nicht.

  3. #3
    Erfahrener Benutzer Robotik Einstein Avatar von vohopri
    Registriert seit
    11.09.2004
    Ort
    südlich der Alpen
    Beiträge
    1.708
    Ja, das ist die eine Variante. Da ist die Verarbeitung in den Seitentext eingebettet. Das ist günstig bei kleinen inhaltlichen Variationen.

    Die andere Variante ist die, dass Seitentext in den Serverquelltext eingebettet wird. Da tut man sich leichter, wenn man grössere und vor allem auch strukturelle Variationen realisieren will.

    Das Ganze ist sehr ähnlich dem Schreiben von PHP Scripts.


    Der gegenwärtige Stand sieht so aus:

    Bild hier  

  4. #4
    Erfahrener Benutzer Robotik Einstein Avatar von vohopri
    Registriert seit
    11.09.2004
    Ort
    südlich der Alpen
    Beiträge
    1.708
    Bild hier  

    Das ist schon ein vom mc veränderter Webseiteninhalt. Softwaretechnisch ist aber noch viel zu tun.

  5. #5
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    61
    Beiträge
    5.799
    Blog-Einträge
    8
    Hallo

    Für dynamische Webseiten braucht man wirklich nicht viel:
    Code:
            out.print("<html><head><title>Robotersteuerung mit J2ME-Handy</title>");
            out.print("</head><body>");
            out.print("Kommando: ");
            out.print(Kommando);
            log(Kommando);
            out.print("
    <table><tr><td><a href=1>Test1</a></td>");
            out.print("<td><a href=2>Test2</a></td>");
            out.print("<td><a href=3>Test3</a></td></tr>");
            out.print("<tr><td><a href=4>Test4</a></td>");
            out.print("<td><a href=5>Test5</a></td>");
            out.print("<td><a href=6>Test6</a></td></tr>");
            out.print("<tr><td><a href=7>Test7</a></td>");
            out.print("<td><a href=8>Test8</a></td>");
            out.print("<td><a href=9>Test9</a></td></tr>");
            out.print("<tr><td></td><td><a href=0>Test0</a></td><td></td>");
            out.print("</tr></table>
    ");
            //out.print(erste_line);
            out.print("");
            out.print("");
            out.print("");
            out.print("");
            out.print("</body></html>");
            out.close();
            in.close();
            sc.close();
            //playFromResource("/"+Kommando+".wav");
            if(Kommando.equals("1")) playFromResource("/servo-4ms-r.wav");
            if(Kommando.equals("2")) playFromResource("/servo-4ms.wav");
            if(Kommando.equals("3")) playFromResource("/servo-4ms-l.wav");
            //if(Kommando.equals("4")) playFromResource("/4.wav");
            //if(Kommando.equals("5")) playFromResource("/5.wav");
            //if(Kommando.equals("6")) playFromResource("/6.wav");
            //if(Kommando.equals("7")) playFromResource("/7.wav");
            if(Kommando.equals("8")) playFromResource("/servo-10ms.wav");
            //if(Kommando.equals("9")) playFromResource("/9.wav");
            if(Kommando.equals("0")) playFromResource("/1ms_lang.wav");
          }
        }
    (Aus https://www.roboternetz.de/community...l=1#post485027)

    Das "Server-Script" (in Java, da kenne ich mich quasi gar nicht aus) sendet eine Tabelle mit Links deren Ziel-URL aus einer Ziffer besteht. Wenn man im Browser dann einen dieser Links anklickt sendet dieser unter anderem die Ziffer zum Server zurück. Dieser filtert dann aus dem Datenstrom die Ziel-URL und daraus wiederrum die Ziffer. Das sollte ein AVR auch können.

    Nettes Platinchen, damit liebäugle ich auch schon lange.

    Gruß

    mic
    Bild hier  
    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  6. #6
    Erfahrener Benutzer Robotik Einstein Avatar von vohopri
    Registriert seit
    11.09.2004
    Ort
    südlich der Alpen
    Beiträge
    1.708
    Hallo,

    was mic beschreibt ist das Verwenden der GET Methode. Die ist etwas einfacher als die POST Methode und hat den Vorteil, dass das Ganze für den Endanwender leichter zu durchschauen ist. Noraussichtlich werd ich das auch so machen.

    Bevor man nun die GET- oder die POST- Variablen auswerten kann, muss man Zugang haben zum HTTP Request und der kommt hier nicht so komfortabel in einem Socket Stream daher, sondern ist Nutzlast in einem Paket, dass der ENC28j60 empfangen hat.

    Um da jetzt tiefer einsteigen zu können, hab ich mir den Webserver auf dem mega32 so erweitert, dass ich den Browser zum Debuggen verwenden kann. Da wird es schon etwas lustiger.

    Bild hier  

    So wird der Zustand der LED angezeigt, die LED kann umgeschaltet werden und die Debuginfo wird ausgegeben.

  7. #7
    Erfahrener Benutzer Robotik Einstein Avatar von vohopri
    Registriert seit
    11.09.2004
    Ort
    südlich der Alpen
    Beiträge
    1.708
    Um mit der Sprache C etwas vertrauter zu werden, hab ich mi das c Tutorial von www.tutorials.at und die code::blocks IDE mit C Compiler herunter geladen. Beides hat mir gut weiter geholfen.

    Der Getstring ist jetzt zugänglich. Das war das letzte und schwierigste Puzzleteil, das mir gefehlt hat.

    Bild hier  

    Jetzt kann programmiert werden.

  8. #8
    Erfahrener Benutzer Robotik Einstein Avatar von vohopri
    Registriert seit
    11.09.2004
    Ort
    südlich der Alpen
    Beiträge
    1.708
    Jetzt ist der Webserver mit dynamischer Webseite auf meinem NETIO.

    Bild hier  

    Die Anzeige, der Linktext und der Urlstring richten sich nach dem Status der LED.

    Hier jetzt weiter zu arbeiten ist schon recht komfortabel, wie man sieht:

    Code:
       if      (!strcmp(UrlString,"L0")){LedOff();}
       else if (!strcmp(UrlString,"L1")){LedOn() ;}
    Mal sehen, was als nächstes kommt: grafische Webseiten oder ein kleines IO-Board auf Punktrasterplatine. Vielleicht auch ganz etwas anderes.

Ähnliche Themen

  1. Magnete und Supraleiter in dynamischer Eintracht
    Von Roboternetz-News im Forum Neuigkeiten / Technik-News / Nachrichten / Aktuelles
    Antworten: 1
    Letzter Beitrag: 25.05.2011, 19:06
  2. Datei Zeilenweise einlesen mit dynamischer Buffergröße
    Von jeroen im Forum Software, Algorithmen und KI
    Antworten: 4
    Letzter Beitrag: 22.05.2008, 21:08
  3. Antworten: 1
    Letzter Beitrag: 26.04.2007, 18:54
  4. Kontrolle dynamischer Betriebszustände
    Von Reinald im Forum Software, Algorithmen und KI
    Antworten: 0
    Letzter Beitrag: 31.08.2006, 16:11
  5. webserver mit avr
    Von Nr. 5 im Forum AVR Hardwarethemen
    Antworten: 5
    Letzter Beitrag: 03.04.2006, 19:57

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Labornetzteil AliExpress