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



Teraz jest 13 mar 2025, o 12:51


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 7 ] 
Autor Wiadomość
PostNapisane: 2 wrz 2013, o 17:29 
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

To zmień to pole na wskaźnik.

_________________
Dragonus Cracovus: Biomagia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 wrz 2013, o 17:52 
Offline
Moderator
Avatar użytkownika

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

Krauser napisał(a):
To zmień to pole na wskaźnik.


Dokładnie czyli potraktuj tak samo jak callbacki swoje ;)

_________________
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: 2 wrz 2013, o 17:55 
Offline
Moderator
Avatar użytkownika

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

siedzi sobie na zewnątrz zmienna timer - wystawiona do konfiguracji, a przy inicjalizacji programu wpisujesz do wskaźnika jej adres no i masz

_________________
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: 2 wrz 2013, o 18:31 
Offline
Użytkownik

Dołączył(a): 16 maja 2012
Posty: 349
Lokalizacja: Legnica
Zbananowany użytkownik

Pomógł: 23

mirekk36 napisał(a):
siedzi sobie na zewnątrz zmienna timer - wystawiona do konfiguracji, a przy inicjalizacji programu wpisujesz do wskaźnika jej adres no i masz

Ja również nie za bardzo kumam.
Jest zdefiniowana tablica key zawierająca elementy typu TKEY czyli każdy element tej tablicy to struktura zawierająca między innymi pole delay_timer a to znaczy że różnych wartości delay_timer może być tyle ile jest elementów tablicy key. Żeby zamienić delay_timer na wskaźnik należałoby zdefiniować tablicę takich timerów o rozmiarze zgodnym z rozmiarem tablicy key i do każdego wskaźnika wewnątrz struktury przypisywać wskazanie na kolejne elementy tablicy zdefiniowanej w module głównym. Jeżeli natomiast każda ze struktur miałaby przechowywać wskaźnik do zmiennej zdefiniowanej w module główny ( jednej zmiennej nie tablicy) to znaczy że to pole nie jest potrzebne w strukturze bo każdy element tej tablicy przechowuje ten sam adres.

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 wrz 2013, o 19:23 
Offline
Użytkownik

Dołączył(a): 16 maja 2012
Posty: 349
Lokalizacja: Legnica
Zbananowany użytkownik

Pomógł: 23

Jeżeli tak to OK. Tylko jak osobne timery to jak to zgrabnie zrobić w inicie. Tablica timerów brzmi rozsądnie, tylko moduł główny musi wiedzieć ile jest elementów tablicy key żeby po nich pozamiatać przy inicjalizacji.

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

Tylko czy wtedy nie lepiej zdefiniować taką tablicę timerów w keys.c i jako extern a wywalić ze struktury niepotrzebne wskazanie na delay_timer? Zamiast odwoływać się do pola struktury to do elementu tablicy deklarowanej w keys.c i inicjowanej w module głównym.

------------------------ [ Dodano po: 6 minutach ]

No chyba że liczba różnych timerów jest inna niż rozmiar tablicy key. To wtedy nie będzie 1 do 1 w celach oszczędności pamięci.

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 wrz 2013, o 20:12 
Offline
Użytkownik

Dołączył(a): 16 maja 2012
Posty: 349
Lokalizacja: Legnica
Zbananowany użytkownik

Pomógł: 23

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


w main.c ustawić tablicę jak pisałeś a w dalszej części biblioteki zamiast odwoływać się przez adres zapisany w strukturze to bezpośrednio do timera przez indeks tablicy. Jaki zysk jest w przechowywaniu dodatkowo wskaźnika w strukturze?

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 wrz 2013, o 21:29 
Offline
Użytkownik

Dołączył(a): 16 maja 2012
Posty: 349
Lokalizacja: Legnica
Zbananowany użytkownik

Pomógł: 23

Użytkownik będzie musiał znać/ustawić oprócz stałej dosłownej NUMBER_OF_KEYS w keys.h również znać typ zmiennej stablicowanej w buforze timerów. Jakąś informację będzie musiał dostać. Broń boże nie krytykuję rozwiązania tylko dzielę się spostrzeżeniem. Łatwiej jest pokazać userowi zmienne i funkcje typu extern w pliku nagłówkowym niż opisywać (pytanie gdzie), że ma wolność nazywania jakiejś tablicy ale elementów o określonym typie i jeszcze okupionym kosztem pamięci. Na pewno zadziała ale dla mnie jako usera byłoby to niewygodne w użyciu. Rozumiem strategię i potrzebę hermetyzacji bibliotek, ale coś na zewnątrz trzeba zawsze wystawić. Pytanie w jakiej formie, żeby było to wygodne. Twoje rozwiązanie unika wystawiania jakiegoś pola wzamian oferując metodę która ustawia zmienną wewnętrzną. Może wobec tego zastosować taki mechanizm:
main.c
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

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


oczywiście do kompletu funkcja get_key_timer() :-)

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

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Google [Bot] i 4 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