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



Teraz jest 10 sty 2025, o 18:32


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 9 ] 
Autor Wiadomość
PostNapisane: 8 lip 2014, o 00:41 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 07 kwi 2013
Posty: 418
Lokalizacja: Rzeszów
Pomógł: 102

Natrafiłem na dość irytujący problem przy wysyłce zbyt dużej ilości danych do układu ENC28J60 w ramach jednego pakietu (HTTP response), a mianowicie nie jest możliwe wysłanie więcej niż 1518 bajtów (wliczając nagłówek)...

Urządzenie ma być serwerem i posiadać dość rozbudowane strony, a niestety nie jestem się w stanie zmieścić w ramach jednego pakietu. Tutaj pojawia się moje pytanie: w jaki sposób przesłać kilka pakietów, w ten sposób, aby stanowiły jedną długą odpowiedź dla klienta?

Fragment kodu opdowiedzalny za formowanie oraz przesłanie danych:

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Dodam jeszcze, że przesyłanie mniej rozbudowanych witryn (mieszczących się w ramach jednego pakietu) działa perfekcyjnie.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 lip 2014, o 09:17 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 23 paź 2011
Posty: 401
Lokalizacja: Siedlce
Pomógł: 7

Też to zauważyłem - zrobiłem stronę konfiguracyjną urządzenia (IP, uptime, status) i na 1490 bajtów (MTU) "HALT!"
Niestety nie miałem czasu zgłębiać tego problemu, ale chętnie zobaczę rozwiązanie na przyszłość... :)

_________________
Czekamy na RedBook'a!



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 lip 2014, o 09:48 
Offline
Użytkownik

Dołączył(a): 20 wrz 2013
Posty: 647
Zbananowany użytkownik

Pomógł: 101

Czy aby w bibliotece z której korzystacie w nagłówku nie jest nasmarowane coś takiego?

ip_arp_udp_tcp.c napisał(a):
* Author: Guido Socher
* Copyright: GPL V2
* See http://www.gnu.org/licenses/gpl.html
*
* IP, Arp, UDP and TCP functions.
*
* The TCP implementation uses some size optimisations which are valid
* only if all data can be sent in one single packet. This is however
* not a big limitation for a microcontroller as you will anyhow use
* small web-pages. The web server must send the entire web page in one
* packet. The client "web browser" as implemented here can also receive
* large pages.


Autor postu otrzymał pochwałę

_________________
+++++[>++++<-]>[>++++++<-]>.---------.+++.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 lip 2014, o 10:23 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 07 kwi 2013
Posty: 418
Lokalizacja: Rzeszów
Pomógł: 102

Zgadza się faktycznie jest taki komentarz, a zupełnie nie zwracałem na niego uwagi.

Czy w takim razie jest jakikolwiek sposób (lub biblioteka), który umożliwi przesłanie większej ilości danych, czy też na 8-bitowych AVR jest to niemożliwe?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 lip 2014, o 10:34 
Offline
Moderator
Avatar użytkownika

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

atmel napisał(a):
czy też na 8-bitowych AVR jest to niemożliwe?


Ja niejednokrotnie pisałem, wciąż piszę - że pomysł stawiania serwerów http na AVR jest delikatnie mówiąc nietrafiony :(

Za to możliwości komunikacji UDP albo wykorzystania klienta www żeby mieć kontakt z serwerm http na jakimś hostingu normalnie, to już są spore ...

_________________
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: 8 lip 2014, o 14:15 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 07 kwi 2013
Posty: 418
Lokalizacja: Rzeszów
Pomógł: 102

mirekk36 napisał(a):
Za to możliwości komunikacji UDP albo wykorzystania klienta www żeby mieć kontakt z serwerm http na jakimś hostingu normalnie, to już są spore ...

Czy w takim razie UDP umożliwia odbieranie i wysyłanie zapytań nadawanych przez żądanie przeglądarki (na wzór TCP/IP)?
Zewnętrzny serwer odpada ponieważ urządzenie nie będzie miało dostępu do Internetu, jak również wykluczone jest "stawianie" jakiegokolwiek serwera w tej sieci.

mokrowski napisał(a):
Przesyłanie większej ilości danych wymaga bufora do składania strumienia komunikacyjnego. Wiele pakietów to najmniej 2, więc jest to 1518 bajtów x 2. Masz tyle RAM w AVR? :-) Oprócz tego naliczania nr. sekwencyjnych. powtórzeń, timerów, ttl'i itp... duże... Nie jest to niemożliwe ale skomplikowane i rozbudowane... bo można np. przesyłać mniejsze pakiety i zbudować strumień. Na tyle skomplikowane że w cytowanej bibliotece twórcy podjęli decyzję by.. tego nie robić :-)
Jeśli upierasz się przy stosowaniu stosu TCP/IP na 8-bit, zainteresuj się projektem http://www.contiki-os.org/.
Ma kompletny stos TCP/IP, nawet IPv6 jeśli chcesz..

RAM'u mam raczej sporo, bo aż 16kB (dodatkowo zewnętrzna pamięć to również żaden problem), ale jeśli jest to na tyle skomplikowane to ja również nie będę się za to zabierał :)
Spróbuję coś z tym OS zdziałać, a jeśli się nie uda to będę pewnie zmuszony zastosować jakiś gotowy moduł Ethernet<->UART, SPI :|



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 lip 2014, o 14:28 
Offline
Moderator
Avatar użytkownika

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

Po prostu jak ja wspominam UDP to mam na myśli całkiem inne projekt a nie żeby tym UDP broń boże łatać jakoś potrzeby serwera http ;)

oczywiście że potrzebny drugi klient udp ale tak jak pokazywałem w Bluebooku dwa procki mogą ślicznie gadać po ethernet / UDP a i jak się napisze jakąś apkę na PC to także samo można śliczne zastosowania wymyślać ;)

ten stosik contiki fajnie wygląda ;)


Autor postu otrzymał pochwałę

_________________
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: 8 lip 2014, o 14:39 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 07 kwi 2013
Posty: 418
Lokalizacja: Rzeszów
Pomógł: 102

Dziękuję za pomoc oraz wyznaczenie dalszej drogi.
Połączenia 1 do 1 odpadają, ale w przypadku innych projektów wiedza na temat UDP może się przydać.

Zabieram się za Contiki ;)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 lip 2014, o 14:54 
Offline
Moderator
Avatar użytkownika

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

no no z tym ipv6 to już zaszalał autor ;)

_________________
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  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 9 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

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


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