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



Teraz jest 24 mar 2026, o 19:46


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 6 ] 
Autor Wiadomość
PostNapisane: 3 wrz 2014, o 09:18 
Offline
Użytkownik

Dołączył(a): 09 cze 2013
Posty: 34
Pomógł: 0

Witam,

mam problem w zrozumieniu pewnego zagadnienia. Mam zrobić układ, który komunikuję uC z programem na PC, w trakcie pracy mam wysyłać co jakiś czas informacje o statusie urządzenia.
Kolega informatyk, który pisze program na PC powiedział, żebym wysyłał dwa bajty i w każdym bajcie mają być wartości w postaci kolejnych potęg 2-ki, czyli 1,2,4,8,16,32, itd. Nie rozumiem dlaczego nie mogę wysyłać tego dziesiętnie, przecież wtedy na jednym bajcie bym miał 256 statusów a nie 9. On twierdzi, że tak należy robić bo unika się jakiś pomyłek, ale nie potrafię zrozumieć dlaczego. Proszę o jakieś wyjaśnienie, ponieważ nurtuje mnie to zagadnienia. Z góry dziękuję, i przepraszam jeżeli wątek nie bardzo pasuje do tego działu.

Pozdrawiam



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 wrz 2014, o 09:31 
Offline
Moderator
Avatar użytkownika

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

Panie - wysyłać to można co się żywnie podoba, np co sekundę string

"ala i as"

co to za różnica czy dwa bajty , czy trzy bajty ? ;) czy 10 bajtów ? a tym bardziej czy jakieś tam potęgi - matko jedyna ;)

Ok gdyby chodziło o sprawdzanie sumy kontrolnej to można dodać sumę kontrolną do stringa na końcu

W ogóle nie napisałeś czym (jaką magistralą chcesz mieć tę komunikację) ale niezależnie jaką - to można to zrobić po prostu dowolnie ... kompletnie nie widzę tu jakiegoś nawet NAJMNIEJSZEGO Problemu

dodatkowo - można wraz z takim stringiem wysyłać jakieś od razu dane o urządzeniu, o jego stanie itp itd

aż ciężko tu dyskutować "czy zrobić to tak? czy siak?"


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: 3 wrz 2014, o 10:13 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 sty 2013
Posty: 123
Lokalizacja: Warszawa
Pomógł: 10

Pewnie chodzi tu o zapalanie i gaszenie bitów statusowych - każdy bit w każdym bajcie będzie miał jakieś przypisane mu znaczenie.
W zależności od tego czy dany bit będzie ustawiony czy nie, będzie on oznaczał jakiś stan urządzenia.
I każdy z tych bitów będzie niezależny od pozostałych.
W ten sposób w jednym bajcie można przekazać do ośmiu niezależnych stanów jednocześnie.

Wysyłając jedną liczbę, przekazujesz tylko jeden stan - no chyba, że dla każdej z 256 możliwości zrobisz tabelę, która zdekoduje liczbę 10 jako włączenie stanu W, X, Y, Z i np. jednocześnie wyłączenie stanów A,B,C,D. Jeśli np. W zmieni stan (a wszystkie pozostałe nie), to musisz wysłać kolejną liczbę (np. 11), która definiuje nowy układ stanów.
W przypadku podejścia bitowego - po prostu jest wygaszany bit W, a wszystkie pozostałe pozostają bez zmian.

Pewnie o taką niezależność koledze programiście chodziło.


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 wrz 2014, o 10:29 
Offline
Użytkownik

Dołączył(a): 09 cze 2013
Posty: 34
Pomógł: 0

Ma to być komunikacja modbus, atmega z panelem operatorskim Proface.
No właśnie dlatego dziwię się dlaczego nie miałem dowolności , właśnie wolałbym wysyłać stringi kończąc każdy status CRLF, ale prawdopodobnie o to chodziło programiście co napisał kolega Jado.

Dziękuję bardzo za odpowiedź i pozdrawiam



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 wrz 2014, o 11:34 
Offline
Moderator
Avatar użytkownika

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

Rafael86 napisał(a):
Ma to być komunikacja modbus, atmega z panelem operatorskim Proface.


no dlatego trzeba było od tego zacząć - bo jeśli np komunikacja modbus RTU no to wtedy wiadomo że nie string ;) no i wtedy wiadomo dlaczego akurat takie a nie inne pomysły z tymi bajtami ...

tak to jest gdy zadaje się dodatkowe zagadki bez podania pełnych informacji do pytania ;)

_________________
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: 5 wrz 2014, o 18:26 
Offline
Nowy
Avatar użytkownika

Dołączył(a): 17 sie 2014
Posty: 8
Pomógł: 0

Nie chciał bym tutaj źle podpowiedzieć ale czy było by dobrym rozwiązaniem zastosowaniem struktura z zapisem bitowym ??
W sumie to takie rozwiązanie jest w niebieskiej książce w podrozdziale Pola bitowe
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


przy wysyłaniu tylko nie jestem pewny czy możemy wysłać za pomocą np
send(statusy);
czy trzeba wrzucić strukturę do uni lub rzutować poprostu na zmienną uint8_t

Mogą być błędy (niekompilowane)
Oczywiście jeżeli się mylę proszę mnie poprawić bo nie chcę nikogo wprowadzać w błąd :)

_________________
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: 6 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 3 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