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



Teraz jest 31 sty 2025, o 20:56


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 22 ] 
Autor Wiadomość
PostNapisane: 19 gru 2019, o 18:53 
Offline
Użytkownik

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

Witam

Mam kłopot z tymi zespolonymi strukturami i trudno mi je wpasować do mojego kodu
Potrzebuję paru informacji

Mianowicie

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


Pytanie 1 - czy do każdej z tych struktur muszę mieć osobny wskażnik tj. TWYJ_1 * wsk_1, TWYJ_2 * wsk_2 itd.
Pytam się dlatego gdyż zrobię wskażnik dla TWYJ_PORT * al to w programie są niewidoczne zmienne zawarte w TWYJ_1
,TWYJ_2 oraz TWYJ_3
W TWYJ_PORT * al - są tylko widoczne nazwy struktur TWYJ_1 USTAW_WYJ_1 itd.

Jeśli każda struktura musi mieć własny wskażnik ( myślę że jednak będzie musiała bo jak inaczej wpisywać wartości )
to strasznie rozbuduje mi się kod np.

Funkcji do ustawiania czasów alarmów musi ich być tyle ile mam struktur

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


i teraz muszę napisać 8 takich funkcji dla każdego wskażnika struktury jedną ?

Jeszcze jedno pytanie związane z ustawianiem wartości fabrycznych, wpisuję je w taki sposób
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

i pokazują mi się błędy,
Czy powinienem je zapisywać też dla każdej struktury osobno ?
Czyli w ten sposób

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


Proszę o cierpliwość i odpowiedzi



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 gru 2019, o 19:02 
Offline
Użytkownik

Dołączył(a): 29 paź 2017
Posty: 232
Pomógł: 26

Nadal nie mogę zrozumieć dlaczego generujesz tyle struktur. Ciężko to ogarnąć.
Nie lepiej jednak zrobić Tablice struktur?

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

_________________
Jestem na GG 31324
Nowy soft, nowa nadzieja.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 gru 2019, o 20:08 
Offline
Użytkownik

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

To jest to samo co ja robiłem wcześniej tylko że Ty zamykasz to w tablicy
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Ale wtedy nie mogę zrobić ustawień fabrycznych dla 8-śmiu takich struktur bo to jest 1 struktura -> wyj_1 to 2 -> wyj_2 itd.
Jak rozpiszę ustawienia fabryczne dla tych 8-śmiu struktur
to kompilator mi krzyczy że jest za dużo danych
Dlatego kombinuję jak koń pod górą , wziąłem przykład od Mirka z tymi zespolonymi strukturami ale też są schody
bo gdy jedno pasuje w moim kodzie to drugie pada normalnie załamka, ale jeszcze walczę ;) :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 gru 2019, o 20:36 
Offline
Użytkownik

Dołączył(a): 14 sie 2016
Posty: 905
Pomógł: 39

Miki, ano kombinujesz jak qń pod górę :lol:
W jakim celu(albo raczej powodu)robisz ustawienia fabryczne w define?
Nie możesz wczytać tych ustawień z tablicy do twojej tablicy struktur?

_________________
Moje porady są błędne,nie czytać,zbanować od razu.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 gru 2019, o 20:46 
Offline
Użytkownik

Dołączył(a): 29 paź 2017
Posty: 232
Pomógł: 26

Zajrzyj dwa wątki niżej. Masz całą kopalnie wiedzy jak indeksować tablicę struktur. No bajka. Wszystkie Twoje dylematy rozwiązane w kilku linijkach.

_________________
Jestem na GG 31324
Nowy soft, nowa nadzieja.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 gru 2019, o 21:20 
Offline
Moderator
Avatar użytkownika

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

JarekB napisał(a):
Nadal nie mogę zrozumieć dlaczego generujesz tyle struktur.


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


To jest niestety nawet kompletny nonsens i niezgodne z ze zdrowymi zasadami programowania w SZCZEGÓLNOŚCI do definiowania/powoływania nowych typów. Tu nawet nie chodzi o już o stworzenie tego tablicy - jak można w ogóle powoływać dwa IDENTYCZNE typy i nadawać im tylko różne nazwy ? Pomieszanie z poplątaniem niestety.

można bowiem już na bazie pierwszego z tych typów albo powołać dwie niezależne zmienne o różnych nazwach albo powołać zmienną tablicową i ją indeksować.

Dalej piszesz do kolegi który doradzał ci tablicę
miki53 napisał(a):
To jest to samo co ja robiłem wcześniej tylko że Ty zamykasz to w tablicy

No więc to co ty robisz jest dużo gorsze i nie pisz proszę że się czegoś nie da bo ci kompilator krzyczy - a jak krzyczy to ty zamiast dojść dlaczego i co źle robisz to rozbijasz wszystko na jakieś drastyczne setki tysiące pojedynczych zmiennych.

_________________
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: 20 gru 2019, o 00:02 
Offline
Użytkownik

Dołączył(a): 14 sie 2016
Posty: 905
Pomógł: 39

Tak mi przyszło coś na myśl ;)
Co zrobisz jak kiedyś dojdziesz do wniosku, że ustawienie jednego alarmu na wejście to za mało i będziesz chciał mieć ich np po 8, zdefiniujesz kolejne 56 struktur? Nie mówiąc już o dodaniu czegokolwiek do programu bez ślęczenia godzinę, żeby wszystko pozmieniać w 1000 miejsc. Trzeba myśleć przyszłościowo, zawsze.

Wysłane ze srajfona

_________________
Moje porady są błędne,nie czytać,zbanować od razu.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 gru 2019, o 07:52 
Offline
Moderator
Avatar użytkownika

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

Harry napisał(a):
Trzeba myśleć przyszłościowo, zawsze.

Dokładnie ;) i po to są właśnie struktury ;)

_________________
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: 20 gru 2019, o 13:03 
Offline
Użytkownik

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

mirekk36 napisał(a):
A co za problem wszystkie 8 struktur albo i więcej umieścić w jednej nadrzędnej strukturze ?


mirekk36 napisał(a):
miki53 napisał(a):
Muszę rozbić wszystkie struktury na poszczególne zmienne
i umieścić w jednej strukturze , zgadza się ?

Sorki ale kompletnie bez sensu ten wniosek. Czy w strukturach - jak widać WIELOKROTNIE w moich poradnikach, nie można umieszczać innych struktur?

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


[/syntax]


Dlatego kombinuję i słucham podpowiedzi a jeśli chodzi o te same zmienne w strukturach to czy te struktury
nie posługuję się tymi samymi zmiennymi ?
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Przykład też zawarty z poradnika



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 gru 2019, o 13:31 
Offline
Użytkownik

Dołączył(a): 14 sie 2016
Posty: 905
Pomógł: 39

Miki, ten przykład jest ok, tylko robisz sobie krzywdę ilością zmiennych, lepiej byłoby zrobić z tego tablicę bo łatwiej jest operować na niej niż na 8 (na razie)niezależnych zmiennych. Pomyśl właśnie o rozbudowie w przyszłości.
Zastanawiam się po co wogóle definiujesz stałe do zapisu flasha, zamiast odrazu tam wpisać co chcesz.

Edit:
O co się rzucał kompilator?

Wysłane ze srajfona

_________________
Moje porady są błędne,nie czytać,zbanować od razu.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 gru 2019, o 13:54 
Offline
Użytkownik

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

jak można w ogóle powoływać dwa IDENTYCZNE typy i nadawać im tylko różne nazwy ? Pomieszanie z poplątaniem niestety.

Panie Mirku
Jeśli miałbym dwa lub trzy silniki które mają pracować w takich samych warunkach
i mają te same parametry
ale muszą byś sterowane oddzielnie to przecież zastosujemy dla nich te same
zmienne i tylko zmienimy nazwy silnik 1, silnik 2



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 gru 2019, o 14:02 
Offline
Użytkownik

Dołączył(a): 14 sie 2016
Posty: 905
Pomógł: 39

Masz rację, ale sam zauważ - zmienne w jednym typie, a nie dwa identyczne typy tylko o różnych nazwach jak próbowałeś zrobić.

Wysłane ze srajfona

_________________
Moje porady są błędne,nie czytać,zbanować od razu.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 gru 2019, o 14:07 
Offline
Moderator
Avatar użytkownika

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

miki53 napisał(a):
Panie Mirku
Jeśli miałbym dwa lub trzy silniki które mają pracować w takich samych warunkach
i mają te same parametry
ale muszą byś sterowane oddzielnie to przecież zastosujemy dla nich te same
zmienne i tylko zmienimy nazwy silnik 1, silnik 2

no i Harry ci to wyjaśnia i ja i inni ... powiedz mi dlaczego tak się bronisz przed wiedzą i praktyką programowania ?

JEDEN Qurczę typ i zmienna tablicowa rozwiązuje ten twój problem. I TYLKO tak należy do tego podejść. Owszem można i po twojemu ale twój sposób to mniej więcej to samo jak gdybym miał zamigać 10x diodą LED. To twój sposób wyglądałby tak:

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



a sposób który podpowiada ci Harry czy ja polegałby mniej więcej porównawczo z miganiem diodą na tym

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


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

i teraz gdybym chciał przerobić ten kod do migania diodą led żeby mignęła nie 10 a 127 razy ??? Spróbuj sobie wyobrazić co musiałbyś się napaplać z kodem z pierwszego przykładu - a w drugim kodzie ? zmieniłbyś TYLKO jeden wpis

Cytuj:
for( uint8_t i=0; i<127; i++ ) {
LED_ON;
_delay_ms(100);
LED_OFF;
_delay_ms(100);
}


------------------------ [ Dodano po: 3 minutach ]

poza tym ja się za chwilę wyłączę z dyskusji bo ty mega uporczywie jakby nie czytasz porad - Harry już po raz kolejny cię pytał co ci kompilator pokazywał za błędy ? Toż to by warto było od razu w pytaniu napisać - a ty wciąż jedno i to samo - czyli swoje. Więc jak widzisz - możesz robić i po swojemu - nikt ci nie zabroni - ale wkrótce tzn za jakiś czas jak tak podziałasz to i tak zrozumiesz - wtedy o czym tobie mówiliśmy.

_________________
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: 20 gru 2019, o 14:19 
Offline
Użytkownik

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

Cześć Harry

Mam 8 wyjść które robią to samo ztym że są sterowane oddzielnie
dla każdego wyjścia mogę wpisać czas włączenia i wyłączenia
i przypisywać różne porty którymi ma sterować

Np. dla wyjścia nr.1 mogę przypisać wyjście nr.1 lub nr.2, lub nr.3 itd
lub mogę ustawić aby wyjście nr.1 się włączyło 8 razy
i takie tam kombinacje

dlatego każde wyjście ma te same parametry i tylko inne nazwy wy_1 ,wy_2 itd

Jak mam jedną strukturę to kompilator mi mówi że zbyt wiele danych dla tej jednej struktury
dlatego jak dam strukturę dla każdego ustawienia to jest ok
Ale wtedy muszę powielać funkcje i rozbudowywać kod a tego nie chcę i kombinuję

A i wiedza jeszcze zbyt wątła dlatego mam schody ale tak ciekawiej jest się uczyć
bo stawiam temat i próbuję go realizować a po drodze pokonywać przeszkody i dochodzić
co jak i dla czego



Ostatnio edytowano 20 gru 2019, o 14:38 przez miki53, łącznie edytowano 2 razy

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 gru 2019, o 14:31 
Offline
Moderator
Avatar użytkownika

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

miki53 napisał(a):
Jak mam jedną strukturę to kompilator mi mówi że zbyt wiele danych dla tej jednej struktury

a wiesz co to jest "screenshot" ? Zrzut ekranu? albo wkleić zawartość konsoli po kompilacji - nie wspomnę już o wklejeniu własnego kodu w którym to robisz ... no pomyśl sobie ile czasu można prosić o tak podstawowe rzeczy ?

czy liczysz na to, że wszyscy się domyślą jak ty napisałeś ten kod i co widać w konsoli. Bo wybacz ale po twoich opisach błędów z konsoli można mieć poważne wątpliwości - że dobrze to interpretujesz.

(przecież takie rebusy mogą ciągnąć się przez 600 postów w jednym wątku i nadal nikt nie wpadnie na to co ty w kodzie napisałeś i jaki się błąd pojawił konsoli.

_________________
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: 20 gru 2019, o 14:41 
Offline
Użytkownik

Dołączył(a): 14 sie 2016
Posty: 905
Pomógł: 39

Ok, to rozumiem i to jest jasne od samego początku. Nikt nie mówi że to jest złe, jedynie do czego mamy zastrzeżenia to właśnie do tworzenia tysiąca typów, zamiast zmiennych jak teraz piszesz. Pomysł z tablicą jest po to, żebyś mógł sobie np wyłączyć hurtem wszystkie alarmy na danym wyjściu a nie wpisywał po kolei dla każdej zmiennej, bo właśnie jak byś miał po kilka alarmów na każde wyjście to wtedy zaczynają się schody z obróbką.
Osobiście bym zrobił tablicę dwu wymiarową(TWYJ[nr_wyjscia][nr_alarmu], ale nie wiem jak ze strukturą w takim przypadku, tu musiałbyś doczytać/pokombinować.

_________________
Moje porady są błędne,nie czytać,zbanować od razu.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 gru 2019, o 14:48 
Offline
Użytkownik

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

Przepraszam Kolegów za swoje marudzenie
Dziękuję za poświęcony mi czas i cierpliwość



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 gru 2019, o 14:50 
Offline
Użytkownik

Dołączył(a): 14 sie 2016
Posty: 905
Pomógł: 39

Echh, następny się obraził :roll:
Ja chyba też sobie zaraz pójdę pomigać diodką, bo zaraz zaczną gadać że nabijam posty :lol:

_________________
Moje porady są błędne,nie czytać,zbanować od razu.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 gru 2019, o 15:02 
Offline
Użytkownik

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

Nie obraziłem się ale Mirek ma rację że magluję ten sam temat
już przez kilka postów i nic, widocznie muszą się sporo poduczyć
a nie zabierać czas i miejsce na forum bez końca

A gdyby ktoś chciał się pobawić i pokombinować nad moim sterownikiem
to założenia były takie 8 całkowicie niezależnych wyjść sterujących
ustawianych zegarem oraz z możliwością włączania i wyłączania ich ręcznie
każde wyjście może mieć wpływ na sąsiednie wyjścia
Czyli ustawienia na wyjściu 1 mogą włączać i wyłączać ręcznie lub zegarem
wyjścia sąsiednie ( wy_1 , wy_2 lub wy_5 itd ) niema wyłączania wszystkich naraz
choć i to można by zrobić



Ostatnio edytowano 20 gru 2019, o 15:14 przez miki53, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 gru 2019, o 15:07 
Offline
Użytkownik

Dołączył(a): 14 sie 2016
Posty: 905
Pomógł: 39

Wszyscy się uczymy na błędach, głowa do góry :)
Maglujesz i możliwe że zupełnie niepotrzebnie, zamiast wstawić log z konsoli.

------------------------ [ Dodano po: 18 minutach ]

Teraz przetłumacz to łopatologicznie :)
miki53 napisał(a):
Czyli ustawienia na wyjściu 1 mogą włączać i wyłączać ręcznie lub zegarem
wyjścia sąsiednie ( wy_1 , wy_2 lub wy_5 itd )

Czy twoje "wyjście 1" to alarm czy port?, bo ciężko się polapać o co chodzi.
A może alarm na porcie_1 ma mieć też wpływ na inne porty?

_________________
Moje porady są błędne,nie czytać,zbanować od razu.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 gru 2019, o 18:46 
Offline
Użytkownik

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

Myślę o portach do których można podłączyć co się chce
czy pompkę do podlewania trawników lub brzęczyk i masz alarm
oczywiście że nie bezpośrednio tylko przez tranzystor jako wzmacniacz
Pojęcie alarmów pozostało kiedy pytałem się na forum jak
na zegarze zrobić budzik i tak to ewoluowało do postaci sterownika

czy tu czy tam i tak chodzi o sterowanie portami

Z tym wpływem na inne porty chodzi mi o to że ustawiając parametry dla wyjścia 1 mogę ustawić
parametr nie dla wyjścia 1 ale np. dla wyj_4 lub wyj_8 mimo że jestem w menu na pozycji
ustawiania portu 1 w ten sposób mogę robić różne kombinacje i sterownik jest bardziej uniwersalny

jest również przewidziana możliwość sterowania pilotem poszczególnych portów z osobna włącz wyłącz
lub włączasz pilotem jakiś port ( bo chcesz szybciej włączyć podlewanie trawinka a zegar o zadanej
porze wyłączy podlewanie, takie tam kombinacje )

chyba nie namotałem i jest zrozumiałe

ps. faktycznie ta cytowana myśl wyszła trochę chaotycznie



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 gru 2019, o 19:52 
Offline
Użytkownik

Dołączył(a): 14 sie 2016
Posty: 905
Pomógł: 39

No to dobrze myślałem, a już się bałem że przekombinowałeś :)
Znając założenia można trochę podłubać.

Wysłane ze srajfona

_________________
Moje porady są błędne,nie czytać,zbanować od razu.



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

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 7 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:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO