Individální projekty MPOA

Mikroprocesory s architekturou ARM

Uživatelské nástroje

Nástroje pro tento web


2015:http-sd

Toto je starší verze dokumentu!


Zadání

Realizujte zápis a čtení souborů z SD-karty přes Ethernet s použitím vývojové desky FRDM-K64F. Využijte protokol HTTP a jeho požadavky GET a PUT. Pro přístup k souborům na kartě vytvořte jednoduchou webovou stránku (listing).


Úvod

Vývojové deska připojena přes Ethernet. Na web-stránce (10.42.0.2) je vytvořen seznam souborů a složek a je možnost stahnout nebo nahrat soubory na SD-kartu. Projekt se skladá z severové a klientské časti. Server (na desce) troří webovu stranku, posíla požadavky klientu pro stahováni nebo nahrvání souborů. Klient posíla nebo přijíma soubory.


Software

Pro realizace projektu je použit compiler mbed a knihovny pro práce z sockety a SD-karty pro severovu čast a g++ pro klientskou čast.


Zadání

Realizujte zápis a čtení souborů z SD-karty přes Ethernet s použitím vývojové desky FRDM-K64F. Využijte protokol HTTP a jeho požadavky GET a PUT. Pro přístup k souborům na kartě vytvořte jednoduchou webovou stránku (listing).


Úvod

Vývojové deska připojena přes Ethernet. Na web-stránce (10.42.0.2) je vytvořen seznam souborů a složek a je možnost stahnout nebo nahrat soubory na SD-kartu. Projekt se skladá z severové a klientské časti. Server (na desce) troří webovu stranku, posíla požadavky klientu pro stahováni nebo nahrvání souborů. Klient posíla nebo přijíma soubory.


Software

Pro realizace projektu je použit compiler mbed a knihovny pro práce z sockety a SD-karty pro severovu čast a g++ pro klientskou čast.


Realizace. Server

Úplný kód zde.

Webová stránka

Je puštěn jednoduchý web-server, který odpovídá na požadavky prohlížeče HTML-stránkou, která se generuje na základě obsahu SD-karty. Pro to je vytvořená funkce make_html_list

void make_html_list(const char *fsrc, int err)
{
    char line[100]="Current directory: ";
    cleaning(html_page, sizeof(html_page));                 //cleaning
    strcpy(html_page,header);                               //and adding header
    sprintf (line, "<p>Current directory: %s</p>",fsrc);    //adding line of current directory
    strcat(html_page,line);
    strcat(html_page,"<p><a href=\"/go_up\">go_up</a></p>");//adding 'up' button
 
    DIR *d = opendir(fsrc); //open directory
    if (d)
    {
      struct dirent *p;
      while ((p = readdir(d)) != NULL)  //creating list of files and directories in directory
      {
            add_to_html (p->d_name);    //adding them to HTML page
      }
    }
    else printf("--can't open directory\n\r");
    closedir(d);
                      //add form to HTML page
    strcat(html_page,"<form method=\"put\"><b>Upload file to current directory:</b><p><input type=\"file\" name=\"file\"></p><p><input type=\"submit\" value=\"Send\"></p></form>");
 
    switch (err) //handling errors and write them to HTML page
    {
       case 0: { strcat(html_page,"<p>Successful!</p>"); break;}
       case 1: { strcat(html_page,"<p>Can't create file!</p>"); break;}
       case 2: { strcat(html_page,"<p>Can't connet to Server!</p>"); break;}
       case 3: { strcat(html_page,"<p>Can't open file!</p>"); break;}
       case 4: { strcat(html_page,"<p>Successful dowloading!</p>"); break;}
       case 5: { strcat(html_page,"<p>Can't send file!</p>"); break;}
       case 6: { strcat(html_page,"<p>Successful uploading!</p>"); break;}
    }
    strcat(html_page,"</body></html>"); //add end of HTML page
}

Dowloading

Kliknutím na odkaz prohlížeč generuje GET-požadavek, GET /dir1 HTTP/1.1 … který čte web-server, a v závislosti na to je-li to složka nebo soubor, generuje stránku s obsahem teto složky (funkce make_html_list): stránka nebo kontroluje existuje-li soubor (funkce overwrite_ask), ptá se o přepsání (funkce send_overwrite_queston) otázka a posílá soubor klientovi (funkce dowloading).

Uploading

2015/http-sd.1451316585.txt.gz · Poslední úprava: 2015/12/28 16:29 autor: Dmytro Kasianenko