Hallo
Das Beispiel für die SD-Card erwartet keine Parameter. Hast du die Text-Datei aus dem Beispielordner in das Root-Verzeichniss der SD-Card kopiert? SD-Card ist mit FAT32 formatiert?Bei mir klappt es bis zur ersten Eingabe, ab der zweiten ist die Verbindung weg?
Ein WIFI-Board braucht doch keine GUI, eine Browserschnittstelle ist viel knuffiger:Jetzt fehlt eigentlich nur noch die GUI und vielleicht ein etwas effizienteres Protokoll
Zwar noch etwas holperig und viel "zu Fuss" programmiert, weil ich mit HTML nicht wirklich geübt bin, aber immerhin zeigt es den Ansatz. Leider funktioniert es nicht mit meinem 9er IE, aber mit dem FF klappts wie erwartet. Es ist natürlich noch nicht perfekt.Code:// LEDs setzen und Daten der Browseranforderung anzeigen mic 28.7.2012 // https://www.roboternetz.de/community/threads/58162-Diskussion-zum-RP6-M256-WIFI-Modul?p=555651&viewfull=1#post555651 #include "RP6M256Lib.h" uint8_t c, header_html_request[20][100], hhr_zeile=0, hhr_zeile_max=0, hhr_pos=0, hhr_params; uint8_t leds_mask=0; void leds_setzen(void); void send_html_page(void); int main(void) { initRP6M256(); writeString_P("\n\rBrowserdaten anzeigen mic 28.7.2012\n\r"); // Make sure WLAN Module Packet size / buffer size and flush timer is OK enter_cmd_mode_WIFI(); issueCMD_WIFI("set comm size 1024","AOK"); issueCMD_WIFI("set comm time 10","AOK"); leave_cmd_mode_WIFI(); while(true) { if(getBufferLength_WIFI()) // Daten vom Browser empfangen? { c=readChar_WIFI(); // Zeichen einlesen... if(hhr_pos<98) header_html_request[hhr_zeile][hhr_pos++]=c; // ...und speichern if(c==13) // Zeilenende? { header_html_request[hhr_zeile][hhr_pos++]=0; // String Endekennung anfügen hhr_zeile++; // nächste Zeile einlesen hhr_pos=0; // Zeile startet bei Position null stopStopwatch1(); setStopwatch1(0); startStopwatch1(); // Timeout starten } } if(getStopwatch1() > 50) // Timeout beim Empfang bedeutet Headerende { header_html_request[hhr_zeile][hhr_pos++]=0; // String Endekennung anfügen hhr_zeile_max=hhr_zeile+1; // Anzahl der Zeilen speichern... leds_setzen(); send_html_page(); // ... und antworten hhr_zeile=0; // vorbereiten für nächsten Request-Header hhr_pos=0; hhr_zeile_max=0; stopStopwatch1(); // ab jetzt kein Timeout mehr überprüfen setStopwatch1(0); } } return 0; } void leds_setzen(void) { hhr_pos=0; do c=header_html_request[0][hhr_pos++]; while(c && (c != 'G')); if(c) // GET oder POST im Request gefunden? hhr_params=0; // GET else hhr_params=hhr_zeile_max-1; // kein GET hhr_pos=0; leds_mask=0; do { c=header_html_request[hhr_params][hhr_pos++]; if(c) switch(c) { case 'a': leds_mask |= 1; break; case 'b': leds_mask |= 2; break; case 'c': leds_mask |= 4; break; case 'd': leds_mask |= 8; break; } }while(c); setLEDs(leds_mask & 0Xf); } void send_html_page(void) { // Erhalt der Anforderung quittieren: writeString_P_WIFI("HTTP/1.1 200 OK\r\n"); writeString_P_WIFI("Content-type: text/html\r\n"); writeString_P_WIFI("\r\n"); stopStopwatch1(); setStopwatch1(0); startStopwatch1(); // Send HTML Content: writeString_P_WIFI("<html>\n<head>\n<title>RP6-WIFI: HTTP-Requestdaten anzeigen</title>\n</head>\n<body>\n"); writeString_P_WIFI("<h1>RP6-WIFI: LED setzen mit GET und POST</h1>\n"); writeString_P_WIFI("<form action=\"\" name\"get\" method=\"get\">\n"); writeString_P_WIFI("gSL4<input type=\"checkbox\" "); if(leds_mask & 8) writeString_P_WIFI("checked "); writeString_P_WIFI("name=\"gSL4\" value=\"d\">  \n"); writeString_P_WIFI("gSL3<input type=\"checkbox\" "); if(leds_mask & 4) writeString_P_WIFI("checked "); writeString_P_WIFI("name=\"gSL3\" value=\"c\">  \n"); writeString_P_WIFI("gSL2<input type=\"checkbox\" "); if(leds_mask & 2) writeString_P_WIFI("checked "); writeString_P_WIFI("name=\"gSL2\" value=\"b\">  \n"); writeString_P_WIFI("gSL1<input type=\"checkbox\" "); if(leds_mask & 1) writeString_P_WIFI("checked "); writeString_P_WIFI("name=\"gSL1\" value=\"a\"> \n"); writeString_P_WIFI("<input type=\"submit\" value=\"GET\">\n"); writeString_P_WIFI("</form>\n"); writeString_P_WIFI("<form action=\"\" name\"post\" method=\"post\">\n"); writeString_P_WIFI("pSL4<input type=\"checkbox\" "); if(leds_mask & 8) writeString_P_WIFI("checked "); writeString_P_WIFI("name=\"pSL4\" value=\"d\">  \n"); writeString_P_WIFI("pSL3<input type=\"checkbox\" "); if(leds_mask & 4) writeString_P_WIFI("checked "); writeString_P_WIFI("name=\"pSL3\" value=\"c\">  \n"); writeString_P_WIFI("pSL2<input type=\"checkbox\" "); if(leds_mask & 2) writeString_P_WIFI("checked "); writeString_P_WIFI("name=\"pSL2\" value=\"b\">  \n"); writeString_P_WIFI("pSL1<input type=\"checkbox\" "); if(leds_mask & 1) writeString_P_WIFI("checked "); writeString_P_WIFI("name=\"pSL1\" value=\"a\"> \n"); writeString_P_WIFI("<input type=\"submit\" value=\"POST\">\n"); writeString_P_WIFI("</form>\n"); for(hhr_zeile=0; hhr_zeile < hhr_zeile_max; hhr_zeile++) { hhr_pos=0; writeString_P_WIFI("Request Zeile "); writeInteger_WIFI(hhr_zeile, 10); writeString_P_WIFI(": "); do { c=header_html_request[hhr_zeile][hhr_pos++]; if(c) writeChar_WIFI(c); }while(c); writeString_P_WIFI("\n<br>\n"); } writeString_P_WIFI("\n<br>\nDie Parameter befinden sich in Zeile "); writeInteger_WIFI(hhr_params, 10); writeString_P_WIFI(":\n<br>\n"); hhr_pos=0; do { c=header_html_request[hhr_params][hhr_pos++]; if(c) writeChar_WIFI(c); }while(c); writeString_P_WIFI("<br>\nleds_mask ist "); writeInteger_WIFI(leds_mask, 2); writeString_P_WIFI("\n<br><br>\n<small>\n[Ladezeit der Seite: "); writeInteger_WIFI(getStopwatch1()+1, 10); writeString_P_WIFI("ms]\n<br><br>\nmic 29.7.2012\n</small>\n"); writeString_P_WIFI("</body>\n"); writeString_P_WIFI("</html>\n"); stopStopwatch1(); setStopwatch1(0); // Wait a bit and then close connection: mSleep(50); // Depending on the content you may have to wait longer. enter_cmd_mode_WIFI(); writeCommand_WIFI("close\r"); leave_cmd_mode_WIFI(); }
Das hier stört mich noch sehr dabei, weil es massig Speicherplatz verschwendet:
header_html_request[20][100]
Aber der m256 hat ja reichlich davon. ;)
Gruß
mic





 
			
			
 
					
					
					
						 Zitieren
Zitieren


Lesezeichen