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



Teraz jest 15 lis 2024, o 18:45


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 19 ] 
Autor Wiadomość
 Tytuł: Tworzenie menu
PostNapisane: 6 wrz 2020, o 18:38 
Offline
Użytkownik

Dołączył(a): 05 gru 2017
Posty: 423
Lokalizacja: Puck
Pomógł: 7

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.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 wrz 2020, o 19:08 
Offline
Moderator
Avatar użytkownika

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

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

_________________
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: 6 wrz 2020, o 19:16 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 06 mar 2015
Posty: 315
Lokalizacja: Czerwionka-Leszczyny
Pomógł: 22

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.

_________________
http://www.avrboss.pl



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 wrz 2020, o 20:23 
Offline
Użytkownik

Dołączył(a): 05 gru 2017
Posty: 423
Lokalizacja: Puck
Pomógł: 7

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



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 7 wrz 2020, o 13:57 
Offline
Użytkownik

Dołączył(a): 05 gru 2017
Posty: 423
Lokalizacja: Puck
Pomógł: 7

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ą



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 wrz 2020, o 07:18 
Offline
Użytkownik

Dołączył(a): 23 sty 2014
Posty: 1081
Pomógł: 73

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.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 wrz 2020, o 11:28 
Offline
Użytkownik

Dołączył(a): 05 gru 2017
Posty: 423
Lokalizacja: Puck
Pomógł: 7

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ć



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 wrz 2020, o 07:14 
Offline
Użytkownik

Dołączył(a): 05 gru 2017
Posty: 423
Lokalizacja: Puck
Pomógł: 7

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



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 wrz 2020, o 09:06 
Offline
Użytkownik

Dołączył(a): 05 sty 2015
Posty: 393
Lokalizacja: Mielec
Pomógł: 14

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



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 wrz 2020, o 11:42 
Offline
Użytkownik

Dołączył(a): 05 gru 2017
Posty: 423
Lokalizacja: Puck
Pomógł: 7

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



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 wrz 2020, o 13:00 
Offline
Użytkownik

Dołączył(a): 23 sty 2014
Posty: 1081
Pomógł: 73

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?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 wrz 2020, o 14:40 
Offline
Użytkownik

Dołączył(a): 05 gru 2017
Posty: 423
Lokalizacja: Puck
Pomógł: 7

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.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 wrz 2020, o 14:54 
Offline
Użytkownik

Dołączył(a): 05 sty 2015
Posty: 393
Lokalizacja: Mielec
Pomógł: 14

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.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 wrz 2020, o 17:25 
Offline
Użytkownik

Dołączył(a): 05 gru 2017
Posty: 423
Lokalizacja: Puck
Pomógł: 7

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



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 wrz 2020, o 17:43 
Offline
Użytkownik

Dołączył(a): 05 sty 2015
Posty: 393
Lokalizacja: Mielec
Pomógł: 14

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.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 wrz 2020, o 18:16 
Offline
Użytkownik

Dołączył(a): 05 gru 2017
Posty: 423
Lokalizacja: Puck
Pomógł: 7

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



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 wrz 2020, o 19:14 
Offline
Użytkownik

Dołączył(a): 05 sty 2015
Posty: 393
Lokalizacja: Mielec
Pomógł: 14

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.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 wrz 2020, o 19:17 
Offline
Użytkownik

Dołączył(a): 05 sty 2015
Posty: 393
Lokalizacja: Mielec
Pomógł: 14

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.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 wrz 2020, o 20:22 
Offline
Użytkownik

Dołączył(a): 07 cze 2016
Posty: 563
Pomógł: 143

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



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

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