Forum: Compiler & IDEs UBoot goes WEB: Verständnisfrage zum Code von U. Radig


von UBoot-Stocki (Gast)


Lesenswert?

Moin,

ich habe jetzt auch das Pollin-Board mit der SW von U. Radig am laufen. 
Hat alles super geklappt. Jetzt würde ich gerne die Web-Seite so 
anpassen wie ich es brauche.

Den Monster-Thread bin ich durch allerdings macht das keinen Spass weil 
mein Werkstatt-PC das nicht richtig packt ...

Und da steh ich nun ...

Kann mir mal jemand einen Tipp geben wie das funktioniert? ich wähle auf 
der html-Seite was aus drücke auf "Setzen" und ein PIN am Mega32 ändert 
sich...

Wie ist der Weg durch die SW? Wo soll ich mit suchen anfangen ? ich bin 
hier ein wenig lost ....

Gruß und Danke für Tipps

Andreas

von Peter D. (pdiener) Benutzerseite


Lesenswert?

Wenn ich das richtig verstanden habe, wird die erste Aktion durch einen 
Empfangsinterrupt vom ENC28J60 ausgelöst, dieser hat dann wohl den 
ersten Ethernetframe empfangen und der Prozessor kann ihn abholen.

Grüße,

Peter

von holger (Gast)


Lesenswert?

>Kann mir mal jemand einen Tipp geben wie das funktioniert? ich wähle auf
>der html-Seite was aus drücke auf "Setzen" und ein PIN am Mega32 ändert
>sich...

>Wie ist der Weg durch die SW? Wo soll ich mit suchen anfangen ? ich bin
>hier ein wenig lost ....

Such in httpd.c

von UBoot-Stocki (Gast)


Lesenswert?

Moin Männers :-)

ich habe gestern in der httpd.c und webpage.h diverse Änderungen 
probiert. Es sieht für mich so aus, als sie in webpage.h dies die 
richtige Stelle:
1
  //Port Schalten und Status %PORTA2 bedeutet PORTA PIN2
2
  "<input type=\"checkbox\" name=\"OUT\" value=\"C\" %PORTA2>\r\n"
3
  "<span class=\"Stil2\">Port A Pin 2</span></p>\r\n"
4
  "<div align=\"left\">\r\n

ich httpd.c gibt es offensichtlich dazu passend diese Stelle:
1
      //Einsetzen des Port Status %PORTxy durch "checked" wenn Portx.Piny = 1
2
      //x: A..G  y: 0..7 
3
      if (strncasecmp_P("PORT",http_entry[index].new_page_pointer,4)==0)
4
      {
5
        unsigned char pin  = (pgm_read_byte(http_entry[index].new_page_pointer+5)-48);  
6
        b = 0;
7
        switch(pgm_read_byte(http_entry[index].new_page_pointer+4))
8
        {
9
          case 'A':
10
            b = (PORTA & (1<<pin));
11
            break;
12
          case 'B':
13
            b = (PORTB & (1<<pin));
14
            break;
15
          case 'C':
16
            b = (PORTC & (1<<pin));
17
            break;
18
          case 'D':
19
            b = (PORTD & (1<<pin));
20
            break; 
21
        }

ich habe das alles entsprechen ergänzt, comiliert und ....


es funktioniert nicht :-(


Hat noch jemand eine Idee ? Das ist immer das Problem mit fremdem Code 
....

Gruß

Andreas

von Simon K. (simon) Benutzerseite


Lesenswert?

Was meinst du wie lange ich gebraucht habe um den ganzen Netzwerkkram zu 
lernen und zu verstehen? Das war sicher 1/2 Jahr immer mal wieder damit 
beschäftigen und darüber nachdenken.
Es ist sehr kompliziert jetzt genau den Weg aufzumalen, da dort mehrere 
Protokolle beteiligt sind, die in der Form, wie sie im 
Mikrocontroller-verdaubaren Code (nicht nur bei Radigs Code), eigentlich 
sonst nirgendwo wiederzufinden sind.

Ich empfehle dir aber dringendst mal den Monster-Thread durchzulesen, da 
besonders gegen Ende hin viele Leute sind, die ihre Webpage umgestaltet 
haben. Und dort ist sehr viel Hilfe zu finden.

von UBoot-Stocki (Gast)


Lesenswert?

Hallo Simon,

Du hast ja auch einen Stack geschrieben. Ich will Euere Leistung hier 
auf keinen Fall herabwürdigen. Ganz im Gegenteil: Genau aus dem Grund, 
den Du nennst, nämlich das kontinuierliche Dranbleiben habe ich 
Hochachtung für Euerer Arbeit!

Ich habe auf Grund der größe technische Probleme mit dem Monsterthread. 
Es dauert ca. 30s um eine Zeile/Seite weiterzuscrollen... Hänge mich 
aber nochamls rein...

Es müsste doch möglich sein, ohne Kenntniss von arp, IP, TCP etc. den 
Code zu modifizieren... Evtl. hat ja jemand einen Tipp ...

Die Anderen im Monsterthread haben es ja auch irgendwie geschafft ...

Gruß

Andreas

von Simon K. (simon) Benutzerseite


Lesenswert?

UBoot-Stocki wrote:
> Hallo Simon,
>
> Du hast ja auch einen Stack geschrieben. Ich will Euere Leistung hier
> auf keinen Fall herabwürdigen. Ganz im Gegenteil: Genau aus dem Grund,
> den Du nennst, nämlich das kontinuierliche Dranbleiben habe ich
> Hochachtung für Euerer Arbeit!
Ich habe (noch) keinen Stack fertig geschrieben. Mein Projekt verwendet 
den uip Stack. Habe mal angefangen, aber es wurde bei TCP Sockets und 
States und den ganzen Sequenznummern dann doch zu kompliziert, als dass 
es noch hätte Spaß gemacht auf einem so kleinen Prozessor.
Ein HTTP Daemon dafür geschrieben zu haben hat mir persönlich schon 
gereicht ;)

> Ich habe auf Grund der größe technische Probleme mit dem Monsterthread.
> Es dauert ca. 30s um eine Zeile/Seite weiterzuscrollen... Hänge mich
> aber nochamls rein...
Ich muss zugeben, der Thread ist selbst auf meiner relativ modernen 
Kiste ziemlich langsam und Firefox hängt beim Laden jedes mal ca 5 
Sekunden. Leider ist es so wie es ist und mir ist keine Methode bekannt 
wie man nur einen Teil der Seite laden könnte. Hast du nicht die 
Möglichkeit die Seite auf einem anderen Rechner anzuschauen?

> Es müsste doch möglich sein, ohne Kenntniss von arp, IP, TCP etc. den
> Code zu modifizieren... Evtl. hat ja jemand einen Tipp ...
Ja, mit Try and Error geht das ganz gut (siehe anderer Thread). 
Hilfreich ist das Verständnis der Sachen allemal.

> Die Anderen im Monsterthread haben es ja auch irgendwie geschafft ...
Ja, allerdings habe ich den Thread auch nur mit einem Auge beobachtet 
und kann dir nicht sagen, wie Ulrich das Parsen der webpage 
implementiert.

Jedenfalls müssen die dynamischen Daten irgendwie später im 
Ausgabe-"Stream" landen und dafür gibt es halt genau diesen Parser, der 
bestimmte feste Ausdrücke in der statischen webpage durch dynamische 
Werte ersetzt.
Wie genau das geht, weiß ich aber im Falle von Ulrich Radigs Code gerade 
nicht.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.