Hirdetés

Új hozzászólás Aktív témák

  • Janos250

    őstag

    válasz Aryes #19103 üzenetére

    "van kész megoldás, a kliens által küldött változókat a
    server.arg("valtozo_neve") egyszerűbben visszaadja, mint hogy a header parse-olásával kellene bajlódni."

    A WiFiServer osztálynak nincs arg tagfüggvénye.
    Viszont nem sokat kell azzal bajlódni, mert szerintem egyszerű.
    A kezdő arduinosok kedvéért írok is rá példákat, ha már előkerült. Hátha valakinek valamikor szüksége lesz rá.

    ablak = elsosor ;
    char kod;
    uint16_t ertek ;
    Ha csak egy paraméter van, és a kód is csak egy karakter:
    pl:http://192.168.0.141/k=1
    Akkor az első sor: GET /k=1 HTTP/1.1
    megoldás:
    printf("\nkod = %c ertek = %c\n",ablak[5], ablak[7]);  
    ezt irja ki: kod = k ertek = 1

    Ha csak egy paraméter van, de az eredmény nagyobb szám, akkor ez jó:
    például: http://192.168.0.141/t=300
    akkor az első sor:GET /t=300 HTTP/1.1
    A scanf-nek azt a mintát kell megadni, ami printf esetén ugyanezt írná ki:
    megoldás:
    sscanf(ablak, "GET /%c=%i HTTP/1.1",&kod,&ertek );
    printf("\nkod = %c ertek= %d\n",kod, ertek);  
    Akkor kiirás: kod = t ertek= 300

    Ha több paraméter van,
    pl:http://192.168.0.141/t=300/k=100/x=3
    akkor az első sor: GET /t=300/k=100/x=3 HTTP/1.1
    Megoldás:
    while ( (ablak = strchr(ablak, '/')+1) && 
            (ablak[-2] != 'P') 
          )        
          {
            sscanf(ablak, "%c=%i ",&kod,&ertek );        
            printf("\nkod = %c ertek= %d\n",kod, ertek); 
          };
    kiirás:
    kod = t ertek= 300
    kod = k ertek= 100
    kod = x ertek= 3

    Természetesen a kiírás helyett azokat az utasításokat kell beírni, amit végre kell hajtani az adott kód, és érték esetén.

Új hozzászólás Aktív témák