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? 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 10 cze 2025, o 19:17


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 10 ] 
    Autor Wiadomość
    PostNapisane: 16 sie 2013, o 17:53 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 21 cze 2012
    Posty: 171
    Pomógł: 5

    Witam,
    aktualnie jestem na etapie pisania aplikacji na PC w C# do obsługi pewnego urządzenia. Tu pojawia się problem wymiany danych między prockiem a aplikacją.
    W programie procesora mam strukturę z nastawami, zawiera ona pola uint8_t oraz tablice uint8_t. Np. coś takiego:
    Kod:
    typedef struct Settings_str
    {
    uint8_t number_floors;
    uint8_t main_floor;
    char floors_name[32];

    } Settings;

    Tych nastaw jest ok 80. Teraz jak tu zorganizować przesyłanie i parsowanie takiej ilości danych ??
    Oprócz nastaw mam jeszcze tablice struktur zawierającą stos błędów. Struktura zawiera typ błędu, czas, stan systemu w chwili wystąpienia, itp. Te informację również muszę jakoś sensownie przesłać do PC.

    Może ma ktoś jakiś pomysł lub borykał się z podobnym zagadnieniem ??
    Z góry dziękuję za wszystkie podpowiedzi.

    Pozdrawiam
    R.L.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 16 sie 2013, o 21: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

    Wykorzystaj i po jednej i po drugiej stronie unię tablicy i struktury, bo tablicę łatwo przesłać, a dzięki strukturze od razu masz wydzielone dane i odpada parsowanie.

    _________________
    Dragonus Cracovus: Biomagia



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 16 sie 2013, o 21:29 
    Offline
    Moderator
    Avatar użytkownika

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

    tylko trzeba sprawdzić/upewnić się czy po jednej i drugiej stronie będzie tak samo z Little/Big Endian - jeśli chodzi o zmienne więcej niż 8-bitowe

    _________________
    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 sie 2013, o 21:47 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 21 cze 2012
    Posty: 171
    Pomógł: 5

    Witam,
    ciekawa propozycja :) chodzi ci zapewne o coś takiego:
    Kod:
    union settings_un{
    uint8_t nastawy[sizeof(Settings)];
    Settings parametry;
    }

    Tylko co do wielkości tablicy nie jestem pewien czy to zadziała ? ale wydaje mi się, że powinno :). Można by było w tym wypadku najpierw wysłać rozmiar unii następnie dane i później w aplikacji na PC sprawdzić czy się zgadza, jak nie to jeszcze raz przesłać.

    edit:
    Starałem się aby zmienne były tylko 8 bit.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 18 sie 2013, o 15:03 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 21 cze 2012
    Posty: 171
    Pomógł: 5

    Witam,
    pomysł z unią jest bardzo fajny :) O ile od strony procesora to banalnie proste, to po stronie aplikacji już nie.
    Jestem zbyt cienki w C# aby sobie z tym jakoś rozsądnie poradzić.
    Może ktoś z bardziej doświadczonych w C# podpowie jak do tego podejść. Chodzi o to, że w C# nie ma uni :(



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 18 sie 2013, o 15:11 
    Offline
    Moderator
    Avatar użytkownika

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

    Lemosek napisał(a):
    Chodzi o to, że w C# nie ma uni


    http://www.pzielinski.com/?p=1343

    _________________
    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: 18 sie 2013, o 17:29 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 21 cze 2012
    Posty: 171
    Pomógł: 5

    Witam, Mirku widziałem już ten i inne przykłady. Niestety one działają ale tylko do prostych rzeczy tzn. jak mamy np. typ int i double itp. Natomiast jeśli wrzucimy tablicę i strukturę to już nie do końca to działa :(.
    Na razie niby napisałem jakiś tam kod który nawet działa tzn odbiera dane z procesora. Ale jest on toporny bo opiera się na podziale odebranego łańcucha i odpowiednim konwertowaniu oraz wrzucaniu do struktury, np. 10 bajt to MySetting.Fire_floor itd. Jednak jakoś mało mi się to podoba. Najgorzej, że żeby wysłać dane do procesora będę musiał się mocno natrudzić żeby to odpowiednio sformułować.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 18 sie 2013, o 17:34 
    Offline
    Moderator
    Avatar użytkownika

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

    No rozumiem - ja sam nie znam na tyle C# żeby coś podpowiedzieć - ale też się interesuję wszelako - takimi zagadnieniami bo też go będę ćwiczył i to ostro - ten C#

    dlatego próbuję szukać i coś podpowiadać .... choć sam jeszcze nie mam nawet jak popróbować

    _________________
    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: 18 sie 2013, o 17:42 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 21 cze 2012
    Posty: 171
    Pomógł: 5

    Spoko rozumiem :D Ja też jestem mocno początkujący w C# jakiś tydzień :) po godzinach. Jakoś próbuję go ogarnąć na potrzeby pewnego projektu. Na razie uczę się jak wymieniać dane w takich ilościach. I kurczę nie jest to takie proste. Choć pewnie dla bardziej doświadczonych to drobnostka.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 18 sie 2013, o 17:56 
    Offline
    Użytkownik

    Dołączył(a): 15 lut 2012
    Posty: 344
    Lokalizacja: Bydgoszcz
    Pomógł: 11

    Słuchaj a jakbyś wykorzystał klasy kolekcji w C# a konkretnie listy. Tutaj: http://www.altcontroldelete.pl/artykuly ... jach-w-c-/ masz fajnie opisane jak to ogarnąć.



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

    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