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



Teraz jest 11 lut 2025, o 10:15


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 
Online
Moderator
Avatar użytkownika

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

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 
Online
Moderator
Avatar użytkownika

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

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 
Online
Moderator
Avatar użytkownika

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

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 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