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



Teraz jest 12 gru 2024, o 17:10


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 15 ] 
Autor Wiadomość
PostNapisane: 16 lip 2012, o 12:23 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 23 paź 2011
Posty: 401
Lokalizacja: Siedlce
Pomógł: 7

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

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

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

Dostaję błędy:
Kod:
Description   Resource   Path   Location   Type
passing argument 3 of 'ds1307_getDate' discards qualifiers from pointer target type   main.c
passing argument 2 of 'ds1307_getDate' discards qualifiers from pointer target type   main.c
passing argument 4 of 'ds1307_getDate' discards qualifiers from pointer target type   main.c
passing argument 2 of 'ds1307_getTime' discards qualifiers from pointer target type   main.c
passing argument 1 of 'ds1307_getTime' discards qualifiers from pointer target type   main.c
passing argument 1 of 'ds1307_getDate' discards qualifiers from pointer target type   main.c
passing argument 3 of 'ds1307_getTime' discards qualifiers from pointer target type   main.c

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

Co z tym począć?

_________________
Czekamy na RedBook'a!



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 lip 2012, o 12:59 
Offline
Moderator
Avatar użytkownika

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

Proszę starać się pisać bardziej precyzyjnie. To co kolega dostaje to nie błędy a warningi. Ale bardzo dobrze że kolega z drugiej strony traktuje je jak błędy ;)

więc tak deklaracja funkcji jest taka:

Kod:
void ds1307_getTime(uint8_t *h, uint8_t *m, uint8_t *s);


zatem argumenty mają być typu wskaźnika o typie uint8_t a co kolega przekazuje do funkcji ????

adres do zmiennej typu Time - więc jak może nie być warninga ??? dobrze że jest - kompilator nie jest pewien czy aby się autor nie pomylił - a jeśli się nie pomylił to niech ten autor sam jawnie powie mu to wyraźnie. Jak to powiedzieć kompilatorowi ? Ano poprzez jawne rzutowanie typu czyli:

Kod:
ds1307_getTime( (uint8_t*)&RTC_Time.H, (uint8_t*)&RTC_Time.m, (uint8_t*)&RTC_Time.s);


teraz kompilator już będzie wiedział że typ wskaźnikowy Time ma rzutować na typ wskaźnikowy uint8_t bo autor dokładnie wie co robi i że odwołuje się do poszczególnych zmiennych w tej strukturze ;)

_________________
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: 16 lip 2012, o 13:24 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 24 cze 2012
Posty: 414
Lokalizacja: Oborniki
Pomógł: 5

Chodzi o to, żeby zmienić wartość tych zmiennych, a nie przekazać je tylko do funkcji :) Do tego właśnie służą wskaźniki

------------------------ [ Dodano po: kilkunastu sekundach ]

Post, na który odpowiedziałem zniknął :D

_________________
Pozdrawiam:
Mikołaj



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 lip 2012, o 13:35 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 23 paź 2011
Posty: 401
Lokalizacja: Siedlce
Pomógł: 7

mirekk36 napisał(a):
...
Kod:
ds1307_getTime( (uint8_t*)&RTC_Time.H, (uint8_t*)&RTC_Time.m, (uint8_t*)&RTC_Time.s);

...


No tak znów czegoś zapomniałem - gwiazdki ;)
Próbowałem pisać np.:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

i się dziwiłem, że nadal jest warning... :lol:

_________________
Czekamy na RedBook'a!



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 lip 2012, o 13:40 
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

A zmienna RTC_Time nie jest przypadkiem zmienną globalną?
Jeśli tak to możesz wywołać funkcję bez argumentów, bo zmienna globalna jest dostępna dla wszystkich funkcji.

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

mikandrzej napisał(a):
Chodzi o to, żeby zmienić wartość tych zmiennych, a nie przekazać je tylko do funkcji :) Do tego właśnie służą wskaźniki

------------------------ [ Dodano po: kilkunastu sekundach ]

Post, na który odpowiedziałem zniknął :D

Przepraszam, ale sam go usunąłem, bo były tam tylko przypuszczenia, a nie fakty.

_________________
Dragonus Cracovus: Biomagia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 lip 2012, o 13:48 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 24 cze 2012
Posty: 414
Lokalizacja: Oborniki
Pomógł: 5

A w sumie nie lepiej byloby przesylac cala klase, a nie poszczegolne jej pola? W sensie przekazac wskaznik do klasy, a w funkcji juz sobie to rozbijac na poszczegolne pola?

_________________
Pozdrawiam:
Mikołaj



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 lip 2012, o 14:31 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 23 paź 2011
Posty: 401
Lokalizacja: Siedlce
Pomógł: 7

1) Jak to zrobić?

2) Teraz chciałbym jeszcze bardziej zamotać... i ta sama funkcja miała by umożliwiać odczyt czasu do więcej niż jednej zmiennej typu Time:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

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


Hmm... to chyba będzie 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.

Tylko teraz jak prawidłowo wywołać funkcję...
RTC_READ(...?...);

Chyba mam :)
RTC_READ((Time*)&RTC_Time);

_________________
Czekamy na RedBook'a!



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 lip 2012, o 14:47 
Offline
Moderator
Avatar użytkownika

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

RTC_READ( &RTC_Time );

Tylko że ty się niedługo przewskaźnikujesz ;) już ktoś chyba wyżej podpowiedział - jeśli to zmienna globalna to nie do końca jest sens słania tego w ogóle w postaci argumentów, wskaźników, wskaźników do wskaźników itd

ale żeby poćwiczyć wskaźniki to OK ;)

_________________
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: 21 lip 2012, o 14:56 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 23 paź 2011
Posty: 401
Lokalizacja: Siedlce
Pomógł: 7

Jakiś większy HINT* ? ;)

* - podpowiedź

_________________
Czekamy na RedBook'a!



Ostatnio edytowano 21 lip 2012, o 15:29 przez szopler, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 lip 2012, o 15:09 
Offline
Moderator
Avatar użytkownika

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

szopler napisał(a):
Jakiś większy HINT ? ;)


Jakieś bardziej precyzyjne pytanie ? bo nie rozumiem o co chodzi - pytanie było krótkie to i odpowiedź krótka.

------------------------ [ Dodano po: kilkunastu sekundach ]

a po co tak:

RTC_READ((Time*)&RTC_Time);

skoro masz deklarację funkcji tak:

void RTC_READ(Time *wskaznik)

_________________
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: 21 lip 2012, o 15:27 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 23 paź 2011
Posty: 401
Lokalizacja: Siedlce
Pomógł: 7

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

wywołuje błąd w stylu "passing argument 1 of 'RTC_READ' discards qualifiers from pointer target type".

_________________
Czekamy na RedBook'a!



Ostatnio edytowano 21 lip 2012, o 20:29 przez szopler, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 lip 2012, o 19:22 
Offline
Moderator
Avatar użytkownika

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

szopler napisał(a):
Bo tak jak podałeś:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

wywołuje błąd w stylu "passing argument 1 of 'RTC_READ' discards qualifiers from pointer target type".


Tego co dalej już nie będę nawet rozpatrywał ale strasznie coś kręcisz, na prawdę;)

posłuchaj uważnie i sobie to przetestuj, jeśli masz zdefiniowany typ strukturalny Time, następnie masz zmienną tego typu czyli strukturę

Kod:
Time RTC_Time;


oraz funkcję:

Kod:
void RTC_READ(Time *wskaznik) {
   
}


to nie ma możliwości żeby przy wywołaniu teh funkcji w kodzie w ten sposób:

Kod:
RTC_READ( &RTC_Time );


pokazywał się warning o jakim piszesz ponieważ argument funkcji jest dokładnie takiego typu jak adres przekazywanej zmiennej czyli wskaźnik

Tylko nie udowadniaj mi że u ciebie jest inaczej ;) bo nie jest - coś źle robisz, coś namieszałeś coś gdzieś pomyliłeś - to MUSI działać poprawnie bo jest zgodnie syntaktycznie. I nie ma że boli. Zamiast więc szukać kolejnego lekarstwa i sposobów na ominięcie tego - dojdź co źle robisz - bo mówię już się sam zakręciłeś ;)

_________________
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: 21 lip 2012, o 20:28 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 23 paź 2011
Posty: 401
Lokalizacja: Siedlce
Pomógł: 7

1) To jest możliwe jeżeli zadeklaruję RTC_Time tak:
volatile Time RTC_Time;

2) Jak to powinno wyglądać tutaj, bo już skrętu dostaję... co nie wpiszę to błąd np. "request for member 's' in something not a structure or union":
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Czyżby... (*wskaznik).s = sec; ?!

_________________
Czekamy na RedBook'a!



Ostatnio edytowano 21 lip 2012, o 22:46 przez szopler, łącznie edytowano 2 razy

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 lip 2012, o 22:03 
Offline
Moderator
Avatar użytkownika

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

szopler napisał(a):
To jest możliwe jeżeli zadeklaruję RTC_Time tak:

volatile Time RTC_Time;


Ale to przepraszam - kalambury robisz? ;) napiszesz kawałek w pytaniu a reszty mamy się sami domyśleć i podać właściwą odpowiedź ??? Nie tędy droga. Zawsze powtarzam proszę bardziej precyzować pytania to będą dwie korzyści:

1. szybciej ktoś odpowie i pomoże
2. mniej czasu stracimy wspólnie na dojście do problemu

a teraz do meritum:

jeśli dajesz:

Kod:
volatile Time RTC_Time;


to panie kochany zdeklaruj później odpowiednio z tym funkcję:

Kod:
void READ_RTC( volatile Time * wskaźnik );

_________________
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: 21 lip 2012, o 22:25 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 23 paź 2011
Posty: 401
Lokalizacja: Siedlce
Pomógł: 7

Nie rozumiem dlaczego teraz mam błędy:
Kod:
incompatible type for argument 1 of 'ds1307_getTime'
incompatible type for argument 1 of 'ds1307_getDate'

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

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

_________________
Czekamy na RedBook'a!



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

Strefa czasowa: UTC + 1


Kto przegląda forum

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