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

KURS HOME ASSISTANT

Chcesz zautomatyzować swój dom bez skomplikowanego kodowania?
Zastanawiasz się nad wyborem sprzętu, oprogramowania i aplikacji?
Od czego zacząć przygodę z HA w 2025? Co będzie najlepsze na start?

Nasz kurs Home Assistant nauczy Cię krok po kroku, jak łatwo zautomatyzować swój dom i oszczędzić na rachunkach za prąd i ogrzewanie. Bez chmur, bez zbędnych abonamentów. Twoja przygoda z Home Assistant zaczyna się tutaj!

↓↓↓

    Szanujemy Twoją prywatność. Możesz wypisać się w dowolnym momencie.




    Teraz jest 9 kwi 2025, o 15:31


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 132 ]  Przejdź na stronę Poprzednia strona  1, 2, 3, 4, 5  Następna strona
    Autor Wiadomość
    PostNapisane: 31 sie 2012, o 20:44 
    Offline
    Uzytkownik zasłużony dla forum.atnel.pl
    Avatar użytkownika

    Dołączył(a): 16 lip 2012
    Posty: 2088
    Lokalizacja: Leżajsk / Kraków
    Pomógł: 411

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

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

    _________________
    Dragonus Cracovus: Biomagia



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 1 wrz 2012, o 14:12 
    Offline
    Użytkownik

    Dołączył(a): 26 lip 2012
    Posty: 104
    Pomógł: 0

    Funkcja działa ok.

    1.Dodam, że stworzyłem jeszcze 4 funkcje i działają poprawnie. Ale w każdej z nich jak i w changeCounter pojawia się warning:

    passing argument 1/2 of "changeCounter" makes pointer from integer without cast

    2.Jeżeli mam ++i to licznik jest okej tzn. nie muszę na lcd wpisywać licznik-1, ale w ustawianiu minut potrzebne mi jest zero a tutaj licznik nalicza od jedynki itd.

    3.lcd_locate(1,7). Czy w funkcji da się ustawić zmienną lcd_locate(1,x), żeby zmieniać położenie na LCD



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 1 wrz 2012, o 15:34 
    Offline
    Uzytkownik zasłużony dla forum.atnel.pl
    Avatar użytkownika

    Dołączył(a): 16 lip 2012
    Posty: 2088
    Lokalizacja: Leżajsk / Kraków
    Pomógł: 411

    1. Zapomniałeś gdzieś przy wywołaniu funkcji o &. Jak argumentem funkcji jest wskaźnik to wywołanie funkcji musi pobierać adres zmiennej, a nie wartość.
    2. Możesz zwiększanie tej zmiennej przenieść, gdzie indziej. Przeanalizuj po kolei co się z nią dzieje.
    3. Pewnie, że tak.

    _________________
    Dragonus Cracovus: Biomagia



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 1 wrz 2012, o 16:38 
    Offline
    Użytkownik

    Dołączył(a): 26 lip 2012
    Posty: 104
    Pomógł: 0

    Funkcja wygląda tak i działa:

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



    lcd_locate() też śmiga :)

    ------------------------ [ Dodano po: 2 minutach ]

    A co do warningu to wszędzie jest &. Wyskakuje mi takich błędów 62 :!:



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 1 wrz 2012, o 18:20 
    Offline
    Uzytkownik zasłużony dla forum.atnel.pl
    Avatar użytkownika

    Dołączył(a): 16 lip 2012
    Posty: 2088
    Lokalizacja: Leżajsk / Kraków
    Pomógł: 411

    Kompilator pokazuje miejsce, którego dotyczy ostrzeże. Możesz skopiować taką linię.

    _________________
    Dragonus Cracovus: Biomagia



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 2 wrz 2012, o 08:18 
    Offline
    Użytkownik

    Dołączył(a): 26 lip 2012
    Posty: 104
    Pomógł: 0

    passing argument 1/2 of "changeCounter" makes pointer from integer without cast

    Taki błąd wyświetla się w każdym wywołaniu funkcji dla &time_prog oraz &time_plus_prog. 62 błędy dotyczą każdego odwołania do funkcji w których jest uint8_t* time_prog i uint8_t* time_plus_prog



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 9 wrz 2012, o 16:44 
    Offline
    Użytkownik

    Dołączył(a): 26 lip 2012
    Posty: 104
    Pomógł: 0

    Mam problem. Gdy ustawiam wybór poszczególnych przekaźników i wybiorę przekaźnik 1 oraz 2 to program załączy przekaźnik 1 potem 2, ale cała sekwencja się nie powtarza. Powtarza się jedynie gdy cztery przekaźniki są zaprogramowanie.

    W tym przypadku licznik13, 16, 19, 22 jest równy 0:

    Problem chyba polega na tym, że flagi na końcu przekaźnika 4 nie są ponownie ustawiane na 1. Jak to rozwiązać? ;)



    Ostatnio edytowano 10 sty 2013, o 11:17 przez rafkins22, łącznie edytowano 1 raz

    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 10 wrz 2012, o 10:38 
    Offline
    Uzytkownik zasłużony dla forum.atnel.pl
    Avatar użytkownika

    Dołączył(a): 16 lip 2012
    Posty: 2088
    Lokalizacja: Leżajsk / Kraków
    Pomógł: 411

    To może nie ustawiaj tych 4 flag w obsłudze przekaźnika 4 tylko zamiast zerowania ich na końcu np. flaga_p1_p1=0; //off ustaw na 1 np. flaga_p1_p1=1; każdą z osobna.

    _________________
    Dragonus Cracovus: Biomagia



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

    Dołączył(a): 26 lip 2012
    Posty: 104
    Pomógł: 0

    Czy dobrze kombinuje z tą funkcją jeśli chodzi o pracę przekaźnika w zależności od ustawionej godziny włączenia i wyłączenia ( np 12:30:20 do 16:20:10). Jak wiadomo godziny, minuty i sekundy właczenie mogą być większe lub mniejsze
    od wyłączenia



    Ostatnio edytowano 10 sty 2013, o 11:17 przez rafkins22, łącznie edytowano 1 raz

    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 17 wrz 2012, o 17:42 
    Offline
    Użytkownik

    Dołączył(a): 26 lip 2012
    Posty: 104
    Pomógł: 0

    Krauser bardzo proszę o opinie na temat mojej funkcji ;)



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 17 wrz 2012, o 18:54 
    Offline
    Moderator
    Avatar użytkownika

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

    tak się nie robi .... bo jak byś miał jeszcze daty dodać to za chwilę musiałbyś przekazywać 1000 argumentów do funkcji a i tak już masz 500

    zamień godziny i minuty na liczby

    h_start=(hh*60)+mm;
    h_stop=(hhs*60)+mms;

    i potem porównój liczby

    if( h_stop > h_start )...

    _________________
    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: 17 wrz 2012, o 20:03 
    Offline
    Uzytkownik zasłużony dla forum.atnel.pl
    Avatar użytkownika

    Dołączył(a): 16 lip 2012
    Posty: 2088
    Lokalizacja: Leżajsk / Kraków
    Pomógł: 411

    Pierwszy problem z kodem to zbytnie rozbudowanie, a drugi to taki, że w funkcji wielokrotne wykorzystujesz zmienne ze specyfikatorem volatile, a przypomnę, że w Twoim pierwszym poście masz:
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

    W każdym obiegu tych porównań wystąpi wielokrotne niepotrzebne odczytywanie tych zmiennych z pamięci RAM zamiast z rejestrów. Ta pierwsza opcja wymaga większej ilości instrukcji i pociągnie większe zużycie pamięci programu. W takich przypadkach lepiej skopiować takie zmienne do innych i na nich wykonać te porównania lub nawet operacje i zapisać z powrotem do zmiennych z przydomkiem volatile.
    Skorzystaj z powyższej rady lub nawet wykorzystaj czas uniksowy.
    Volatile nie jest potrzebne do tych zmiennych, bo czas odczytujesz tylko w pętli głównej.

    _________________
    Dragonus Cracovus: Biomagia



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

    Dołączył(a): 26 lip 2012
    Posty: 104
    Pomógł: 0

    Rozumiem, ale gdy mamy przedział np. od 11:12:30 - 02:03:00 to h_start> h_stop.

    Minuty stop są mniejsze niż minuty start tzn., że przedział minut powinien zawierać się w granicy:

    minuty>=minuty_start || minuty<minuty_stop

    bo gdy będzie:

    minuty>=minuty_start && minuty<minuty_stop

    to minuty muszą być większe od 12 i mniejsze od 3, a nie ma takiej liczby. Czy dobrze myślę? Czy już mi się coś poplątało?

    Więc w jaki sposób to rozwiązać w kodzie?



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

    Dołączył(a): 26 lip 2012
    Posty: 104
    Pomógł: 0

    Dzięki waszym wskazówkom powstała taka funkcja:
    Jednak nie działa. Wydaje mi się, że to z powodu nie zmieniającego się czasu, co skutkuje nie załączeniem przekaźnika



    Ostatnio edytowano 10 sty 2013, o 11:18 przez rafkins22, łącznie edytowano 1 raz

    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 19 wrz 2012, o 08:43 
    Offline
    Uzytkownik zasłużony dla forum.atnel.pl
    Avatar użytkownika

    Dołączył(a): 16 lip 2012
    Posty: 2088
    Lokalizacja: Leżajsk / Kraków
    Pomógł: 411

    && ma wyższy priorytet niż ||
    A ty masz coś takiego
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

    Porównaj z tym co kolega GwynBleidD napisał.

    _________________
    Dragonus Cracovus: Biomagia



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

    Dołączył(a): 26 lip 2012
    Posty: 104
    Pomógł: 0

    Nie podoba mi się jedna rzecz w moim kodzie, próbowałem to zmienić ale nie mam pomysłu. Chodzi o wyczyszczenie zapisanego programu. Po ustawieniu godzin włączania i wyłączania przekaźników i zaakceptowaniu program 1 działa. Po wyjściu escapem i ponownym wejcciu w program jest możliwość wyczyszczenia

    Po ponownym wejściu w program 1 zaczynamy wtedy programowanie od nowa.

    Czy macie jakiś inny pomysł jak to rozwiązać, ponieważ źle to działa.



    Ostatnio edytowano 10 sty 2013, o 11:19 przez rafkins22, łącznie edytowano 1 raz

    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 30 wrz 2012, o 13:21 
    Offline
    Użytkownik

    Dołączył(a): 26 lip 2012
    Posty: 104
    Pomógł: 0

    Problem rozwiązałem :lol:



    Ostatnio edytowano 10 sty 2013, o 11:20 przez rafkins22, łącznie edytowano 1 raz

    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 30 wrz 2012, o 13:25 
    Offline
    Moderator
    Avatar użytkownika

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

    Tak śledzę czasem ten temat, szczegółów nie znam ale gdy widzę takie coś

    Kod:
    uint8_t DeviceWorks(uint8_t* flaga_p_p, uint8_t* h_start, uint8_t* h_stop, uint8_t* m_start, uint8_t* m_stop, uint8_t* sek_start, uint8_t* sek_stop,uint8_t* year_start, uint8_t* year_stop, uint8_t* month_start, uint8_t* month_stop, uint8_t* day_start, uint8_t* day_stop, uint8_t device)


    to aż serce się kroi i woła o to aby w końcu nauczyć wykorzystywać struktury danych, i do funkcji przesłać jeden argument w postaci wskaźnika do struktury a nie TYLE argumentów, przecież takie podejście poza koszmarem kodu, poza kłopotem z czytaniem, poza łatwością o pomyłkę - zjada ci stos na potęgę i gdy tą drogą będziesz szedł to się potem będziesz dopiero dziwił że coś ci tam w zaskakujący sposób nie działa. Bo niestety uszkodzenia stosu dają najbardziej mylące objawy i najgorsze efekty...

    zatem taki przykład - to "NAJLEPSZY" przykład jak to jest gdy ktoś nie chce się nauczyć struktur w C i sięgnąć po nie.

    _________________
    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: 30 wrz 2012, o 13:30 
    Offline
    Uzytkownik zasłużony dla forum.atnel.pl
    Avatar użytkownika

    Dołączył(a): 16 lip 2012
    Posty: 2088
    Lokalizacja: Leżajsk / Kraków
    Pomógł: 411

    rafkins22 napisał(a):
    Mam pytanie w jaki sposób zmieniać w funkcji LED1_ON,LED1_OFF na np. LED2_ON i LED2_OFF

    Dodaj sobie funkcję static void ledOn(uint8_t led) i static void ledOff(uint8_t led)
    rafkins22 napisał(a):
    Czy macie jakiś inny pomysł jak to rozwiązać, ponieważ źle to działa.

    To stwierdzenie jest zbyt ogólne. Jak chcesz zaoszczędzić na pamięci programu to mógłbyś to nieco uporządkować wprowadzając zamiast np. licznik5 tablicę licznik i do większości operacji użyć pętli for.

    Do porównywania czasu łącznie datą lepiej przejść na czas unixowy, bo lata mogą być również przestępne. Poszukaj gotowej funkcji do konwersji w jedną i drugą stronę.
    W tym zegarze jest również funkcja alarmu, można by ją wykorzystać.

    _________________
    Dragonus Cracovus: Biomagia



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 30 wrz 2012, o 16:38 
    Offline
    Użytkownik

    Dołączył(a): 26 lip 2012
    Posty: 104
    Pomógł: 0

    Chcę się nauczyć dlatego zadaję pytania i proszę o pomoc.Dopiero to mój pierwszy poważny projekt i stąd taki nie ład w pewnych miejscach. Ale dzięki mirekk36, że wskazałeś mi dobrą drogę. Rzeczywiście muszę w swoim projekcie użyć struktur danych i tablic w celu optymalizacji kodu. Kiedyś wykorzystywałem struktury, ale już co nie co zapomniałem.

    Tylko nie wiem w jaki sposób ma wyglądać odwołanie do wskaźnika struktury w mojej funkcji. Proszę o pomoc. Muszę załapać i wtedy już będzie z górki.


    Poza tym nie wiem czy flaga_p_p powinna być w strukturze. Jeżeli będę miał 10 programów i dla każdego 4 przekażniki do ustawienia ( np. flaga_p1_p1, flaga_p1_p2, flaga_p1_p3, flaga_p1_p4, flaga_p2_p1, flaga_p2_p2 .... itd)

    A co wtedy z licznikami ustawiającymi czasy włączania i wyłączania przekaźników oraz daty



    Ostatnio edytowano 10 sty 2013, o 11:21 przez rafkins22, łącznie edytowano 1 raz

    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 1 paź 2012, o 13:59 
    Offline
    Uzytkownik zasłużony dla forum.atnel.pl
    Avatar użytkownika

    Dołączył(a): 16 lip 2012
    Posty: 2088
    Lokalizacja: Leżajsk / Kraków
    Pomógł: 411

    W twoim przypadku, gdzie masz wiele takich samych "obiektów" deklaracja struktury bez nazwy i jednoczesna definicja tego typu zmiennej jest bezużyteczna, bo nie możesz zdefiniować innych zmiennych. Takie coś odpada:
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

    Do definiowania struktury najlepiej posługiwać się słowem typedef, a to dlatego, że później definiowanie zmiennych jest takie jak i tych podstawowych:
    Bez typedef
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

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

    Czyli powinno to być mniej więcej tak, ale zastanów się nad organizacją danych, co cechuje pojedynczy przekaźnik. Jakie dane mają być w programie. Rozpisz to sobie dokładnie na kartce, a będzie ci później łatwiej to przenieść do programu:
    Składnia: [ Pobierz ] [ Ukryj ] [ Zaznacz wszystko ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

    rafkins22 napisał(a):
    Jeśli chodzi o czas unixowy poczytam na ten temat, bo na razie nie mam na ten temat pojęcia. Ale jeżeli będę chciał z niego skorzystać to muszę to wszystko zmieniać, aby dostosować do czasu unixowego:
    ...
    Czy chodzi tylko o użycie czasu unixowego do przeliczenia przedziałów ,daty włączania i wyłączenia?

    To zależy jak zamierzasz wykorzystać to sterowanie z datą. Na pewno do porównań będzie lepszy, ale jak chciałbyś coś sterować w cyklu dziennym, tygodniowym, miesięcznym to się nie nadaje.

    _________________
    Dragonus Cracovus: Biomagia



    Ostatnio edytowano 1 paź 2012, o 20:21 przez Krauser, łącznie edytowano 2 razy

    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 1 paź 2012, o 15:52 
    Offline
    Użytkownik

    Dołączył(a): 26 lip 2012
    Posty: 104
    Pomógł: 0

    Krauser mając na myśli " wiele takich samych obiektów", chodzi Ci o to, że mam 4 przekaźniki? Mając strukturę:

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


    Do każdego przekaźnika będę miał inne godziny start, godziny stop ... itd. (np. przekaznik1.h_start), ale po co? Nie mogę się odwołać do funkcji w której mam wszystko obliczone, a w wywołaniu funkcji odwołuję się do danego przekaźnika?

    Może źle Cię zrozumiałem ;)



    Ostatnio edytowano 10 sty 2013, o 11:22 przez rafkins22, łącznie edytowano 1 raz

    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 1 paź 2012, o 21:02 
    Offline
    Uzytkownik zasłużony dla forum.atnel.pl
    Avatar użytkownika

    Dołączył(a): 16 lip 2012
    Posty: 2088
    Lokalizacja: Leżajsk / Kraków
    Pomógł: 411

    rafkins22 napisał(a):
    Krauser mając na myśli " wiele takich samych obiektów", chodzi Ci o to, że mam 4 przekaźniki?

    Dokładnie chodziło mi o to, że tworząc strukturę bez nazwy więcej już nie możesz jej wykorzystać np. jako element kolejnej struktury, bo możesz zrobić też tak:
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

    rafkins22 napisał(a):
    Do każdego przekaźnika będę miał inne godziny start, godziny stop ... itd. (np. przekaznik1.h_start), ale po co? Nie mogę się odwołać do funkcji w której mam wszystko obliczone, a w wywołaniu funkcji odwołuję się do danego przekaźnika?

    Może źle Cię zrozumiałem ;)

    Albo ja Ciebie :lol: Myślałem, że chciałeś pobierać czasy włączenia i wyłączenia jako składową danego programu działania, a wtedy w każdym innym "programie sterującym" to by się różniło. Na tym etapie nie zamierzam już dyskutować o algorytmie działania. Dlatego jak masz jakiś problem to staraj się go dokładniej opisać.

    _________________
    Dragonus Cracovus: Biomagia



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 2 paź 2012, o 18:22 
    Offline
    Użytkownik

    Dołączył(a): 26 lip 2012
    Posty: 104
    Pomógł: 0

    Zacznę może dokładnie od początku, wtedy będziesz mógł mi pomóc.
    I teraz Krauser proszę powiedz mi w jaki sposób stworzyć do tego strukturę tak jak zalecił mirekk36, żeby nie przesadzić ze stosem, który może zjadać mi RAM i powodować dziwaczne błędy.



    Ostatnio edytowano 10 sty 2013, o 11:23 przez rafkins22, łącznie edytowano 1 raz

    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 3 paź 2012, o 16:52 
    Offline
    Uzytkownik zasłużony dla forum.atnel.pl
    Avatar użytkownika

    Dołączył(a): 16 lip 2012
    Posty: 2088
    Lokalizacja: Leżajsk / Kraków
    Pomógł: 411

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

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

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

    Mam jeszcze taką uwagę odnośnie nazywania zmiennych. Masz counter[24], a później opisujesz co znajduje się w kolejnych komórkach tej tablicy. Tablica jest dobra do wykorzystania w pętli for, ale wtedy nie masz intuicyjnych nazw przez co łatwo o pomyłkę. Można to połaczyć stosując unię. Np.
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

    _________________
    Dragonus Cracovus: Biomagia



    Ostatnio edytowano 6 paź 2012, o 17:47 przez Krauser, łącznie edytowano 1 raz

    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 3 paź 2012, o 17:52 
    Offline
    Użytkownik

    Dołączył(a): 26 lip 2012
    Posty: 104
    Pomógł: 0

    Bardzo dziękuje za wytłumaczenie Krauser.Zaczynam już to rozumieć co mnie niezmiernie cieszy :D Jeszcze jedna rzecz mnie zastanawia.



    Ostatnio edytowano 10 sty 2013, o 11:23 przez rafkins22, łącznie edytowano 1 raz

    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 3 paź 2012, o 19:21 
    Offline
    Uzytkownik zasłużony dla forum.atnel.pl
    Avatar użytkownika

    Dołączył(a): 16 lip 2012
    Posty: 2088
    Lokalizacja: Leżajsk / Kraków
    Pomógł: 411

    To by było niepotrzebne zwiększanie rozmiaru programu. Jeśli dobrze myślę to zmienna device przekazuje numer przekaźnika i wtedy możesz zrobić tak:
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

    _________________
    Dragonus Cracovus: Biomagia



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 6 paź 2012, o 13:10 
    Offline
    Użytkownik

    Dołączył(a): 26 lip 2012
    Posty: 104
    Pomógł: 0

    Wyskakują mi takie błędy:

    ../main.c: In function 'DeviceWorks':
    ../main.c:3990: error: 'program_wsk' undeclared (first use in this function)
    ../main.c:3990: error: (Each undeclared identifier is reported only once
    ../main.c:3990: error: for each function it appears in.)



    Ostatnio edytowano 10 sty 2013, o 11:23 przez rafkins22, łącznie edytowano 1 raz

    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 6 paź 2012, o 17:50 
    Offline
    Uzytkownik zasłużony dla forum.atnel.pl
    Avatar użytkownika

    Dołączył(a): 16 lip 2012
    Posty: 2088
    Lokalizacja: Leżajsk / Kraków
    Pomógł: 411

    To moja pomyłka. W końcu ta struktura nazywa PROGRAMY.
    Zamiast:
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

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

    _________________
    Dragonus Cracovus: Biomagia



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 6 paź 2012, o 18:48 
    Offline
    Użytkownik

    Dołączył(a): 26 lip 2012
    Posty: 104
    Pomógł: 0

    Nadal pojawiają mi się 3 błędy:



    Ostatnio edytowano 10 sty 2013, o 11:24 przez rafkins22, łącznie edytowano 1 raz

    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: 132 ]  Przejdź na stronę Poprzednia strona  1, 2, 3, 4, 5  Następna strona

    Strefa czasowa: UTC + 1


    Kto przegląda forum

    Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 1 gość


    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