Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

enc28j60 i avr - serwer www z możliwoscią sterowania

ralf13526 22 Sie 2013 22:14 2478 1
  • #1 22 Sie 2013 22:14
    ralf13526
    Poziom 14  

    Witam
    Uruchomiłem przykład z tej strony http://tuxgraphics.org/electronics/200904/embedded-webserver-equipment-control.shtml i wszystko działa tak jak powinno i mam możliwosc zdalnego sterowania z serwera na avr. Problem jest z tym że nie rozumiem w jaki sposób realizowane jest w podanym niżej kodzie załączanie i wyłączanie czterech portów atmegi. Pomimo opisów nie wiem co i jak się po kolei dzieje jeśli kliknę na odnośnik służący do załączenia jednego z portów. Jeśli ktoś byłby w stanie mi to rozjaśnić, byłbym bardzo wdzięczny.


    main.c

    Kod: cpp
    Zaloguj się, aby zobaczyć kod




    websrv_help_functions.c

    Kod: cpp
    Zaloguj się, aby zobaczyć kod

    1 1
  • Pomocny post
    #2 23 Sie 2013 22:02
    ZbeeGin
    Poziom 38  

    To dość proste. Przy kliknięciu na link przeglądarka kopiuje odpowiedni adres URL ze specjalnie przygotowanymi danymi umieszczonymi w tym adresie i przekaże do zrealizowania jako zwykłe zapytanie HTTP. Serwer otrzymuje zapytanie (w skrócie):

    Code:
    GET /?sw=pd5&a=0 HTTP/1.1
    
    Host: 192.168.1.10
    User-Agent: Mozilla/5.0 (X11; U; Linux i686; pl; rv:1.8.1.7) Gecko/20070914 Firefox/2.0.0.7


    Tekst pomiędzy GET a HTTP/1.1 zostanie przetworzony przez procedury z analyse_get_url(). Wyszukane zostaną odpowiednie ciągi znaków:
    - 'sw' oznaczać będzie, że po znaku '=' będzie podany numer pinu, którego stan trzeba zmienić. Procedura sprawdzi sobie najpierw czy jest 'pb' i jak taki ciąg znajdzie to weźmie cyfrę i przerobi na wartość oraz załaduje ją do zmiennej port,
    - 'a' oznaczać będzie, że po znaku '=' będzie podana nowy stan tego pinu. Jeśli znakiem będzie '1' to zmienna on też będzie równa 1. Potem seria poleceń if() będzie włączała lub wyłączała wybrany pin.

    Na koniec serwer odpowie standardowym kodem:

    Code:
    HTTP/1.1 200 OK


    Tak by przeglądarka wiedziała, że zapytanie zostało przetworzone i nie było w nim błędów.


    Aby trzymać się standardów przekazywania parametrów w zapytaniach GET, adres '/' od treści danych został oddzielony przez znak '?', a kolejne parametry oddzielone znakiem '&'.

    1