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

KURS HOME ASSISTANT

Chcesz zautomatyzować swój dom bez skomplikowanego kodowania?
Zastanawiasz się nad wyborem sprzętu, oprogramowania i aplikacji?
Od czego zacząć przygodę z HA w 2025? Co będzie najlepsze na start?

Nasz kurs Home Assistant nauczy Cię krok po kroku, jak łatwo zautomatyzować swój dom i oszczędzić na rachunkach za prąd i ogrzewanie. Bez chmur, bez zbędnych abonamentów. Twoja przygoda z Home Assistant zaczyna się tutaj!

↓↓↓

    Szanujemy Twoją prywatność. Możesz wypisać się w dowolnym momencie.




    Teraz jest 15 kwi 2025, o 10:25


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 18 ] 
    Autor Wiadomość
    PostNapisane: 25 paź 2014, o 23:50 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 12 maja 2014
    Posty: 1089
    Pomógł: 34

    Witam wszystkich!

    Ostatnimi czasy na topie jest problem wlasnej komunikacji UDP. Jest to temat dosc popularny jako , ze Mirek porusza go w BB. Wiec kazdy kto tam dochodzi staje przed problemem kiedy chcialby zrobic cos swojego.

    Jak osobiscie zauwazylem wiekszosc z Was wybiera droge przez programowanie C#. No i tutaj dla niektorych moga sie pojawic problemy jesli jeszcze wczesniej nie bawili sie tym jezykiem programowania.

    Dlatego postanowilem napisac poradnik dotyczacy tworzenia wlasnej aplikacji w C# wlasnie do komunikacji UDP. Bedzie on oczywiscie przeprowadzac Was krok po kroku jak osiagnac wybrany cel.

    Na chwile obecna aby kazdy mogl pracowac w swoim tempie i aby mozna bylo pomoc ludziom w zrozumieniu dzialania tych mechanizmow poradnik bedzie podzielony na kilka czesci.

    Kolejne czesci bede uzupelnial az opracujemy w pelni wielowatkowy program do wysylania/odbierania.

    Technologia jaka wykorzystamy to Visual Studio. Ja osobiscie bede uzywac 2013 ale mozna to osiagnac rowniez korzystajac ze wczesniejszych wersji. Jedyne co moze byc problematyczne to , ze zrzuty ekranu prezentowane przeze mnie beda w j.ang wiec jak tylko bede mogl to staral sie Was naprowadzic na ta opcje w j.pol

    Kolejna informacja to forma projektu. Bedziemy uzywac Windows Forms. W dzisiejszych czasach to juz jak "dziadek" ale da rade , zebysmy mogli osiagnac to czego potrzebujemy :)

    Przygotowanie srodowiska do pracy

    Wiec uruchamiamy nasze Visual Studio i tworzymy nasz nowy projekt. Nadajemy mu jakas "sensowna" nazwe :) i wybieramy odpowiednio
    • Aby byl to jezyk ptogramowania C#
    • Aby wersja .Net to 4.0 (ma to znaczenie jesli uzywamy cos innego niz VS2013)
    • Aby nasz projekt byl typu Windows Forms Application

    Obrazek

    Jako , ze chcialbym utrzymac ten poradnik w tonie funkcjonalnym pozostawiam Wam drodzy czytelnicy uklad graficzny aplikacji :) My zaczniemy od bardzo prostej rzeczy , czyli .....

    Dodajemy pierwsza kontrolke

    W naszej aplikacji bedziemy dzialac w odpowiedzi na jakies zdarzenie. Te najbardziej powszechne to "nacisniecie guzika". Wiec .... z Toolbox widocznego po lewej stronie wybieramy "button" i przeciagamy go na nasza aplikacje.

    Obrazek

    Obrazek


    W ten oto sposob mamy zakonczony wstepny etap. Nastepnie ,zeby nasza aplikacja wiedziala , ze cos ma sie stac klikamy dwa razy w nasz guzik. Visual Studio automatycznie utworzy dla nas metode obslugujaca zdarzenie dla wcisnietego guzika

    Jesli nie zmienialiscie Cie nazwy guzika i pozostaliscie przy domyslnej powinniscie teraz miec cos na wzor tego co w ponizszym zrzucie ekranu ... czyli poprawnie3 utworzona metode dla obslugi naszego zdarzenia.

    Obrazek

    Aby dalej moc pracowac i tworzyc kod musimy dodac nastepujaca referencje u gory naszego kodu , bo inaczej ani rusz :D

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


    Zanim przejdziemy dalej chcialem Wam pokazac , w ktorym miejscu bede tworzyc zmienne GLOBALNE. Dlatego zawsze kiedy pozniej bede wspominac , ze tworze zmienna takiego zasiegu - zwroccie prosze uwage gdzie ona sie znajduje.

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


    W tym momencie mozemy stworzyc juz zmienne , ktora wykorzystamy do wysylania naszych ramek UDP.

    Zaczynamy od IPEndpoint.Potrzebna nam bedzie ona w dalszej czesci. Dzieki tej zmiennej definiujemy jaki adres IP wykorzystamy oraz na jakim porcie. Jako , ze bedziemy wysylac dane podajemy tutaj dane naszego komputera / serwera. Port 1234 jest przykladowy i moze/powienenen byc zmieniony na cokolwiek co Wam odpowiada.

    Ponizsze zmienne jeszcze NIE DEFINIUJA naszego urzadzenia DOCELOWEGO ... to pozniej

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


    Prosze poswiec chwilke zeby zobaczyc co sie dzieje w tym kodzie. Tworzymy nasza zmienna a nastepnie jako parametry do jej stworzenia musimy podac adres IP naszego komputera/serwera a pozniej port , ktory wykorzystamy do komunikacji UDP. Bardzo wazne na tym etapie jest by adres IP byl poprawny. W przeciwnym wypadku aplikacja niestety sie wysypie (kontrola bledow to temat rzeka na inny poradnik wiec zostawiam to w Twojej mocy)

    Teraz jestesmy gotowi aby stworzyc zmienna , ktora posluzy nam do komunikacji UDP. Bedzie to takze zmienna o zasiegu GLOBALNYM i bedzie typu UDPClient

    Dzieki powyzszej modyfikacji nasz kod zmienia sie troszeczke ... i wyglada nastepujaco.

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


    Po tych wszystkich zabiegach przejdziemy do naszej metody obslugujacej nacisniecie naszego guzika. Przed chwila zainicjalizowalismy sobie zmienna o nazwie klient i to wlasnie ja tam wykorzystamy do wysylania danych.

    Zanim jednak przejdziemy do sedna ... Pamietaj , ze bedziemy wysylac bajty :) nikt nie oczekuje , ze bedziesz w stanie wpisac bajty do wyslania. Mirek slusznie zauwaza ,ze chcemy pracowac z ASCII - dlatego wiec chcialbym na wstepie zaznaczyc , ze aby to obslugiwac w C# bedziemy korzystac z dostepnych metod opisanych ponizej....
    • Aby zamienic wartosc ze string na byte[] wykorzystamy
      Składnia: [ Pobierz ] [ Ukryj ]
      język csharp
      Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
    • Aby zamienic wartosc z byte[] na string wykorzystamy
      Składnia: [ Pobierz ] [ Ukryj ]
      język csharp
      Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
    • Aby sprawdzic ile byte'ow ma nasz string wykorzystamy (jest to jeden z wielu sposobow)
      Składnia: [ Pobierz ] [ Ukryj ]
      język csharp
      Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

    Aby powyzsze zadzialalo prawidlowo musimy dodac kolejna referencje na poczatku naszego programu. Tym razem jest ona potrzebna do dzialania powyzszych funkcji.

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


    Moze juz zastanawiasz sie gdzie jest cos definiujacego miejsce do ktorego wysylamy nasze ramki ? No i masz racje. Nie zdefiniowalismy takiego jeszcze.
    Tak jak i wczesniej bedzie to zmienna o zasiegu GLOBALNYM i nazwie ep_destination

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


    W powyzszym musisz zdefiniowac adres IP pod ktory bedziesz wysylac dane oraz port na ktorym docelowa aplikacja nasluchuje.



    Teraz mamy wszystkie nasze skladniki gotowe.... wracamy wiec do miejsca wysylania naszej ramki. We wczesniej wspomnianej metodzie przygotujemy sobie nowa zmienna typu string oraz wyslemy ja wykorzystujac wczesniejsza zmienna o nazwie klient

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


    No i na chwile obecna to wszystko - po uruchomieniu naszej aplikacji oraz klikniecia guzika nasza aplikacja wysle pakiet UDP pod wskazany adres oraz port.


    Aby potwierdzic to sprawdzamy sobie konsolowa aplikacja ktora nasluchuje na okreslonym porcie.... no i dziala :)

    Obrazek

    Jednak ktos moglby powiedziec ... ale czy naprawde dziala ? Na potrzeby poradnika zrobilem zrzut ekranu programem do analizy ruchu sieciowego (takze na jego potrzeby byl to broadcast :) ale dziala tak samo )

    Obrazek


    No i na chwile obecna to chyba tyle jesli chodzi o czesc I. Jesli chodzi o punkty warte zwrocenia uwagi to :
    • Pracujac z obsluga sieci zapewnij sobie program do analizy ruchu sieciowego. Ja polecam WireShark'a
    • Zanim powiesz , ze cos nie dziala sprawdz czy jest ruch sieciowy / czy adresy IP sie zgadzaja oraz czy porty sa odpowiednie
    • Pracujac z AVR pomysl o tym jak rozpoznajesz czy nadeszla ramka, ktorej oczekujesz....


    Mam nadzieje ,ze sie przyda. Jesli bedzie zapotrzebowanie bedziemy kontynuowac serie.

    Pozdrawiam
    Raf

    _________________
    sig off ;(



    Ostatnio edytowano 27 paź 2014, o 00:06 przez RafPe, łącznie edytowano 2 razy

    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 26 paź 2014, o 01:05 
    Offline
    Moderator
    Avatar użytkownika

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

    Rafał to się bardziej nadaje do działu PORADNIKI ;) kawał fajnej roboty ... dla wszystkich CeHaszowników czy tam SiSzarpowców ;)

    _________________
    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: 26 paź 2014, o 01:46 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 12 maja 2014
    Posty: 1089
    Pomógł: 34

    mirekk36 napisał(a):
    to się bardziej nadaje do działu PORADNIKI


    Czytalem zasady i wg tego http://forum.atnel.pl/topic6018.html#p70573 poradnik ten powinien byl tu wyladowac :)


    No i zobaczymy czy sie komus przyda ;) jak tak to bedziemy szlifowac dalej ;) takie uzulepnienia dla wyobrazni poruszonej BB'kiem :D

    _________________
    sig off ;(



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 26 paź 2014, o 08:46 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 22 lip 2013
    Posty: 420
    Lokalizacja: Kraków
    Pomógł: 17

    Dzięki za poradnik ;) Zrobiłem tak jak opisałeś i komunikacja z avr działa :D ( miałem przez chwile kilka error'ow, ale to dlatego, bo brakło tego: using System.Net; )

    _________________
    GreenBook i BlueBook



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 26 paź 2014, o 09:00 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 12 maja 2014
    Posty: 1089
    Pomógł: 34

    programek napisał(a):
    Dzięki za poradnik ;) Zrobiłem tak jak opisałeś i komunikacja z avr działa :D ( miałem przez chwile kilka error'ow, ale to dlatego, bo brakło tego: using System.Net; )


    To bardzo sie ciesze , ze tak od reki Ci wyszlo!

    Jak dobrze pojdzie dzisiaj napisze poradniczek o pierwszym odbieraniu to wtedy bedziesz miec komplet :)


    Sent from my iPhone using Tapatalk

    _________________
    sig off ;(



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 26 paź 2014, o 09:20 
    Offline
    Użytkownik

    Dołączył(a): 16 mar 2013
    Posty: 157
    Pomógł: 6

    Dzięki RafPe! Mi też się to przyda i czekam z niecierpliwością na więcej:)



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 26 paź 2014, o 09:46 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 29 maja 2013
    Posty: 432
    Lokalizacja: Gostyń / Poznań
    Pomógł: 25

    No wlasnie odbireanie sie przyda :) bo wysylanie to juz kiedys rozpracowalem na podstawie informacji z sieci ale zeby odbierac asynchronicznie to chetnie podpatrze :)
    A czy sie przyda to chyba pytanie retoryczne :) wszystko sie przyda gdzie mozna sie czegos nauczyc ;) ja czekam na wiecej... Duuuzo wiecej... Chetnie wejde w c# jak ktos bedzie prowadzil za reke...
    Tak samo sie w c# super parsuje dane... Mozna by to polaczyc z odbiorem po udp a wtedy zrobienie apki do sterowania po LANie to juz powinien byc pikus :)

    _________________
    Podpis...



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 26 paź 2014, o 09:49 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 12 maja 2014
    Posty: 1089
    Pomógł: 34

    eMCe2 napisał(a):
    Tak samo sie w c# super parsuje dane... Mozna by to polaczyc z odbiorem po udp a wtedy zrobienie apki do sterowania po LANie to juz powinien byc pikus


    Tu masz ogromna racje :D Ostatnio wlasnie robilem apke do domu do obslugi temperatury / sensorow swiatla etc i wyszla bajecznie. Wszystko po UDP. Teraz mam przerwe , bo czekam na nowy laminat zeby je dokonczyc wiec pewnie dopisze reszte poradnikow :D

    _________________
    sig off ;(



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 26 paź 2014, o 10:41 
    Offline
    Użytkownik

    Dołączył(a): 24 sty 2012
    Posty: 1469
    Pomógł: 56

    RafPe napisał(a):
    eMCe2 napisał(a):
    Tak samo sie w c# super parsuje dane... Mozna by to polaczyc z odbiorem po udp a wtedy zrobienie apki do sterowania po LANie to juz powinien byc pikus


    Tu masz ogromna racje :D Ostatnio wlasnie robilem apke do domu do obslugi temperatury / sensorow swiatla etc i wyszla bajecznie. Wszystko po UDP. Teraz mam przerwe , bo czekam na nowy laminat zeby je dokonczyc wiec pewnie dopisze reszte poradnikow :D

    No właśnie przed chwilą czytałem o Twoich problemach z laminatem
    Z przymrużeniem oka można powiedzieć że się cieszę bo dzięki temu "wysmażyłeś" taki super
    poradnik i będą dalsze części ;-)
    Jak najbardziej dobra robota i ja czekam na nasz ulubiony ciąg dalszy? :)

    _________________
    Jestem początkujący i moje porady mogą być błędne



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 26 paź 2014, o 10:47 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 17 paź 2014
    Posty: 54
    Pomógł: 0

    +++++++++++++++++++++++++++++++++++++++

    czekam na dalsze informacje!

    Edit:

    problem:

    "Error 2 A field initializer cannot reference the non-static field, method, or property 'SterownikUDP.Form1.ep' "

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


    ostatnia linijka krzyczy.

    Program Visual C# 2010 Express

    _________________
    Likwidator absolutny.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 26 paź 2014, o 10:56 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 12 maja 2014
    Posty: 1089
    Pomógł: 34

    Cytuj:
    Z przymrużeniem oka można powiedzieć że się cieszę


    Mnie tez ta sytuacja pozytywnie rozbawila :) Fajnie , ze ktos moze z tych porad skorzystac. W tym wypadku dzis zajmiemy sie pewnie troche zmodyfikowana wersja wysylania :D

    ------------------------ [ Dodano po: 1 minucie ]

    Likwidator napisał(a):
    +++++++++++++++++++++++++++++++++++++++

    czekam na dalsze informacje!

    Edit:

    problem:

    "Error 2 A field initializer cannot reference the non-static field, method, or property 'SterownikUDP.Form1.ep' "

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


    ostatnia linijka krzyczy.

    Program Visual C# 2010 Express


    W liniach kody masz dwa miejsca , ktore musisz uzupelnic o poprawne adresy IP. Czyli :
    • TWOJ ADRES IP co moze byc np 192.168.1.15
    • ADRES IP DOCELOWY a tu moze byc np 192.168.1.100

    Zalezy od Twojej sieci komputerowej

    _________________
    sig off ;(



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 26 paź 2014, o 12:27 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 17 sie 2013
    Posty: 3797
    Lokalizacja: Grudziądz
    Pomógł: 143

    RafPe kurka nie ma mnie przykompie ale jak tylko zasiade to przeczytam calosc. Dobrze wiesz ze mnie sie przydadza poradniki C# no nie tylko mi ale dzieki i prosze o jeszcze ;)

    Namazane ze smarta.

    _________________
    Usługi druku przestrzennego - www.drumik.pl



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 26 paź 2014, o 12:55 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 12 maja 2014
    Posty: 1089
    Pomógł: 34

    majster napisał(a):
    Dobrze wiesz ze mnie sie przydadza poradniki C#


    Majster :) dajesz znaka i robimy sesje na skaJpie :) a Ty tez dobrze wiesz , ze mnie sie przyda kazda wiedza w zakresie elektroniki jak i lutowania :) wiec mozemy sie powymieniac :D

    _________________
    sig off ;(



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 26 paź 2014, o 13:54 
    Offline
    Użytkownik

    Dołączył(a): 13 maja 2014
    Posty: 135
    Pomógł: 11

    Witam

    Świetny poradnik. Nie ma wątpliwości co do przydatności (kurde, no prawie wierszyk :D ). Bardzo dziękuję i stanowczo :D poproszę o ciąg dalszy.

    Pozdrawiam



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 26 paź 2014, o 18:20 
    Offline
    Uzytkownik zasłużony dla forum.atnel.pl
    Avatar użytkownika

    Dołączył(a): 16 lip 2012
    Posty: 2088
    Lokalizacja: Leżajsk / Kraków
    Pomógł: 411

    Wielkie dzięki. Zabieram się za testy.

    _________________
    Dragonus Cracovus: Biomagia



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 15 sty 2016, o 21:18 
    Offline
    Użytkownik

    Dołączył(a): 05 lut 2014
    Posty: 252
    Lokalizacja: obok Częstochowy
    Pomógł: 14

    Działa świetnie. Lecę dalej :)



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 25 paź 2016, o 00:13 
    Offline
    Użytkownik

    Dołączył(a): 02 sty 2013
    Posty: 35
    Pomógł: 1

    Mnie interesuje tylko jedno , w jakim cel tworzysz IPEndPoint nadawcy?
    Składnia: [ Pobierz ] [ Ukryj ]
    język csharp
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



    Wymuszasz port z którego będzie nadawana wiadomość ?



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 25 paź 2016, o 20:36 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 12 maja 2014
    Posty: 1089
    Pomógł: 34

    dziabi3 napisał(a):
    Mnie interesuje tylko jedno , w jakim cel tworzysz IPEndPoint nadawcy?
    Składnia: [ Pobierz ] [ Ukryj ]
    język csharp
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



    Wymuszasz port z którego będzie nadawana wiadomość ?


    Tak - moglbys to zmienic np na

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


    lub po prostu uzyc UdpClient. Jako , ze dosc dawno kiedy pisalem ten poradnik mysle , ze to bylo bardziej w celach szkoleniowych ;)

    _________________
    sig off ;(



    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: 18 ] 

    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:  
    cron
    Sitemap
    Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
    phpBB SEO