Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 4 gru 2021, o 00:06


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 3 ] 
Autor Wiadomość
PostNapisane: 14 lis 2021, o 19:47 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 29 lis 2019
Posty: 143
Pomógł: 35

Problem poruszony w tym poście https://forum.atnel.pl/topic23887.html#p234186. W wielkim skrócie: stos sieciowy tuxgraphics, by design, nakłada ograniczenie na wielkość serwowanych plików. Jest to, odliczając headery HTTP ok 1,2-1,3kB a więc niewiele. Proponowane obejście problemu to podział serwowanej treści na kilka skompresowanych plików oraz pobieranie danych przez XHR z opcjonalnym scedowaniem części przetwarzania na przeglądarkę za pomocą skryptów np. javascript. Sam pomysł nie jest nowatorski, przeciwnie, na obecnych stronach internetowych schemat jest spotykany praktycznie wszędzie. Ponieważ technika pozwala na znaczne ograniczenie wolumenu serwowanych danych oraz odciążenie mikrokontrolera, naturalnym jest wykorzystanie tego w embedded. Poniżej efekty zaimplementowania tego na AVR.
Wykonałem taką stronę:

Obrazek

Strona składa się z pliku opisu strony index.html, z pliku stylów style.css oraz kodu javascipt app.js. Pliki są nieco sztucznie napompowane tagami oraz tekstem i każdy z nich przekracza wielkość akceptowaną przez stos tuxgraphics. Pliki są umieszczone w katalogu "html" załącznika więc można je sobie obejrzeć. Następnie pliki zostały skompresowane algorytmem gzip do wielkości akceptowanych przez tuxgraphics. Do skompresowanych plików zostały dodane niezbędne headery HTTP (np. informujące o kompresji i typie MIME). Tak przygotowane pliki zostały dołączone do kodu. Dokładne wielkości oryginalnych i skompresowanych plików są na poniższym zrzucie ekranu (5.kolumna, w bajtach)

Obrazek

Kilka słów o kompresji: w zasadzie serwer http powinien sprawdzać w nagłówkach rządania czy przeglądarka w ogóle akceptuje kompresję i wg. jakiego algorytmu. W razie braku stosownego nagłówka powinien serwować zasób nieskompresowany. Jednakże praktycznie wszystkie obecne przeglądarki obsługują kompresję gzip więc przedstawiona implementacja pomija sprawdzanie.
Stos tuxgraphics 5.10 (najnowszy) http://www.tuxgraphics.org/common/src2/article09051/, mikrokontroler atmega328pa modułem ENC28J60. Efekt:

Jak widać strona chodzi doskonale, znacznie lepiej niż się spodziewałem :-). W ramach szybkich testów, z powodzeniem, wczytałem ją na trzech przeglądarkach jednocześnie. To oczywiście żaden miarodajny test więc mam zamiar poddać układ testom bardziej wymagającym. Spodziewam się uzyskania wyniku co najmniej kilkudziesięciu request/responsów na sekundę :-).
W załączniku załączam większą część kodu więc można to sobie zobaczyć na żywo.
Kompilacja wsadu. W Eclipse założyć zwykły projekt AVR na atmega328p (po zmniejszeniu bufora do 723 bajtów można spróbować na m168 albo nawet na m88). Do projektu zaimportować wszystkie pliki z katalogu "webserwer" załącznika. We właściwościach projektu dołączyć bibliotekę "libweb_demo.a" tak jak na poniższym obrazku.

Obrazek

Plik libweb_demo.a zawiera skompresowane pliki strony. Co tam dokładnie jest można sobie obejrzeć poleceniem
Składnia: [ Pobierz ] [ Ukryj ]
język bash
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Załączniki:

Aby zobaczyć załączniki musisz się zalogować. Tylko zalogowani użytkownicy mogą oglądać i pobierać załączniki.

_________________
Think for yourself and question authority.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 lis 2021, o 21:20 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 26598
Lokalizacja: Szczecin
Pomógł: 1018

To by można było dać od razu do działu DIY forum - w końcu jakiś porządny i mega praktyczny przykład. Bardzo mi się podoba, tym bardziej że ja akurat nie mam żadnej wiedzy o htmlach, javascriptach itp itd

Bardzo fajnie zrobiona stronka aż bym sam chciał się kiedyś nauczyć tworzyć takie podstawowe ładne stronki ! ;)

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 lis 2021, o 20:23 
Offline
Użytkownik

Dołączył(a): 27 lut 2013
Posty: 227
Pomógł: 4

Super, że się tym pochwaliłeś ;) Dobra robota ! ;D



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 3 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 1 gość


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO