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



Teraz jest 27 lis 2024, o 23:16


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 17 ] 
Autor Wiadomość
 Tytuł: static i extern
PostNapisane: 15 paź 2013, o 13:55 

Pomógł: 0

Wie ktoś może jak to wygląda przy zmiennych static, walczę z Superdebounce
są tam zmienne "klawiszy" static

I teraz np. mam coś takiego
w 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.


następnie fukcja obsługująca
w common.c

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


No i oczywiście zmienne static uint8_t baba_A, baba_B, baba_C, baba_D; muszą być widoczne w main.c i w common.c
Przez to że są static są jak by prywatne, tylko dla jednego pliku przez co nie można ich okrasić extern ;), bez static nie ma problemu, tylko teraz pytanie , czy static w tym wypadku jest niezbędny?, czy lepiej zrobić inaczej obsługę
No bo tak sobie myśle po co robić 4 różne funkcje, lepiej mi wybierać w funkcji wywoływanej 4klawiszami, za pomocą swich wykrywam który klawisz został naciśnięty.



Góra
  
cytowanie selektywne  Cytuj  
PostNapisane: 15 paź 2013, o 14:25 

Pomógł: 0

swich tylko testowo jest
czyli tak docelowo

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

następnie

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


PS. Funkcja SuperDebouce (Mirkowa) nie zwraca nic, nie bardzo wiem jak dobrać się do tego inaczej, tj. jak wyłuskać z funkcji SuperDebounce który klawisz został naciśnięty, w sumie jest to tak zrobione, że na każdy klawisz mamy osobną funkcję, a nie na zasadzie kilka klawiszy => jedna funkcja do której jest przekazywany parametr który klawisz został nacisnięty, a by przerabiać to, to jestem za chudy w kapeluszu, stąd takie kombinacje alpejskie.



Góra
  
cytowanie selektywne  Cytuj  
PostNapisane: 15 paź 2013, o 14:26 
Offline
Moderator
Avatar użytkownika

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

Można też założyć sobie strukturę TKLAWISZ

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


a następnie tablicę:

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


i później w kodzie wołać sobie ;)

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


tylko trzeba sobie oczywiście przerobić troszkę Superdebounca w środku....
----------------------------------------------

ale zaraz rezasurmar - coś pan zrobił ;) teraz dopiero patrzę - sprawdzasz 4 klawisze a z każdej funkcji wołasz tą samą

Obsluz_Bebe ;)

i dopiero w niej sprawdzasz który wciśnięty ;) ???? toż to postawienie WSZYSTKIEGO poczwórnie DO GÓRY nogami ;)

jak już to wołaj funkcję

Obsluz_BEBE;

a w niej sprawdzaj wciśnięty klawisz

albo przydziel każdej funkcji superdebounce inną do wykonania w zależności który wciśnięty - bo teraz to zrobiłeś tzn próbujesz robić samobójcze salto morta-dela

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

albo użyj prostszej obsługi klawisza z mojego bloga ;)

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

_________________
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: 15 paź 2013, o 14:29 

Pomógł: 0

No właśnie nie chciałem Mirku tego rozbijać na poszczególne funkcje ;), tylko hmm, przerabianie kodu który się średnio rozumie też nie bardzo wchodzi w grę ;), a znowu walenie po kilka funkcji do tego samego tylko zależnie od parametru znowu kłóci się z całą ideą C ;), Bądź tu mądry ;).

Najfajniej by było dorobić zwracanie parametru przez funkcję SuperDebounce zależnie od tego który klawisz jest naciśnięty.

PS. Dlaczego nie można w ten sposób, że wywołać tą sama funkcje, sympatycznie to wygląda :D bo mamy jedną funkcję która obsługuje wiele klawiszy zależnie tylko który klawisz.
tj. zamysł był taki by funkcja obsługująca była jak by oddzielona od funkcji klawiszy, czyli funkcji obsługującej nie interesuje "sprzętowa" część klawiatury, tym zajmuje się Debounce, a debounce wysyła tylko parametr do mojej funkcji która zależnie od niego już ustawia co się ma dziać dalej ;).



Ostatnio edytowano 15 paź 2013, o 14:34 przez rezasurmar, łącznie edytowano 1 raz

Góra
  
cytowanie selektywne  Cytuj  
PostNapisane: 15 paź 2013, o 14:34 
Offline
Moderator
Avatar użytkownika

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

rezasurmar napisał(a):
Najfajniej by było dorobić zwracanie parametru przez funkcję SuperDebounce zależnie od tego który klawisz jest naciśnięty.


ale spójrz na tą strukturę TKLAWISZ i ożeń to z JEDNĄ funkcją z bloga do obsługi klawisza ...

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

Można wtedy wywoływać TYLKO jedną funkcję sprawdź klawisz ? w niej sprawdzić który wciśnięty - na podstawie tej struktury i odpalić stosowną funkcję

_________________
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: 15 paź 2013, o 14:38 
Offline
Moderator
Avatar użytkownika

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

rezasurmar napisał(a):
Dlaczego nie można w ten sposób, że wywołać tą sama funkcje, sympatycznie to wygląda


No ale to jest dopiero zaprzeczenie zasad ;) .... i możliwości C ...

toż można wołać jedną funkcję - sprawdzić w niej nr klawisza i w niej wywołać stosowną funkcję jak napisałem wyżej....

A nie tak jak zrobiłeś że wołamy 4x tę samą funkcję, 4x odpalamy callbacka ;) a w callbacku sprawdzamy dopiero który to klawisz - to jest postawienie zagadnienia po prostu na głowie już tak w oderwaniu od konkretnego kodu źródłowego.

Wydaje mi się że zapominasz najpierw o rozpisaniu sobie algorytmu - tylko lecisz na szybko z pisaniem kodu a potem boli ;)

_________________
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: 15 paź 2013, o 14:38 

Pomógł: 0

Hmmmm, bardziej sie zastanawiam, czy nie "zwinąć" Antemu jego wypaśnej obsługi klawiatury na eventach :D, oj, długa droga przedemną.

Po prostu Debounce mi działa idealnie i to w takim stanie jak jest :). Co prawda gryzie mi się coś jak wrzuciłem i2c+LCD ale był tylko do testów, bez niego chodzi idealnie mimo salto mortale :lol:

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

Jeszcze jak bym rozumiał co do mnie mówicie :lol:



Góra
  
cytowanie selektywne  Cytuj  
PostNapisane: 15 paź 2013, o 14:46 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 29 lis 2011
Posty: 582
Lokalizacja: okolice Wrocławia :)
Pomógł: 24

rezasurmar napisał(a):

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

Jeszcze jak bym rozumiał co do mnie mówicie :lol:



Nic nie pękaj... nie jesteś tu osamotniony :lol:

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 paź 2013, o 14:51 
Offline
Moderator
Avatar użytkownika

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

squeez napisał(a):
To jeśli można ją "okroić" (autor wyraża zgodę) może wyglądać np


No ale to na blogu to TYLKO przykład, jakiś tam wzór albo jeden z wielu wzorów przykładów ;)

więc JAK NAJBARDZIEJ można albo nawet trzeba sobie modyfikować

i to co tu pokazałeś to BARDZO DOBRA droga - na to co potrzebuje rezasurmar

------------------------ [ Dodano po: kilkunastu sekundach ]

hmm wręcz gotowe i mega krótkie/proste rozwiązanie ;)

_________________
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: 15 paź 2013, o 14:54 

Pomógł: 0

W uproszczeniu wygląda to tak.

Przylatuje ramka po UART, parsujemy dane (to powiedzmy że już opanowałem)
wyświetlamy daną na wyświetlaczu LED non stop, czyli ramka=LED, ramka=LED itd. Ot po prostu taki drugi wyświetlacz po przeciwnej stronie.

Teraz do tego są 4klawisze, każda Kobita ma swój klawisz, kładzie na wadze tackę z towarem (koreczki śledziowe ;)), naciska klawisz, w tym momencie masa jest znana (przylatuje cały czas) wysyłamy numer Kobity (klawisza) przez drugiego UARTA (po wizfi potem, ale to nie jest istota problemu, na razie ;)), a wraz z numerem, masę/tarę i co tam jeszcze potrzeba.

Algorytm w sumie prosty jak drut, stąd brak jakiś opracowań w tej kwestii.

Nie wiem, czy prosta funkcja obsługi klawisza nie będzie mi wysypywać ramki uarta/wizfi, bo w momencie naciśnięcia na klawisz np. jak będzie wylatywać dana z poprzedniego wciśnięcia.
Tzn. wyglądać do będzie tak, że urządzenie bedzie wysyłać daną po wizfi tak długo dopuki serwer nie odpowie że daną odebrał, ale w tym momencie mogą nastąpić inne ważenia, kolejkę przewiduje na jakieś 4-8 ważeń, serwer będzie przyjmować 32 stanowiska w jednym czasie, stąd czasem może dostawać czkawki.

To tak poglądowo jak to będzie wyglądać.
Dlatego szukam całkiem nie blokującej funkcji i SuperDebounce wydawał sie najlepszy do tego ;).



Góra
  
cytowanie selektywne  Cytuj  
PostNapisane: 15 paź 2013, o 18:08 

Pomógł: 0

Po szybkim przejrzeniu i analizie posta kolegi squeez staram się urzeźbić coś takiego

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


I nie wiem, czy dobrze kombinuje



Góra
  
cytowanie selektywne  Cytuj  
PostNapisane: 15 paź 2013, o 18:17 
Offline
Moderator
Avatar użytkownika

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

a co to jest ???


reza przeczytaj to:

squeez napisał(a):
To jeśli można ją "okroić" (autor wyrazi zgodę) może wyglądać np:



i zrób to ... daj sobie spokój tutaj z SupeDebounce bo coś nie tak idzie na maxa ...

przecież squeez podał ci gotowe rozwiązanie twojego kłopotu

_________________
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: 15 paź 2013, o 18:59 

Pomógł: 0

Tylko jest jeden problem, wtedy SuperDebounce, jako uniwersalna funkcja przestaje spełniać swoje zadanie.

Problemem jest to, że musiał bym tworzyć kolejne funkcje które obsługiwały by klawiaturę w trybie programowania urządzenia, sam zamysł jest świetny :), właśnie staram się go przenieść na oryginalną bibliotekę Debounca ;).

Uparty jestem Mirku ;).



Góra
  
cytowanie selektywne  Cytuj  
PostNapisane: 15 paź 2013, o 19:17 
Offline
Moderator
Avatar użytkownika

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

To nie o to chodzi - po prostu SuperDebounce nadaje się bardziej do obsługi pojedynczych klawiszy gdy mamy w zależności od naciśniętego klawisza wołać różne funkcje ... Nigdzie nie pisałem że pokazując ten przykład - SuperDebounce ma to być super uniwersalna funkcja do wszystkiego. Na 100% nie nadaje się np do obsługi klawiatury np matrycowej czy większej ilości klawiszy itp ...

Dlatego upór rozumiem jak najbardziej ;) ... ale czasem warto pomyśleć o zastosowaniach

to już właśnie Antystatyczny zrobił coś na kształt obsługi ala klawiatury ...

Albo inaczej - powiedz mi do czego ci tu SuperDebounce skoro:

1. nie korzystasz z "AutoRepeat"
2. nie korzystasz z Callbacka a jeśli już to uwierz mi w bardzo niewłaściwy sposób - biorąc pod uwagę pierwszy przykład ale chyba i ten ostatni o ile go zrozumiałem ...

Z tego co czuję (ale może się mylę oczywiście) ... tobie potrzeba szybko sprawdzić jaki klawisz jest wciśnięty (i nawet obsługa drgań nie jest tu zbyt istotna) a w zależności od wciśniętego klawisza zawołać jakąś funkcję ....

_________________
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: 15 paź 2013, o 19:39 

Pomógł: 0

Po bojach z Antym udało się (jemu, jak tylko grzecznie pisałem co mi pokazywał ;))
wyrzeźbić coś takiego
wycinek z SuperDebounce
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


następnie w pliku keys.c jest zadeklarowana zmienna globalna
uint8_t key_number;
w common.h
extern uint8_t key_number; co by była widoczna w innych modułach.

No i mamy naszą upragnioną zmienną w której zależnie od tego jaki klawisz, będzie się pojawiać 1, 2, 4 lub 8 przynajmniej tak twierdzi Anty ;).

PS.
Mirku, wiem, że twierdzisz, że twoje funkcje nie są idealne, dla mnie są :) bo działają bez zarzutu.
Co do repeat itd. no niestety myślę o wykorzystaniu w/w klawiszy też do obsługi ustawień serwisowych, co by nie uzależniać się od połączenia z wifi, stąd chcę zostawić podstawową funkcjonalność bibliotek SuperDebounce.



Góra
  
cytowanie selektywne  Cytuj  
PostNapisane: 15 paź 2013, o 20:08 
Offline
Moderator
Avatar użytkownika

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

rezasurmar napisał(a):
Mirku, wiem, że twierdzisz, że twoje funkcje nie są idealne


Nie rozumiemy się - to nie chodzi o to czy są idelane czy nie - ja bym nawet w takich kategoriach tego nie rozpatrywał ... po prostu mogą się do czegoś nadawać a do czegoś innego nie ;) o to mi bardziej chodziło

_________________
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: 15 paź 2013, o 20:47 
Offline
Moderator
Avatar użytkownika

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

Antystatyczny napisał(a):
Superdebounce to genialna baza do nauki, przeróbek i tworzenia własnych softów


Czy genialna to już nie mi oceniać ale dzięki za dobre słowo, jednak co do reszty to WŁAŚNIE o TO chodzi ....

_________________
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  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 17 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

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