Skocz do zawartości

Uniwersalna biblioteka obsługi menu wielopoziomowego - jak to ugryźć?


_LM_

Pomocna odpowiedź

2 minuty temu, bjrk napisał:

A co, jeśli reakcja ma nastąpić po pewnym czasie jeśli pozycja menu się nie zmieni?

Nie wiem czy to pytanie do mnie, zakładam że jeśli brak jest dłuższej reakcji to menu musi się automatycznie zamknąć

Link do komentarza
Share on other sites

Fajnie się czyta ten wątek. Niestety nie wniosę do niego nic merytocznego, ale jest inaczaj niż zwykle. Zazwyczaj dostajesz fajną bibliotekę i zaczynasz się zastanawiać, czemu zrobili tak. A tu najfajniejszy i najtrudniejszy etap na żywo - założenia architektoniczne...

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

@ethanak W tym co pisałem, nie doszedłem jeszcze do kodu. Nie opracowałem nawet algorytmu. Zastanawiam się, co powinna zawierać podstawowa warstwa abstrakcji biblioteki sterującej menu. Menu, nie całym interfejsem. Zgadzam się z Tobą, że dopisanie jakiegoś egzekutora jest koniecznym uzupełnieniem, ale widzę możliwość tworzenia istotnie różnych egzekutorów i nie chcę tej drogi zamykać. Tak jak i oczywiste jest dla mnie, że aby taka biblioteka w ogóle powstała, konieczne jest jej "obudowanie" zarówno kompletnym prezenterem jak i kompletnym egzekutorem. Więcej, nie widzę przeszkód, aby jedna biblioteka obsługi menu działała jednocześnie z wieloma egzekutorami tak jak - z czym się zgadzasz - wieloma elementarnymi prezenterami.

 

 

Edytowano przez bjrk
korekta
Link do komentarza
Share on other sites

@ethanak Chodziło mi jedynie, aby najpierw sformułować wymagania stawiane podstawowej klasie abstrakcji takiej biblioteki i uważam, że podstawowa klasa nie powinna zawierać egzekutora - co nie zmienia tego, że zarówno prezenter jak i egzekutor są konieczne. Przykro mi, że nie potrafiłem się wyrazić dostatecznie jasno.

Link do komentarza
Share on other sites

Cześć,

według mnie dobrze byłoby zacząć od kilku klas abstrakcyjnych tworzących "szkielet" funkcjonalności takiego uniwersalnego menu (po tym jak dojdziecie do konsensusu jakie funkcjonalności menu ma zawierać 😄), a potem korzystając z dziedziczenia i polimorfizmu rozszerzać je na bardziej specjalizowane przypadki (nie pisać dużo specjalizowanego kodu, który nigdy nie będzie wykorzystany). Trzeba pamiętać, iż proste AVR'y mają bardzo mało zasobów - głównie RAM, ale Flash'a też niezbyt dużo. Według mnie zamiast pisać dużo specjalizowanego kodu (np. obsługa enkodera, rozpoznawanie mowy itp.) lepiej zaprojektować szkielet takiej biblioteki, aby był łatwo rozszerzalny na takie przypadki. Nadal uważam, że maszyna stanów skończonych jest tu dobrym wzorcem do wykorzystania (oczywiście nie sama).

Pozdrawiam

  • Lubię! 2
Link do komentarza
Share on other sites

Bardzo ładnie ale po świętach chyba coś Ci się pomikołajowało...

Gdzie w C masz polimorfizm?

Ostatni raz przypominam: czym była moja propozycja kodu? Jeśli się nie rozumiemy to ja naprawdę wolę usiąść to tabel wymowy czytaka...

Link do komentarza
Share on other sites

3 minuty temu, ethanak napisał:

Bardzo ładnie ale po świętach chyba coś Ci się pomikołajowało...

Gdzie w C masz polimorfizm?

Ostatni raz przypominam: czym była moja propozycja kodu? Jeśli się nie rozumiemy to ja naprawdę wolę usiąść to tabel wymowy czytaka...

@ethanak,

a kto mówi o C,  ja mówię o C++ (w którym można programować w np. Arduino IDE, wszystkie biblioteki do Arduino są napisane jako klasy) . Chcesz pisać bardzo abstrakcyjną bibliotekę nie używając odpowiedniej abstrakcji? Wiesz co mi to, co teraz w tym wątku robisz przypomina  "Niestety chodziło o odgłos paszczą .."

Po drugie zrobiłeś dokładnie to samo, co ja kilkanaście postów wcześniej, gdy zwróciłem uwagę na fakt, że nikt nie przeanalizował wklejonego, przezemni kodu:

1 godzinę temu, ethanak napisał:

@bjrk zajrzyj jednak do kodu - tam jest mniej więcej wszystko o co się kłócisz 🙂 🙂 🙂

i

1 godzinę temu, ethanak napisał:

@bjrk vide above.

Inaczej w pseudokodzie:


read (code)
  until(understood);

 

Mi zwróciłeś uwagę, żebym się powstrzymał z komentarzami, dopóki nie będą zebrane założenia do biblioteki. Wydaje mi się, że nadal nie zostały one sprecyzowane.

Pozdrawiam

Link do komentarza
Share on other sites

Jasne. Te cholerne tabele wymowy wymagają jeszcze dużo pracy, a efekt będę miał pod nosem (a właściwie za uchem)

Swoje pokazałem, rozumiem to że się nie podoba, wracam do syntezy mowy.

Aha, tam też mam menu...

Link do komentarza
Share on other sites

Szkoda, że wątek idzie w tym kierunku... 

Autor zastrzegł, że chce pisać w C w pierwszym poście. 

Dyskutując zdalnie jest próbem z ustaleniem założeń i określeniem kiedy wszystkie już mamy.

Ja mam nadzieję, że @_LM_ pociągnie temat dalej i dyskusja wróci znów do omawiania konkretnych zagadnień. 

PS. Przyznaję, że sam muszę sobie te fragmenty kodu wrzucić na duży ekran i przeczytać na spokojnie. 

 

 

 

Link do komentarza
Share on other sites

8 minut temu, pmochocki napisał:

Ja mam nadzieję, że @_LM_ pociągnie temat dalej i dyskusja wróci znów do omawiania konkretnych zagadnień.

To że dyskusja jest taka żywa świadczy o tym że taka biblioteka jest potrzebna. Być może już na tym etapie przydałoby się zbudować coś co można zaprezentować tak aby każdy mógł wyrazić swoją opinię i wskazać miejsca gdzie należy coś poprawić. 

  • Lubię! 1
Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.