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

Tworzenie menu
https://forum.atnel.pl/topic23328.html
Strona 1 z 1

Autor:  miki53 [ 6 wrz 2020, o 18:38 ]
Tytuł:  Tworzenie menu

Witam

Mam takie zapytanie, tworzę menu sterowane pilotem do swojego projektu sterownika
i zastanawiam się czy nie można by było to menu napisać nieco
prościej

Ja nie mam pomysłu jak to zrobić , więc przesyłam ten kod na forum może
koledzy będą mieli jakiś pomysł na skrócenie kodu, ponieważ jest w nim
wiele elementów powtarzających się ( ustawianie czasów dla poszczególnych wyjść )
Jak to uprościć ?

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

Autor:  mirekk36 [ 6 wrz 2020, o 19:08 ]
Tytuł:  Re: Tworzenie menu

miki53 napisał(a):
  lcd_cls();
  lcd_locate(0,6);


nie widzisz chociażby tak drastycznie powtarzających się linii ?, które aż się proszą żeby je usunąć z obecnego kodu i dać w jednym miejscu przed switch.

Sparametryzować wskaźnikami nazwy wyświetlane po tych komendach z jakiejś tablicy i już masz milion linii twojego kodu zaoszczędzone... ;)

Ale jak popatrzyłem dalej to takich "kwiatków" jest po prostu taki ogrom w tym kodzie, że szok. Dlatego spróbuj odnieść się do tego co napisałem i uprościć - to na pewno sam zauważysz dalszych milion takich miejsc

Autor:  mario2015 [ 6 wrz 2020, o 19:16 ]
Tytuł:  Re: Tworzenie menu

Cytuj:
Ja nie mam pomysłu jak to zrobić , więc przesyłam ten kod na forum może
koledzy będą mieli jakiś pomysł na skrócenie kodu, ponieważ jest w nim
wiele elementów powtarzających się ( ustawianie czasów dla poszczególnych wyjść )
Jak to uprościć ?

Tak jak już Mirek napisał stwórz jakieś tablice a jak tego będzie mało,to te fragmenty kodu, które się powtarzają
a są często wykorzystywane, możesz jeszcze ubrać w funkcje.

Autor:  miki53 [ 6 wrz 2020, o 20:23 ]
Tytuł:  Re: Tworzenie menu

Panie Mirku

widzę że powtarza się kod i dlatego wstawiłem go tu na forum
aby z pomocą kolegów go uprościć ( ale z pomocą a nie żeby to zrobili za minie )

Dlatego potrzebuję przykładu jak to zrobić

to nie jest ustawianie wartości dla jednej zmiennej
lecz jest to cała sterta różnych zmiennych do których są przypisywane wartości
i wpisywane do struktury

Autor:  miki53 [ 7 wrz 2020, o 13:57 ]
Tytuł:  Re: Tworzenie menu

Mógłbym prosić o jakieś podpowiedzi jak uprościć
ten fragment kodu
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


w tym fragmencie mam 8 zmiennych do których są wpisywane wartości za pomocą pilota
i mam takich sekcji 8 jak widać w kodzie wyżej
i teraz jak za pomocą tego jednego kodu do nastawiania, ustawić wartości dla wszystkich
zmiennych niezależnie
Nawet jak wezmę tablicę to każda zmienna musi mieć swój indeks i jak ustawiać
hh,mm,ss,wy
Jak zmieniać nazwy zmiennych w kodzie do ustawiania wartości aby trafiały tam gdzie mają

Autor:  Jarecki [ 8 wrz 2020, o 07:18 ]
Tytuł:  Re: Tworzenie menu

miki53 napisał(a):
Mógłbym prosić o jakieś podpowiedzi jak uprościć
ten fragment kodu
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


w tym fragmencie mam 8 zmiennych do których są wpisywane wartości za pomocą pilota
i mam takich sekcji 8 jak widać w kodzie wyżej
i teraz jak za pomocą tego jednego kodu do nastawiania, ustawić wartości dla wszystkich
zmiennych niezależnie
Nawet jak wezmę tablicę to każda zmienna musi mieć swój indeks i jak ustawiać
hh,mm,ss,wy
Jak zmieniać nazwy zmiennych w kodzie do ustawiania wartości aby trafiały tam gdzie mają


np. tak dla case 0:

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

Autor:  miki53 [ 14 wrz 2020, o 11:28 ]
Tytuł:  Re: Tworzenie menu

Kombinowałem jak zrobić aby za pomocą tego kodu
wpisywać do wszystkich zmiennych wartości
Poniższy kod używać jako funkcję

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

niestety nic mi z tego nie wychodzi ponieważ mam 64 niezależne zmienne
i nawet jeśli zastosowałem wskażniki i na nich zmieniałem wartości a potem je przypisywałem
do zmiennych to jakoś nie wychodziło bo wszystkie zmienne miały te same wartości ?

Gdybym podstawiał zmienne pod ten kod to może by zadziałało
( jeden kod do nastawiania dla wszystkich zmiennych )
ale jak zmieniać nazwy zmiennych które aktualnie nastawiam ?

Przepraszam jeśli zawile tłumaczę o co mi chodzi
proszę o pomysły jak to rozwiązać

Może tego się nie da inaczej uwarunkować aby wpisywać wartości do zmiennych
dla każdej niezależnie?

Potrzebuję podpowiedzi i przykładów jeśli wpisywanie wartości można inaczej zrobić

Autor:  miki53 [ 15 wrz 2020, o 07:14 ]
Tytuł:  Re: Tworzenie menu

Ludziska podpowiedzcie chociaż czy dobrze kombinuję
z tym sposobem ustawiania czasów czy można to zrobić
prościej czy nie?

Autor:  Szofer [ 15 wrz 2020, o 09:06 ]
Tytuł:  Re: Tworzenie menu

Czy chodzi oto aby wyzerować wszystkie zmienne czasowe które używasz?

Autor:  miki53 [ 15 wrz 2020, o 11:42 ]
Tytuł:  Re: Tworzenie menu

Nie mi chodzi oto czy jest jakiś prosty ( inny ) sposób
wpisywania wartości do zmiennych

Autor:  Jarecki [ 15 wrz 2020, o 13:00 ]
Tytuł:  Re: Tworzenie menu

miki53 napisał(a):
Nie mi chodzi oto czy jest jakiś prosty ( inny ) sposób
wpisywania wartości do zmiennych


Sprawdzałeś co Ci wyżej pokazałem?

Autor:  miki53 [ 15 wrz 2020, o 14:40 ]
Tytuł:  Re: Tworzenie menu

Tak jeśli dobrze odczytałem kod
to on wiele nie zmienia, zmieniła się tylko forma zapisu
do zmiennych
Czyli i tak potrzebuję tyle samo kodów wpisujących co u mnie

Dla jasności co nazywam kodem wpisującym
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Autor:  Szofer [ 15 wrz 2020, o 14:54 ]
Tytuł:  Re: Tworzenie menu

A na wskaźnikach się nieda?
W case przypisujesz odpowiednie wskaźniki do zmiennych, przekazanej do funkcji i funkcje wywolujesz z argumentami wskaźnikowymi na odpowiednie zmienne czasowe, tymi wskaźnikam posługujesz się też do zapisu nastaw.

Jedna funkcja do wszystkich nastaw.

Autor:  miki53 [ 15 wrz 2020, o 17:25 ]
Tytuł:  Re: Tworzenie menu

To musiałbym zrobić wskażniki do każdej zmiennej
to mam 64 zmienne potem do tych zmiennych 64 wskażniki
Ale sposób wpisywania wartości do tych wskażników
zostaje bez zmian

Czyli MASŁO MAŚLANE nie da rady uprościć tego menu
jedynie co mogę zrobić to to co Mirek napisał

mirekk36 napisał(a):

miki53 napisał(a):
lcd_cls();
lcd_locate(0,6);


Sparametryzować wskaźnikami nazwy wyświetlane po tych komendach z jakiejś tablicy i już masz milion linii twojego kodu zaoszczędzone...



Dzięki za pomoc

Autor:  Szofer [ 15 wrz 2020, o 17:43 ]
Tytuł:  Re: Tworzenie menu

A poco, no Poco tyle wskaźników? Poco?
Masz 4 zmienne do zmiany hh, mm, ss, wyj

case 1:

wsk = & hh;
wsk1 = & mm;
wsk2 = & ss;
wsk3 = & wyj;

funkcja(*wsk, *wsk1, *wsk2, *wsk3) ;

break

Pokombinuj tak.

Pisane z głowy mogłem babola zrobić w zapisie.

Autor:  miki53 [ 15 wrz 2020, o 18:16 ]
Tytuł:  Re: Tworzenie menu

Szofer napisał(a):
Masz 4 zmienne do zmiany hh, mm, ss, wyj

case 1:

wsk = & hh;
wsk1 = & mm;
wsk2 = & ss;
wsk3 = & wyj;

funkcja(*wsk, *wsk1, *wsk2, *wsk3) ;

break

Tak te 4 zmienne obsługują mi czasy włączenia wyjścia nr1
Następnie potrzebny jest drugi taki kodżik dla wyjścia nr1
ale ustawienia czasów wyłączania
i takich wyjść mam 8 i każde niezależnie działające

Autor:  Szofer [ 15 wrz 2020, o 19:14 ]
Tytuł:  Re: Tworzenie menu

Zmienne które przetrzymują ci dane czasu, wyjść i innych itp itd co tam masz musisz i tak posiadać bo to twoje dane obsługiwane w kodzie, jak sprawdzenia czasu co włączyć co wyłączyć itp, ale jak je nastawiasz to nie potrzebujesz tysiąca zmiennych do ich nastawienia, funkcja ma nastawić parametry wymagane do przechowywania parametrów i sprawdzenia zakresów nastaw i zapisanie, tylko na potrzeby menu, patrz na to jako uniwersalne rozwiązanie dla wielu zadań z tej samej kategorii.

Wydaje mi się że zbyt globalnie patrzysz na program, nie dzielisz go sobie na sekcje co masz zrobić i odpalać krok po kroku, tysiąca lini kodu nie unikniesz, no chyba że to tylko mryganie diodą.

Popatrz na biblioteki Mirka jaki ogrom "treści", pisania tez nie mało, ale ile trzeba poświęcić czasu przy kompie i nie tylko, bo napewno jak ma jakis twardy orzech to nie siada bezmyślnie i pisze miliony lini, tylko najpierw myśli a potem robi.

Autor:  Szofer [ 15 wrz 2020, o 19:17 ]
Tytuł:  Re: Tworzenie menu

Pozatym wskaźnik na zmienna, to nic innego jak przetrzymanie jej adresu, ale ten adres możesz zawsze zmienić (jeśli nie jest const ) i wskazywać wskaźnikiem na adres innej zmiennej.

Autor:  andrews [ 18 wrz 2020, o 20:22 ]
Tytuł:  Re: Tworzenie menu

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

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