ATNEL tech-forum
https://forum.atnel.pl/

MK_MULTI_UART prośba o wyjaśnienie
https://forum.atnel.pl/topic22778.html
Strona 1 z 1

Autor:  JarekB [ 8 sty 2020, o 07:55 ]
Tytuł:  MK_MULTI_UART prośba o wyjaśnienie

Witajcie znowu nudzę :)
Staram się połączyć swój mały projekt z Biblioteką jak w temacie
Trochę się poszamotałem i w trakcie przeglądania źródła napotkałem na zapis którego nie rozumiem
Wykropkowałem kod i pozostawiłem tylko to czego nie rozumiem
Plik mk_multi_uart.c od linijki 1007

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

Autor:  kazekat [ 8 sty 2020, o 10:45 ]
Tytuł:  Re: MK_MULTI_UART prośba o wyjaśnienie

Jeśli używasz transmisji binarnej to tam ma być jedynka i skompiluje się funkcja uart_reg_callback_bin (), jeśli nie używasz to musi być 0 i się nie skompiluje (jak używasz eclipse to ta część będzie na szaro)

Autor:  JarekB [ 8 sty 2020, o 11:05 ]
Tytuł:  Re: MK_MULTI_UART prośba o wyjaśnienie

OK, OK
To o czym piszesz rozumiem.
Natomiast zwróć uwagę na linijkę nr 5
Tu w przypadku if USE_BIN == 1 wpisywana jest do uarttab[ uart_nr ]->bin wartość ud_ascii;
To jest to czego nie pojmuję
w linii nr 15 jest odwrotnie.

Autor:  mirekk36 [ 8 sty 2020, o 11:40 ]
Tytuł:  Re: MK_MULTI_UART prośba o wyjaśnienie

JarekB napisał(a):
To jest to czego nie pojmuję

Dlatego że w trybie pracy ASCII wykorzystywany jest ten sam bufor, który nazywa się bin

Autor:  JarekB [ 8 sty 2020, o 11:45 ]
Tytuł:  Re: MK_MULTI_UART prośba o wyjaśnienie

Chyba to jest jednak dla mnie za trudne

Może tak zadam pytanie
Co się znajdzie w zmiennej uarttab[ uart_nr ]->bin
USE_BIN będzie się równało 0?

Autor:  mirekk36 [ 8 sty 2020, o 14:41 ]
Tytuł:  Re: MK_MULTI_UART prośba o wyjaśnienie

JarekB napisał(a):
uarttab[ uart_nr ]->bin

to jest tylko bufor na dane, który czasem jest używany do odbioru danych binarnych a czasem do odbioru ASCII. Co to za różnica co w nim będzie siedziało ? To zależy od kodu jak obsługuje ten bufor. Nawet jeśli ustawisz komunikację ASCII ale dasz np tryb 9-bit to i tak musi się włączyć na siłę tryb binarny bo jak inaczej. W związku z tym że biblioteka obsługuje wiele rodzajów komunikacji muszą być odpowiednie reakcje na różne rzeczy.

Więc jeszcze raz - wyobraź sobie że to uarttab[ uart_nr ]->bin jest jakąś zmienną tablicową

char tab[x];

czyli buforem na dane - przy czym biblioteka nawet automatycznie zmieni ten char na uint16_t jeśli wybierzesz komunikację 9-bit

Autor:  JarekB [ 8 sty 2020, o 15:18 ]
Tytuł:  Re: MK_MULTI_UART prośba o wyjaśnienie

Widzisz Mirek gdyby to była zmienna tablicowa to to rozumiem
Ale w pliku mk_multi_uart.h deklaracja tej zmiennej wygląda tak:
(od linii 200)
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Autor:  Jarecki [ 8 sty 2020, o 15:22 ]
Tytuł:  Re: MK_MULTI_UART prośba o wyjaśnienie

Nie wiem jak wygląda ta biblioteka ale ten bin:

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


i ten bin:

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


to dwa różne biny

Autor:  mirekk36 [ 8 sty 2020, o 15:25 ]
Tytuł:  Re: MK_MULTI_UART prośba o wyjaśnienie

Jarecki napisał(a):
Nie wiem jak wygląda ta biblioteka ale ten bin:

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


i ten bin:

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


to dwa różne biny


nie nie to jest właśnie akurat to samo

Autor:  JarekB [ 8 sty 2020, o 15:26 ]
Tytuł:  Re: MK_MULTI_UART prośba o wyjaśnienie

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


Poddaje się.

Autor:  Jarecki [ 8 sty 2020, o 15:27 ]
Tytuł:  Re: MK_MULTI_UART prośba o wyjaśnienie

Możesz pokazać ciało struktury TUARTINFO ?

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

Jarecki napisał(a):
Nie wiem jak wygląda ta biblioteka ale ten bin:

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


i ten bin:

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


to dwa różne biny



Przepraszam, wprowadziłem Cię w błąd. Źle sobie popatrzyłem, nie było tematu :)

Autor:  mirekk36 [ 8 sty 2020, o 15:29 ]
Tytuł:  Re: MK_MULTI_UART prośba o wyjaśnienie

tak wyżej poprawiłem to jest to samo bin ;) i co więcej to nie jest bufor - przepraszam - pisałem wcześniej troszkę z pamięci. To jest flaga softłerowa

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

ale i tak sprowadza się to do tego co pisałem wyżej - że biblioteka dzięki niej sama potrafi się przełączyć na transmisję binarną i takim przypadkiem jest (jak mi się zdaje o ile pamiętam ;) właśnie transmisja 9 bit)

Autor:  JarekB [ 8 sty 2020, o 15:39 ]
Tytuł:  Re: MK_MULTI_UART prośba o wyjaśnienie

Ufff.
To teraz wróćmy pytania pierwotnego na samej górze wątku.
Jak to działa?
Bo skoro USE_BIN == 1
To nie powinniśmy używać uart_reg_callback
tylko callbacków służących do obsługi bin i bin 9 bit
uart_reg_callback_bin
uart_reg_callback_bin9

Autor:  Wirnick [ 8 sty 2020, o 16:17 ]
Tytuł:  Re: MK_MULTI_UART prośba o wyjaśnienie

Witam!
Linia 1010 dotyczy funkcji powyżej umieszczonej(jest w ciele funkcji).
Linia 1016 włącza do kompilacji pozostałą część kodu.
Jeśli używasz EKLIPSE to zobaczysz działanie tego przełącznika(jeżeli USE_BIN będzie FALSE to część kodu będzie szara - wyłączona z kompilacji).

Autor:  mirekk36 [ 8 sty 2020, o 19:32 ]
Tytuł:  Re: MK_MULTI_UART prośba o wyjaśnienie

JarekB --> korzystasz ty z zalet ECLIPSA czy nie ? Może w końcu warto ? ;)

to spójrz:

gdy BIN = 0
Obrazek

a tu dla BIN = 1
Obrazek

Więc dlaczego piszesz że nie powinniśmy używać funkcji do rejestracji callbacka?

------------------------ [ Dodano po: 2 minutach ]

toż widać z tego, że gdy mamy włączoną funkcjonalność obsługi binarnej BIN=1 to można też/jednocześnie korzystać i z callbacka dla ASCII ... w czym problem?

A gdy mamy BIN=0 to tryb binarny włączy się automatycznie dla komunikacji 9-bit - ale piszę tobie o tym od samego początku

Strona 1 z 1 Strefa czasowa: UTC + 1
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/