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? 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 4 cze 2025, o 03:15


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 8 ] 
    Autor Wiadomość
    PostNapisane: 7 lis 2011, o 23:45 
    Offline
    Nowy

    Dołączył(a): 27 paź 2011
    Posty: 20
    Pomógł: 0

    Fajny ten C.
    Wkurzam się tylko, że zamiast pisać, a właściwie próbować pisać, to mnóstwo czasu tracę na "pierdoły" w stylu zastanawianie się dlaczego kompilator się pluje na taką deklarację i definicję:
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

    błąd:
    Cytuj:
    Error 1 expected ')' before 'i'

    No naprawdę nie wiem o co mu chodzi. Jak zmienię parametr z uint8_t na char to już nie ma błędu.

    Wie ktoś o co biega?



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 8 lis 2011, o 07:39 
    Offline
    Moderator
    Avatar użytkownika

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

    Kolega lepiej pokaże deklarację swojej stałej dosłownej CLIP_DISABLE, bo skoro jest taki komunikat to tam trzeba szukać błędu, gdyż nazwa CLIP_DISABLE jest prawdopodobnie źle rozwijana.

    I tak mi się coś zdaje, że u kolegi ta definicja wygląda mniej więcej tak: (nie istotna tu jest już wartość)

    Kod:
    #define CLIP_DISABLE 5;


    a pisałem w książce wyraźnie, żeby unikać średników na końcu linii podczas definicji #define ;) .... bo jeśli tak kolega ma to jak kompilator może się "nie pluć" jak kolega pisze, jeśli grzeczny sługa PREPROCESOR zamienia tą nazwę CLIP_DISABLE tak dla kompilatora:

    Kod:
    if( i == 5; ) .....


    czy kolega jako kompilator też by się nie wkurzył, gdyby ktoś mu podał takie coś do kompilacji ??? ;)

    Zatem błąd może się okazać banalny jeśli jest tak jak przewiduję, zatem definicja powinna zgodnie z regułami podanymi w książce wyglądać tak:

    Kod:
    #define CLIP_DISABLE 5


    Reasumując proszę być spokojnym - tego typu błędy na początku są normalne - i niedługo kolega się ich pozbędzie na zawsze.

    Chyba że źle przypuszczam - więc proszę pokazać więcej kodu żeby to rozwikłać - czekam na info.

    _________________
    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: 8 lis 2011, o 12:29 
    Offline
    Nowy

    Dołączył(a): 27 paź 2011
    Posty: 20
    Pomógł: 0

    To chyba nie to.
    Definicja jest ok:
    Cytuj:
    #define CLIP_DISABLE 0

    To samo w eclipse i avrstudio5. Wystarczy, że zmienię uint8_t na char i się kompiluje.
    Próbowałem już usuwać pliki *.c i *.h tworzyć nowe, albo bez pliku nagłówkowego, z deklaracjami w *.c .

    Jak pousuwam deklaracje i definicje, to jak chcę na nowo je utworzyć ( po prawidłowej kompilacji kiedy są usunięte ), to po wpisaniu nazwy funkcji intellisense pamięta jakie były ostatnio parametry i podpowiada. Zresztą samą nazwę funkcji też chyba pamięta.
    Piszę o tym, bo nie wiem czy to może pomóc dojść o co chodzi, ale wątpię, bo nowa nazwa funkcji nic nie zmienia.
    Dla mnie czary :)



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 8 lis 2011, o 12:36 
    Offline
    Moderator
    Avatar użytkownika

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

    Posłuchaj ale ja ten twój kod na żywca wpisałem u siebie do Eclipse. I żadnych takich cudów nie mam. Dlatego twierdzę, że błąd może leżeć jeszcze całkiem gdzie indziej lecz na podstawie takiego wyrywka informacji/kodu programu nie da się tego wprost stwierdzić. Można co najwyżej tylko jak widzisz - przypuszczać i nie trafiać.\

    Dlatego proponuję jak zwykle - spakuj cały projekt i podeślij mi na maila: biuro@atnel.pl

    Tylko projekt w Eclipse a nie ten brrrr w kocim AVR Studio 5 ;)

    Nie ma takiej możliwości żeby to nie działało - a warto dojść co się dzieje, żebyś się nie męczył i nie zniechęcił - a przy okazji nauczył się szukać tego typu błędów ;)

    _________________
    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: 8 lis 2011, o 13:03 
    Offline
    Nowy

    Dołączył(a): 27 paź 2011
    Posty: 20
    Pomógł: 0

    Ok. Wieczorem podeślę jak wrócę z pracy.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 8 lis 2011, o 20:43 
    Offline
    Moderator
    Avatar użytkownika

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

    No dostałem maila. Panie kolego żbik ;) otworzyłem ten projekt, chociaż przyznam, że o mało co nie przeżegnałem się lewą nogą ;) .... (jednak rozumiem początki - sam kiedyś mocno mieszałem, aż za mocno).

    Szkoda tylko, że kolega nie stosuje się do zasad podanych w książce jeśli chodzi o tworzenie projektów, nazewnictwo plików czy folderów - niestety to pokutuje :( i będzie jeszcze długo pokutować - jeśli kolega nie przekona się do zasad dobrego programowania.

    Jeśli potrzeba jakiejś konsultacji w tej sprawie to zapraszam serdecznie na Skype do mnie, akurat tego typu sprawy łatwo naprostować - tylko trzeba chcieć.

    ----------------------------------------

    WRACAJĄC DO TEMATU:

    oczywiście winny jest sposób myślenia o którym piszę wyżej a rozwiązanie takie na szybko problemu kolegi sprowadza się do tak banalnej rzeczy, że aż strach. Przecież kolega pisze jakiś plik z rozszerzeniem *.c, jak więc to możliwe, że chce korzystać z typów, z nazw pinów procesora itp nawet kolega w tym pliku nie podciąga

    N A J W A Ż N I E J S Z E G O SYSTEMOWEGO PLIKU NAGŁÓWKOWEGO

    #include <avr/io.h>

    ????? hmmm - toż to nie dziwne, że jeśli brak tego pliku to będzie burza na wiok typu uintx_t - gdyż kompilator nie wie skąd wziąć plik nagłówkowy dla danego procesora i w ogóle dla języka C :(

    Proszę na poważnie rozważyć jeszcze raz:

    1. jak najszybszą rezygnację z AVR Studio 5 - bo tu wprowadza się kolega w wyższe stany nieświadomości i już w ogóle nie panuje nad projektem.

    2. działanie w Eclipse zgodnie z zaleceniami - przynajmniej na czas nauki - początków nauki języka C - bo to pomoże koledze mieć kontrolę nad plikami projektu. (ja wiem że wiele osób uważa, że przesadzam - ale proszę to nie jedyny przypadek, że tak się kończą projekty - tzn jakimi błędami. Przecież jak już wiadomo skąd bierze się ten błąd to każdy sobie zda sprawę jakie to niby banalne) no ale żeby do niego dojść to najpierw warto po drodze zapoznawać się z całą hierarchią plików i bibliotek w C. A dzięki Eclipse - poruszanie się pomiędzy nimi to poezja. Szkoda tylko, że niektórzy na siłę robią sobie krzywdę.

    Dlatego - szczerze zapraszam na Skype do mnie, będzie można zadać parę pytań a ja z chęcią udzielę odpowiedzi i kilku wskazówek, żeby naprowadzić na właściwe tory. To jak kolega już zaskoczy - wtedy dalej będzie już sam swobodnie jechał w tym wagoniku o nazwie C ;)

    (tylko jeśli ma to być szybka i zwarta konsultacja to na Skype zapraszam wyłącznie z mikrofonem i słuchawkami - bo niestety na pisanie w komunikatorze za dużo czasu schodzi i o wiele trudniej się porozumieć czy coś wytłumaczyć)

    życzę powodzenia

    a dla porównania tak wyglądał plik kolegi z tym super tajemniczym błędem:

    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.


    a tak wygląda po mojej propozycji obróbki i dodaniu najważniejszego INKLUDA

    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.


    Proszę wziąć do siebie uważnie wszystkie propozycje poprawek i dokładnie przeanalizować różnice. W końcu chodzi o to żeby także kod był bardziej czytelny prawda ?

    _________________
    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: 24 lis 2011, o 22:48 
    Offline
    Nowy

    Dołączył(a): 27 paź 2011
    Posty: 20
    Pomógł: 0

    Dzięki za pomoc w rozwiązaniu problemu. Nigdy nie wpadł bym na to, że może chodzić o <avr/io.h>.

    I w sumie dalej nie wiem dlaczego jest wymagany, skoro w pliku są same deklaracje / definicje, a nie są użyte operacje na portach.
    Wygląda na to, że muszę jeszcze sporo doczytać.

    Mam jeszcze pytanie o stringi, ale to w innym temacie..

    pzdr.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 24 lis 2011, o 23:00 
    Offline
    Moderator
    Avatar użytkownika

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

    Ale dołączenie <avr/io.h> wcale nie jest wymagane tylko wtedy gdy są operacje na jakichś tam portach. To jest podstawowy plik, który zawsze trzeba załączyć jeśli już piszemy jakiś kod. To od niego zależy w ogóle czy kompilator będzie wiedział dla jakiego mikrokontrolera piszemy swój program. Bez tego jest ślepy i głuchy. A kolejną ważną rzeczą poza nazwami portów w tym przypadku było już użycie TYPÓW przez kolegę. A ponieważ typ "uint8_t" nie jest typowym typem czystego języka C, tylko pewnym rozwinięciem i udogodnieniem konkretnej wersji AVR GCC to nie trudno się domyśleć, że chociażby i z tego powodu kompilator musi mieć zainkludowany taki podstawowy plik nagłówkowy. Mam nadzieję, że teraz trochę jaśniej.

    I jak na drugi raz kolega będzie pisał kod, to sporo problemów tego typu zniknie - bo już zawsze kolega podciągnie ten plik.

    _________________
    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  
    Wyświetl posty nie starsze niż:  Sortuj wg  
    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 8 ] 

    Strefa czasowa: UTC + 1


    Kto przegląda forum

    Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 23 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