_LM_ Grudzień 27, 2021 Autor tematu Udostępnij Grudzień 27, 2021 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ąć Cytuj Link do komentarza Share on other sites More sharing options...
bjrk Grudzień 27, 2021 Udostępnij Grudzień 27, 2021 @ethanak albo wybrać tą pozycję na której jest ustawiona. Aby umożliwić takie działanie, wolę wydzielić dwie warstwy abstrakcji: ustaw pozycję, obsłuż pozycję Cytuj Link do komentarza Share on other sites More sharing options...
pmochocki Grudzień 27, 2021 Udostępnij Grudzień 27, 2021 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... Cytuj Link do komentarza Share on other sites More sharing options...
ethanak Grudzień 27, 2021 Udostępnij Grudzień 27, 2021 @bjrk tak jak to się wszędzie robi - MENU_CMD_IDLE czy MENU_CMD_NONE. Cytuj Link do komentarza Share on other sites More sharing options...
Polecacz 101 Zarejestruj się lub zaloguj, aby ukryć tę reklamę. Zarejestruj się lub zaloguj, aby ukryć tę reklamę. 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 Grudzień 27, 2021 Udostępnij Grudzień 27, 2021 @bjrk a propos rozdzielenia wykonania - spójrz na mój przykładowy kod i zastanów się, czy "executor" to nie jest przypadkiem to, o czym piszesz. Cytuj Link do komentarza Share on other sites More sharing options...
bjrk Grudzień 27, 2021 Udostępnij Grudzień 27, 2021 (edytowany) @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 Grudzień 27, 2021 przez bjrk korekta Cytuj Link do komentarza Share on other sites More sharing options...
ethanak Grudzień 27, 2021 Udostępnij Grudzień 27, 2021 @bjrk zajrzyj jednak do kodu - tam jest mniej więcej wszystko o co się kłócisz 🙂 🙂 🙂 Cytuj Link do komentarza Share on other sites More sharing options...
bjrk Grudzień 27, 2021 Udostępnij Grudzień 27, 2021 @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. Cytuj Link do komentarza Share on other sites More sharing options...
ethanak Grudzień 27, 2021 Udostępnij Grudzień 27, 2021 @bjrk vide above. Inaczej w pseudokodzie: read (code) until(understood); 2 Cytuj Link do komentarza Share on other sites More sharing options...
FlyingDutch Grudzień 27, 2021 Udostępnij Grudzień 27, 2021 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 2 Cytuj Link do komentarza Share on other sites More sharing options...
ethanak Grudzień 27, 2021 Udostępnij Grudzień 27, 2021 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... Cytuj Link do komentarza Share on other sites More sharing options...
FlyingDutch Grudzień 27, 2021 Udostępnij Grudzień 27, 2021 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 Cytuj Link do komentarza Share on other sites More sharing options...
ethanak Grudzień 27, 2021 Udostępnij Grudzień 27, 2021 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... Cytuj Link do komentarza Share on other sites More sharing options...
pmochocki Grudzień 27, 2021 Udostępnij Grudzień 27, 2021 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. Cytuj Link do komentarza Share on other sites More sharing options...
_LM_ Grudzień 27, 2021 Autor tematu Udostępnij Grudzień 27, 2021 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ć. 1 Cytuj Link do komentarza Share on other sites More sharing options...
Pomocna odpowiedź
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!