s.o., ich habe dafür eigene Funktionen
// cstringarg(strinput, "uname", struname); // uname
// cstringarg(strinput, "upwd", strupwd); // upwd
ich brauche nun konkrete Codevorschläge...
ich warte mal, ob Moppi noch was einfällt.
s.o., ich habe dafür eigene Funktionen
// cstringarg(strinput, "uname", struname); // uname
// cstringarg(strinput, "upwd", strupwd); // upwd
ich brauche nun konkrete Codevorschläge...
ich warte mal, ob Moppi noch was einfällt.
Ich habe mit der 2.5.2 auch Probleme. Opera zeigt den Seiteninhalt an, aber dafür hängt das nodeMCU. Firefox bringt die Meldung mit dem Reset, zeigt den Inhalt nicht an, dafür hängt das nodeMCU nicht.
Habe den Beispielcode von hier verwendet und etwas angepasst, damit bei mir der Login im WLAN funktioniert: https://arduino-esp8266.readthedocs....-examples.html
Original funktioniert dieser Code gar nicht, weil der auf "\n" wartet und wo er es tut, kommt irgendwas durcheinander.
MfG
bei mir haben alle Versionen seit 2.4.0 das geschilderte "Problem", irgendwie scheinen die eher für Fehler oder Ungenauigkeiten im Code anfällig zu sein - trotzdem müsste man es zum Laufen kriegen, sonst würden sie ja auch unter 2.4.0 nicht laufen.
- - - Aktualisiert - - -
PS,
hier übrigens meine Parserfunktionen, um username + pwd herauszufiltern:
Code://---------------------------------------------------------------------------- // String functions //---------------------------------------------------------------------------- int16_t strstrpos(char * haystack, char * needle) // find 1st occurance of substr in str { char *p = strstr(haystack, needle); if (p) return p - haystack; return -1; // Not found = -1. } //------------------------------------------------------- const int MAXLEN = 1024; const int TOKLEN = 64; //------------------------------------------------------- char * cstringarg( char* haystack, char* vname, char* sarg ) { int i=0, pos=-1; unsigned char ch=0xff; const char* kini = "&"; // start of varname: '&' const char* kin2 = "?"; // start of varname: '?' const char* kequ = "="; // end of varname, start of argument: '=' char needle[TOKLEN] = ""; // complete pattern: &varname=abc1234 strcpy(sarg,""); strcpy(needle, kini); strcat(needle, vname); strcat(needle, kequ); pos = strstrpos(haystack, needle); if(pos==-1) { needle[0]=kin2[0]; pos = strstrpos(haystack, needle); if(pos==-1) return sarg; } pos=pos+strlen(vname)+2; // start of value = kini+vname+kequ while( (ch!='&')&&(ch!='\0') ) { ch=haystack[pos+i]; if( (ch=='&')||(ch==';')||(ch==' ')||(ch=='\0') ||(ch=='\n') ||(i+pos>=strlen(haystack))||(i>TOKLEN-1) ) { sarg[i]='\0'; return sarg; } if( (ch!='&') ) { sarg[i]=ch; i++; } } return sarg; } // *SNIP* cstringarg(strinput, "uname", struname); // uname cstringarg(strinput, "upwd", strupwd); // upwd
sie funktionieren sehr gut, und sehr wschl liegt hier wirklich nicht das Problem - lasse mich aber gern vom Gegenteil überzeugen!
Ja, schon. Bloß wenn Ivan Grokhotkov keinen lauffähigen Code hinbekommt ...
Kannst Du bis auf die Grundfesten alles auseinandernehmen, das kann Wochen oder Monate dauern.
Probleme mit Datentypen, Steuerzeichen, Formaten ....
Das Problem liegt in der Übertragung zum Browser oder am Inhalt selber. Kann nicht sein, dass ein Browser zwar den Inhalt anzeigt, aber das nodeMCU (vmtl. während der Kommuniaktion) hängen bleibt und ein anderer Browser den Inhalt gar nicht anzeigt und ihn also nicht interpretieren kann, dafür aber das nodeMCU nicht hängt.
Bei mir funktioniert es ab dieser Stelle z.B. gar nicht, mit keinem der beiden Browser:
Code:// wait for end of client's request, that is marked with an empty line if (line.length() == 1 && line[0] == '\n')
Geändert von Moppi (21.10.2019 um 15:47 Uhr)
immerhin funktioniert ja die Version auf S. 2
https://www.roboternetz.de/community...l=1#post655516
schon ziemlich gut, danke noch mal
- vlt fällt ja jemand noch was ein wegen des 2x Enter- oder Button-drücken müssens...![]()
Lesezeichen