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
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
>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
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
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.
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.