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 12 kwi 2025, o 03:45


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 21 ] 
    Autor Wiadomość
    PostNapisane: 9 lis 2014, o 16:28 
    Offline
    Użytkownik
    Avatar użytkownika

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

    Wstep

    Witam wszystkich po dosc dlugiej przerwie. Jak niektorzy sprawnie zauwazyli ... zajmowalem sie prawie fabrycznym wytwarzaniem plytek PCB. Kurcze bo jak sie zacznie to pozniej smigaja jedna za druga.

    No ale zeby to wszystko ze soba gadalo - trzeba miec dwukierunkowa komunikacje. I dzisiaj wlasnie taka zrobimy :D

    Jako , ze dzisiaj humor dopisuje .... zaczynamy :D

    Obrazek

    Wymagania

    Jako , ze jest to 3'cia czesc poradnika nie bede poruszac juz kwestii ktore omowilem we wczesniejszych poradnikach.
    Wiec jesli ktos chcialbys naprawde zrozumiec calosc prosze Cie o przeczytanie poprzednich czesci.

    [list=]
    [*] Czesc I : http://forum.atnel.pl/topic8960.html
    [*] Czesc II : http://forum.atnel.pl/topic8978.html
    [/list]


    Czym sie zajmiemy

    Wiec tak jak wspominalem wczesniej skoro poznalismy wysylanie to poznamy teraz odbieranie.

    Obrazek


    A poniewaz chcialbym , zebyscie wszyscy mogli poznac plusy i minusy kilku podejsc , ktore tu poznamy bedziemy omawiac je uzywajac kilka programistycznych sposobow. Jednakze , ze nie jest to lekcja dla developerow po dokladnie techniczne informacje odyslam Was do wujka "google" :)


    Przygotowanie aplikacji

    W tym wypadku zmodyfikowalem troszeczke aplikacje , ktorej uzywamy. Pozmienialem polozenie naszych guzikow , dodalem sobie kilka komponentow jak obrazki.

    Ale ten najwazniejszy to dodanie kontrolki typu TextBox o nazwe tb_odebrane. Bedzie ona nam sluzyla jako okno do danych ktore sobie odbieramy

    Obrazek

    Odbieranie - proba pierwsza

    Zaczniemy od zdefiniowania w kodzie - potrzebnych nam danych. Dane beda nastepujacego typu

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


    Pytanie .... gdzie umiescic te zmienne ? Wiec zaczniemy od umieszczenia ich w metodzie , ktora jest wywolywana po nacisnieciu guzika Konfiguruj

    ale... jesl zwrocisz uwage ... chyba beda potrzebne nam nowe kontrolki. Musimy sobie byc w stanie zdefiniowac na jakim porcie bedziemy nasluchiwac komunikacji ktora chcemy odebra.

    Wiec najpierw dodamy nowa kontrolke typu TextBox o nazwe tb_PORT_Odbieranie a posluzy ona nam do podania numeru portu , ktory wykorzystamy do odbierania danych.

    Wiec nasza AD HOC zmodyfikowana aplikacja wyglada nastepujaco :

    Obrazek

    Czyli posiada teraz kontrolke ktora umozliwi nam dalsza prace z odbieraniem.

    Wiec teraz mozemy wrocic juz do wlasciwego kodu ktory umozliwi nam odbieranie. Klikamy dwa razy na nasz guzik odpowiedzialny za konfiguracje i przenosimy sie dzieki tem automatycznie do metody ktora jest odpowiedzialna za obsluge tego zdarzenia.

    Obrazek

    Dodamy na samym koncu istniejeacego juz kodu nastepujace dwie linie

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


    Teraz kod wygladac powinenen cos w tym stylu :

    Obrazek

    Podjerzewam , ze powyzsza czesc kodu jest juz Ci znajoma prawda ? Wiec jest ona odpowiedzialna za utworzenie klienta UDP. Zostanie on tym razem utworzony na naszym porcie przeznaczonym do nasluchiwania oraz na IP naszego komputera.

    Jednak czy to wystarczy ? :O

    No oczywiscie , ze nie :) Nasza zmienna sluchacz (bo tak sobie ja nazwalem ) musi przeciez cos robic. Wiec musimy wykonac metode.
    Metoda do odbierania ladnie jest opisana w dokumentacji (http://msdn.microsoft.com/en-us/library/system.net.sockets.udpclient.receive(v=vs.110).aspx )

    W zwiazku z czym dodajemy w kodzie naszej konfiguracji linie kodu

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


    Kod wyglada teraz tak
    Obrazek

    Wiec odpalamy nasz program i obserwujemy co sie dzieje!






    Wnioski - proba pierwsza
    Wiec okazuje sie ,ze jak tylko odpalilismy program przestal dzialac ? Dlaczego tak sie stalo ? No wiec patrzymy na dokumentacje (przelaczylem ja specjalnie na jezyk PL ale to chyba nie byl dobry pomysl )

    Obrazek

    Wiec oczywiste staje sie ,ze mamy tzw watek blokujacy No i teraz co z tym babolem !? hehehhe wiec sprobujmy troszeczke innego podejscia.


    Odbieranie - proba druga

    Wiec dobrze- poznalismy jak przygotowac odbieranie teraz zrobmy zeby dzialalo.
    Pierwsze co zrobimy to usuniemy wczesniej dodana czesc kodu z metody konfiguracji guzika zostawiajac go tak jak bylo wczesniej. Powod ? Musimy zrobic tak aby nasze zmienne byly dostepne nie tylko w tamtej metodzie :D


    Zaczynamy od poprawnego skonfigurowania zmiennych. Zaznaczylem w kodzie gdzie powinny byc.
    Składnia: [ Pobierz ] [ Ukryj ]
    język csharp
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    Teraz w metodzie konfiguracyjnej (czyli tej ktora osbluguje guzik do Konfiguracji) - tak jak z pozostalymi elementami dodamy konfiguracje naszego odbierania

    Obrazek

    Zwroc prosze uwage ,ze kod ktory pewnie masz w tej metodzie zaznaczylem "zielona" strzalka i "zwinalem" dla wiekszej czytelnosci. Kod ktory dodalismy znajduje sie zaznaczony czerwona strzalka.

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


    To co dzieje sie w tej metodzie jest juz Ci znane :) wiec nie bedziemy niepotrzebnie walkowac tego samego.

    Wiec gdzie umiescimy nasze odbieranie ? No proste ... tuz po wyslaniu chcemy odebrac. Wiec klikamy dwa razy na guzik odpowiedzialny za wysylanie , ktor automatycznie wysyla nas do metody wywolywanej w odpowiedzi na to zdarzenie.

    Dodajemy linie kodu i nasza metoda 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.



    Jestesmy juz na etapie , ze zanim odpalimy program chcielibysmy juz widziec , ze cos odebralismy. Wiec musimy jakos nasze dane wyswietlic na specjalnie dodanej do tego kontrolce (tej ktora dodalismy wczesniej (u mnie nazywa sie tb_odebrane)

    Zmieniamy wiec znowy guzik ktory wysyla nasz kod

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


    Wiec omowmy dokladnie co tutaj sie dzieje (dla latwosci uzylem kolorowych strzalek )

    Obrazek

    • Zielona strzalka - wskazuje na to ze chcemy wpisac we wlasciwosc Text naszej kontrolki. Robilismy to juz wczesniej wiec to tylko takie male przypomnienie
    • Niebieska strzala - wykorzystuje domyslna metode zajmujaca sie ASCII aby z byte[] wyswietlic string. Uzywamy metody GetString
    • Czerwona strzala - tutaj podajemy nasza zmienna i od razu uruchamiamy metoda odbierajaca dane.



    Hmmm no i co teraz ? Odpalamy :) Potrzebne nam tylko urzadzenie , ktore wysle nam pakiet na port RX (ten na ktorym nasluchujemy ) Dla celow pokazowych uzyje skryptu , ktory wysle mi okreslony ciag znakow zeby pokazac Wam , ze to dziala jak nalezy

    Obrazek
    Obrazek

    Na drugim obrazku wyraznie widac , ze aplikacja odebrala to co wyslal moj skrypt ( zamiast skryptu proponuje uzyc ATB :) - ja uzywam skryptu bo jest mi szybciej napisac poradnik )

    Wnioski - proba druga
    Wiec juz jest troszeczke lepiej bo mozemy ladnie sobie skonfigurowac aplikacje , ale co sie dzieje kiedy wysylasz pakiet ? No niestety - dopoki nie odbierzesz pakietu cala aplikacja wisi i nic sie nie da zrobic :O A co gorsza .... co sie stanie jak nie otrzymamy pakietu ?

    Na powyzsze mozesz odpowiedziec pewnie sobie sam :)


    Odbieranie poprawnie - podejscie 3 i pol :)

    Wiec abysmy mogli poprawnie odbierac dane nie zaklocajac pracy naszego programu musimy podejsc do problemu technologicznie :) wrzucimy go sobie tak , aby wykonywal sie "niewidocznie" dla nas lub wykonywal sie tylko kiedy nadleca dane ktore trzeba odebrac.

    Podzielimy ten poradnik na 2 : dla tych ktorzy korzystaja z .Net 4.5(1) oraz dla pozostalych

    .Net 4.5.1
    Jesli zagladasz tu to droga do sukcesu jest naprawde krotka. Tworzymy nowa metode ktora bedzie caly czas w tle sprawdzac czy nadlecialy nowe dane i jesli tak to uaktualni nasze pole tekstowe.

    Kod metody

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


    A teraz szybkie objasnienie (jako , ze wiekszosc ma komentarz ) to ciekawa jest ostatnia linia. Jest to sposob aby uaktualnic kontrolke kiedy jestesmy w innym watku niz glowny watek aplikacji. Gdybysmy tego nie mieli napisanego w ten sposob aplikacja bylaby niestabilna/wysypala by sie / lub nie pokazywalby nadchodzacych wiadomosci.

    A teraz tylko dodajemy wywolanie naszej metody w konfiguracji i po wszystkim

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


    I po tym malym zabiegu masz calkowicie dzialajaca aplikacje. Uruchamiasz , klikasz konfiguruj po podaniu wszystkich danych i voilla ;)


    ~ .Net 4
    Jesli nie uzywasz .Net 4.5(1) to podejscie bedzie troszeczke inne

    Tworzymy nowa metode

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



    W metodzie ktora konfiguruje nasza aplikacje dodajemy linie

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


    W zasadzie mozna powiedziec , ze mowimy cos w rodzaju ... "zacznij sluchac korzystajac ze zmiennej sluchacz i skocz do metody OdbierajDane jak tylko pojawia sie nowe dane"

    Oczywiscie , jest to bardzo skrocona definicja ale powinna dac Ci jakies lepsze wyobrazenia dlaczego robimy to w ten sposob.


    Teraz uzupelnimy nasza metode Odbierania danych

    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 to wszystko! :)

    Podziekowania / Wnioski / Zaluzje :)
    Obie wyzej wymienione metody dzialaja wysmienice :)Gdyby ktos zlapal jakies babole zapraszam do komentowania.

    Dla potwierdzenia video obslugujace Callbacki i Async



    W tym miejscu chcialem Wam podziekowac za uwage i mam nadzieje , ze sie Wam przyda w/w kod. Jednosczesnie sorry za totalny chaos :) w poradniku. Mam nadzieje, ze wylapiecie to co Wam potrzebne.

    _________________
    sig off ;(



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 11 lis 2014, o 11:04 
    Offline
    Użytkownik
    Avatar użytkownika

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

    Ha ha po takim czasie pierwszy ... dzięki za 3 poradniczki. Przerabialiśmy to wcześniej w moim programie. Nie mniej dzięki tym poradnikom wszystko jest dla mnie jaśniejsze. Jak już zrobię płytkę i dojdą klamoty to pozmieniam sobie pare rzeczy w programie dzięki tobie.

    Przydatny zastrzyk atnelański w 3 poradnikach. Może by z tego zrobić jeden poradnik wideo ? :)

    Namazane ze smarta.

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



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 11 lis 2014, o 11:15 
    Offline
    Użytkownik
    Avatar użytkownika

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

    majster napisał(a):
    Może by z tego zrobić jeden poradnik wideo ?


    No to Mirek musialby usiasc w koncu do C# :)

    Ciesze sie , ze cos Ci pomoglo :) chociaz myslalem , ze w Twoim programie mamy juz wszystko :)

    _________________
    sig off ;(



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 11 lis 2014, o 13:02 
    Offline
    Użytkownik
    Avatar użytkownika

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

    U mnie trzeba zrobic sprzatanie i porzadki a dzieki poradnikowi jak coś skopie to bedę mógł to w łatwy sposób naprawić.

    Namazane ze smarta.

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



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 12 lis 2014, o 21:34 
    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

    async... await... - trzeba się poduczyć. Ciekawe jak wyglądałaby obsługa portu szeregowego w takim wykonaniu?
    Dzięki za kolejne klocki do zabawy :mrgreen:

    _________________
    Dragonus Cracovus: Biomagia



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 13 lis 2014, o 21:13 
    Offline
    Użytkownik

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

    Dzięki bardzo za 3 część poradnika.
    Przyda się bardzo :!:

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



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 14 lis 2014, o 14:39 
    Offline
    Użytkownik
    Avatar użytkownika

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

    To teraz czekam na info czy wszystkim sie udalo odbierac :)

    _________________
    sig off ;(



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 8 sty 2015, o 23:04 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 13 maja 2012
    Posty: 174
    Lokalizacja: Gliwice
    Pomógł: 19

    Potwierdzam że to działa :) dzięki wielkie.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 8 sty 2015, o 23:33 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 14 lis 2011
    Posty: 534
    Lokalizacja: Mierzyn
    Pomógł: 9

    Kawal dobrej roboty :)

    _________________
    pozdrawiam
    Jachu



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 17 sty 2016, o 19:42 
    Offline
    Użytkownik

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

    Udało się :)
    Tylko jak to pojąć? :(



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 17 sty 2016, o 23:30 
    Offline
    Użytkownik
    Avatar użytkownika

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

    Rafał555 napisał(a):
    Udało się :)
    Tylko jak to pojąć? :(



    To pisz z czym masz problem to postaram Ci sie nakreslic co i jak :D

    _________________
    sig off ;(



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

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

    A nie. Nic takiego. W międzyczasie dowiedziałem się co to jest "Linq". To właśnie te jakieś " => " mnie przestraszyły w twoim kodzie :).



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 26 kwi 2016, o 20:12 
    Offline
    Nowy

    Dołączył(a): 16 sty 2015
    Posty: 5
    Pomógł: 0

    Witam kolegów mam takie pytanie.
    Chciałbym odebrac ramke z uc która wygląda powiedzmy "1 ^ 45 " teraz by trzeba ten łańcuch podzielic i zapisać wartość 45 do odpowiedniej zmiennej którą wyznaczy znacznik 1. I za nic nie mogę z tym sobie poradzic dopiero raczkuję w c#. Udaję mi się tylko dobierać ramkę i wyświetlić w textboxie tak jak to było tu w wątki przedstawione. Z góry dzięki za pomoc!
    Pozdrawiam Bartek.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 27 kwi 2016, o 21:49 
    Offline
    Użytkownik
    Avatar użytkownika

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

    String i funkcja split albo możesz też użyć index Of :) jak spróbujesz jakiś kod wkleić to wtedy może będzie można Ci pomoc

    Sent from my GT-I9506 using Tapatalk

    _________________
    sig off ;(



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 30 kwi 2016, o 19:07 
    Offline
    Nowy

    Dołączył(a): 16 sty 2015
    Posty: 5
    Pomógł: 0

    Witam dopiero zaczynam jaką kolwiek zabwe z c#. Program wysyła i odbiera dane z procka mam tylko problem z tym podziałem tzn jezeli zdefiniuje sobie jakis łańcuch znaków w programie to nie ma problemu ładnie dzieli. Problem natomiast sie zaczyna gdy podstawiam zmienna "wiadomosc" program sie wykrzacza... poniżej ta część kodu.
    Pozdrawiam.

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

    Komunikat błędu
    An unhandled exception of type 'System.NullReferenceException' occurred in Sterownik.exe

    Additional information: Object reference not set to an instance of an object.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 1 maja 2016, o 12:17 
    Offline
    Użytkownik
    Avatar użytkownika

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

    Wklej dokładnie jak wygląda wiadomość

    Sent from my GT-I9506 using Tapatalk

    _________________
    sig off ;(



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 2 maja 2016, o 09:25 
    Offline
    Nowy

    Dołączył(a): 16 sty 2015
    Posty: 5
    Pomógł: 0

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


    "arg" to zmienna z wartoscią temperatury zadanej która zmnienam za pomocą programu w C#. Steruje 3 takie temperatury samo sterowanie działa poprawnie natomiast to nieszczesne odbieranie nie chce ze mna wspópracowac tzn. odbieram paczke i wyświatlam textboxie "Temp_1 ^ 23" itd. zależnie od wartosci temperatury. Tak jak pisałem we wczesniejszym poście próba podziału konczy sie krzakiem.
    Dzięki za zainteresowanie sie problemem.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 2 maja 2016, o 20:31 
    Offline
    Użytkownik
    Avatar użytkownika

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

    bartm71 napisał(a):
    z procka wysyłam dokładnie:
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    "arg" to zmienna z wartoscią temperatury zadanej która zmnienam za pomocą programu w C#. Steruje 3 takie temperatury samo sterowanie działa poprawnie natomiast to nieszczesne odbieranie nie chce ze mna wspópracowac tzn. odbieram paczke i wyświatlam textboxie "Temp_1 ^ 23" itd. zależnie od wartosci temperatury. Tak jak pisałem we wczesniejszym poście próba podziału konczy sie krzakiem.
    Dzięki za zainteresowanie sie problemem.



    Prosze Cie bardzo - troche przekombinnowales bo zrobiles sobie tablice stringow i to w tym miejscu nie wyjdzie :)

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

    _________________
    sig off ;(



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 12 maja 2016, o 20:05 
    Offline
    Użytkownik

    Dołączył(a): 27 paź 2011
    Posty: 74
    Pomógł: 2

    Koledzy bardzo proszę poratujcie, trzeci dzień już siedzę i krew mnie już zalewa.
    Napisałem sobie programik według poradnika kolegi 'RafPe' i ogólnie wszystko jest OK, ale... , mam problem z odebraniem danych wysyłanych z uC.

    Na początku jak to wszystko jest połączone:
    ENC28J60 podłączony bezpośrednio do karty sieciowej komputera - uC odbiera i reaguje na komendy wysyłane z PC, program na PC nie reaguje na dane wysyłane z PC.
    To wersja która nie do końca działa.

    Jak skonfiguruję program podając IP karty WiFi i wysyłam dane z terminala UDP na telefonie to wszystko działa zgodnie z oczekiwaniami.

    Sprawdzam sobie na bieżąco jak wygląda ruch na karcie sieciowej i dane z uC przychodzą do komputera w oczekiwanej postaci.

    Poniżej kod programu

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


    a tak wygląda

    Obrazek

    Program na uC to niezmieniony kod z Bluebooka 21_ETH_komunikacja_UDP, jako ciekawostkę powiem że z TesteremUDP od Mirka komunikacja z uC działa bez problemu w obie strony więc wykluczam błędy w programie na uC.

    Będę bardzo wdzięczny za wszelką pomoc.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 22 maja 2016, o 12:11 
    Offline
    Użytkownik
    Avatar użytkownika

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

    Hey @ chemik0,

    Troche tak czytam Twojego posta i czuje sie zakrecony. Moglbys jasniej opisac :) Gdybys prosze mogl wkleic dane jak sprawdzasz ruch na karcie siecowej to wtedy moglbym dokladnie widziec o co Ci chodzi i byc bardziej w stanie Ci pomoc.

    Daj znaka

    Raf

    _________________
    sig off ;(



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 30 maja 2016, o 22:41 
    Offline
    Użytkownik

    Dołączył(a): 27 paź 2011
    Posty: 74
    Pomógł: 2

    Niski pokłon dla kolegi @RafPe za wsparcie i motywację.
    Ponieważ niespecjalnie jeszcze ogarniam komunikację UDP to strzelę co było przyczyną tego że moja aplikacja na PC nie odbierała danych z AVR-ka (w razie czego proszę o sprostowanie).
    Jak się okazało pakiet wysyłany z AVR-a (świeżutki i pachniutki) nie będący odpowiedzią na zapytanie z PC-a nie miał adresu MAC odbiorcy, wystarczyło ręcznie wklepać adres MAC na jaki mają być kierowane pakiety i ładnie zaczęło działać.

    Gdyby komuś... kiedyś.. przydarzył się podobny problem to w kodzie z Bluebook-a w pliku ip_arp_udp_tcp.c zmieniłem w funkcji
    send_udp_prepare:


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


    Jeszcze raz wielkie dzięki dla kolegi @RafPe za ten rewelacyjny tutorial i pomoc przy rozwiązaniu mojego problemu.
    Pozdrawiam
    Wojtek



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

    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