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



Teraz jest 27 gru 2024, o 10:12


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 19 ] 
Autor Wiadomość
 Tytuł: wi-fi początki
PostNapisane: 31 lip 2018, o 17:26 
Offline
Użytkownik

Dołączył(a): 28 maja 2016
Posty: 469
Lokalizacja: Katowice
Pomógł: 1

Cześć.
Oglądam poradnik Pana Mirka :
#0173 WIFI232 - programowanie - Part 01
i mam kłopot.
Zaimportowałem sobie do mojego nowego programu bibliotekę z green booka - MK_USART, wszystko pięknie się zaimportowało. postępuję zgodnie z poradnikiem, czyli mam wszystkie includy

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


i po kompilacji wyskakuje mi worning w kodzie w pliku mkuart.c, konkretnie w else funkcji:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


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


Niestety nie mogę sobie z tym worningiem poradzić.

treść błędu : No break at the end of case

_________________
Nikt nie mówił,że będzie łatwo...



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 31 lip 2018, o 18:01 
Offline
Użytkownik

Dołączył(a): 08 mar 2015
Posty: 60
Pomógł: 5

Po prostu wynika to ze składni switch...case, że po każdym case powinien być break, lecz w tym przypadku zmieni to logikę i po prostu musisz zaakceptować ten warning

_________________
Http://anonimg3.comxa.com



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 31 lip 2018, o 18:04 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 23 paź 2014
Posty: 1032
Lokalizacja: Trójmiasto
Pomógł: 190

wstaw break i po problemie. Widzisz przy zwykłych warunkach można pominąć break i pozwolić na wykonanie kolejnych. Ale kod default jest jakby odrębnym tematem dla tego ostatni warunek przed defaultowym musi być zakończony break-iem.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 31 lip 2018, o 18:09 
Offline
Użytkownik

Dołączył(a): 08 mar 2015
Posty: 60
Pomógł: 5

xentis napisał(a):
wstaw break i po problemie. Widzisz przy zwykłych warunkach można pominąć break i pozwolić na wykonanie kolejnych. Ale kod default jest jakby odrębnym tematem dla tego ostatni warunek przed defaultowym musi być zakończony break-iem.

Z tego co pamiętam, to Mirek pisał w GB, że tam break'a nie może być ale może się mylę

_________________
Http://anonimg3.comxa.com



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 31 lip 2018, o 18:15 
Offline
Użytkownik

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

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

i warning powinien zniknąć.

EDIT:
xentis napisał(a):
wstaw break i po problemie

Tylko że to zmieni działanie programu w taki sposób, że znak CR (13) nie będzie dodawany do bufora odbiorczego, a chyba raczej powinien być, bo jak zidentyfikować koniec linii, jeśli jej długość nie jest znana?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 31 lip 2018, o 20:20 
Offline
Użytkownik

Dołączył(a): 02 gru 2015
Posty: 546
Pomógł: 27

W którymś z poradników o bodajże uart Mirek pokazał jak tego swicha zamienić na if i warming zniknie.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 31 lip 2018, o 22:24 
Offline
Moderator
Avatar użytkownika

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

wojciechgorzolka napisał(a):
Niestety nie mogę sobie z tym worningiem poradzić.

treść błędu : No break at the end of case


Proponuję zwrócić uwagę, że to nie jest WARNING kompilatora. Czy pojawia ci się WARNING w oknie CONSOLE po kompilacji ? ;) NA PEWNO NIE ;) ... za to Eclipse pokazuje tam pchełkę i żółty szlaczek ... Zatem z punktu widzenia kompilacji i programu nie jest to ŻADEN podkreślam - ŻADEN problem i można się tym nie przejmować.

Są oczywiście dwa sposoby rozwiązania i już niejednokrotnie je podawałem tzn przynajmniej jeden - gdy pokazywałem gdzie trzeba zmienić pewne ustawienie w Eclipse żeby się nie czepiał tej bzdury bo z punktu widzenia języka C to nie jest żaden problem ;)


równie dobrze całą sekcję switch możesz zamienić na taki zapis ;)


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


i problem zniknie

_________________
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: 31 lip 2018, o 23:26 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 mar 2014
Posty: 1475
Pomógł: 167

mirekk36 napisał(a):
pokazywałem gdzie trzeba zmienić pewne ustawienie w Eclipse żeby się nie czepiał tej bzdury bo z punktu widzenia języka C to nie jest żaden problem ;)
A ja bym nie polecał zmieniania w Eclipse, bo jak się ma problemy na takim poziomie, to na pewno taki warning częściej pomoże, gdy się jednak zapomni wstawić break niż będzie zbędny ;). Lepsza jest taka nadgorliwość niż potem męczenie się w szukaniu błędu, którego nie tak łatwo w takich wypadkach znaleźć. A jak komuś przeszkadzają pchełki w Eclipse, to lepiej jest zmieniać zapis kodu na proponowany przez Ciebie.

--
Pozdrawiam,
Robert



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 sie 2018, o 07:24 
Offline
Moderator
Avatar użytkownika

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

tu bym polemizował - dlatego, że akurat te niektóre ostrzeżenia - jak to w tym przypadku ze strony Eclipsa - w niczym by nam nie przeszkodziły. Po prostu pilnowanie składni w Eclipse bywa zbyt rygorystyczne niż w C ;) jest bardziej pod C++

Taki zapis jak w pytaniu autora wątku jest najzupełniej normalny dla standardu C ;) nie musi być tych break'ów ... i w Eclipse jest specyficzny jeden ptaszek który wyłącza tylko to zachowanie Eclipsa a nie że wyłącza się jednym ptaszkiem wszystkie ostrzeżenia Eclipsa.

Fakt - jedyny problem to to, że jak zmienimy w Eclipse (tak na prawdę ustawienie dokonuje się w bieżącym workspace) to później po przeniesieniu do nowego workspace - pchła eclipsowa pojawia się od nowa ;) ...

_________________
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: 1 sie 2018, o 07:42 
Offline
Użytkownik

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

mirekk36 napisał(a):
Taki zapis jak w pytaniu autora wątku jest najzupełniej normalny dla standardu C nie musi być tych break'ów ... i w Eclipse jest specyficzny jeden ptaszek który wyłącza tylko to zachowanie Eclipsa a nie że wyłącza się jednym ptaszkiem wszystkie ostrzeżenia Eclipsa.

Fakt - jedyny problem to to, że jak zmienimy w Eclipse (tak na prawdę ustawienie dokonuje się w bieżącym workspace) to później po przeniesieniu do nowego workspace - pchła eclipsowa pojawia się od nowa ...


Ale przecież ja już wcześniej w tym wątku podałem rozwiązanie. Nie trzeba wyłączać tej opcji. Wystarczy w miejscu, gdzie sprawdzanie składni oczekuje instrukcji break; wstawić komentarz
//no break
informując w ten sposob: "wiem, że zwykle powinien być tu break, ale świadomie go nie użyłem" i warning powinien zniknąć, nawet po przeniesieniu do innego workspace. Domyślnie taka funkcjonalność jest włączona, więc jeśli ktoś nie zmienia ustawień domyślnych, powinno to działać.

EDIT: nie mam w tej chwili dostępu do Eclipse, ale o ile dobrze pamiętam tę funkcjonalność można ustawić w:
Window -> Preferences -> C/C++ -> Code Analysis -> No break at the end of case



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 sie 2018, o 08:17 
Offline
Użytkownik

Dołączył(a): 28 maja 2016
Posty: 469
Lokalizacja: Katowice
Pomógł: 1

bardzo Wam dziękuje za pomoc. Wasze sugestie i porady są bezcenne dla mnie. :) Nie ma to jak forum Atnel :)

_________________
Nikt nie mówił,że będzie łatwo...



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 sie 2018, o 10:19 
Offline
Moderator
Avatar użytkownika

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

andrews napisał(a):
Ale przecież ja już wcześniej w tym wątku podałem rozwiązanie. Nie trzeba wyłączać tej opcji. Wystarczy w miejscu, gdzie sprawdzanie składni oczekuje instrukcji break; wstawić komentarz
//no break

Nie wiedziałem, że można to załatwić komentarzem, więc na szybko sprawdzam i niestety - dodanie samego komentarza nie pomaga. Oczywiście to o czym piszesz

Window -> Preferences -> C/C++ -> Code Analysis -> No break at the end of case

i ja też często o tej opcji wspominałem pomaga ;)

_________________
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: 1 sie 2018, o 12:03 
Offline
Użytkownik

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

mirekk36 napisał(a):
Nie wiedziałem, że można to załatwić komentarzem, więc na szybko sprawdzam i niestety - dodanie samego komentarza nie pomaga.

To dziwne, bo u mnie pomaga i jestem prawie pewny, że nie musiałem tego ręcznie włączać w ustawieniach, więc założyłem, że są to ustawienia domyślne. Wystarczy, że dopiszę komentarz '// no break' na końcu case (tak, jak pokazałem w poście powyżej) i "pchełka" ginie sama. No ale może to kwestia wersji Eclipse?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 sie 2018, o 12:07 
Offline
Moderator
Avatar użytkownika

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

andrews napisał(a):
Wystarczy, że dopiszę komentarz '// no break' na końcu case (tak, jak pokazałem w poście powyżej) i "pchełka" ginie sama. No ale może to kwestia wersji Eclipse?

Na razie sprawdziałem to tylko na Eclipse Mars ale sprawdzę jeszcze na innych - bo jak mówisz - byłaby to super opcja ;)

_________________
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: 1 sie 2018, o 12:15 
Offline
Użytkownik

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

Ale u mnie właśnie na MARS to działa.
Proponuję sprawdzić to:
https://stackoverflow.com/questions/169 ... ning-in-cd
Zdaje się, że tam są pewne obwarowania, np. komentarz musi być bezpośrednio przed następnym case, być może jeszcze inne, nie sprawdzałem, bo u mnie działało bez problemu.
Zdaje się, że można nawet samodzielnie zdefiniować komentarz, który to ostrzeżenie wyłączy.

EDIT:
mirekk36 napisał(a):
Window -> Preferences -> C/C++ -> Code Analysis -> No break at the end of case

i ja też często o tej opcji wspominałem pomaga

Tylko tu nie chodzi o odznaczenie "ptaszka":
This problem is enabled
żeby wyłączyć ostrzeżenie całkowicie (on ma zostać włączony), tylko tam można zdefiniować właśnie, jaki komentarz to ostrzeżenie lokalnie wyłączy.


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 sie 2018, o 06:32 
Offline
Użytkownik

Dołączył(a): 18 lis 2014
Posty: 33
Pomógł: 2

Witam, pokusiłem się o test, w eclipse Mars.2 na domyślnych ustawieniach działa to tak, jak opisuje kolega andrews.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 sie 2018, o 09:53 
Offline
Użytkownik

Dołączył(a): 28 maja 2016
Posty: 469
Lokalizacja: Katowice
Pomógł: 1

Mam jeszcze pytanie. Mam nadzieję,że nie pomieszam pojęć. Ale chcę zbudować dwa układy z uC. W pierwszym będzie atmega 8 z zewnętrznym kwarcem 11.0592, oraz z atnel wifi , oraz klawiszem ( na płytce stykowej). Drugim układem póki co będzie zestaw ATB również z alnel wifi, z uC atmegą 32 zewnętrznym kwarcem 11.0592, oraz z podłączoną jedną diodą led. I chcę z układu z klawiszem, po przez tylko połączeni RS232( wifi) włączać i wyłączać diodę klawiszem. Czy te dwa moduły wifi powinny być ustawione w trybie APSTA, czy może w AP, czy może powinienem jakoś inaczej je skonfigurować. Dodam,że od czterech dni oglądam poradniki o wifi atnel, ale jest tam sporo informacji jak na te kilkanaście godzin oglądania i nie wszystko potrafiłem zapamiętać z poradników. :)

_________________
Nikt nie mówił,że będzie łatwo...



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 sie 2018, o 10:09 
Offline
Moderator
Avatar użytkownika

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

Najpierw trzeba albo hmmm warto nabrać chociaż troszkę doświadczenia tak w ogóle ... z przynajmniej podstawowymi konfiguracjami routerów - szczególnie bezprzewodowych. Wtedy wiedziałbyś co to znaczy AP a co to znaczy STA. Tak bardzo ogólnie

AP - Acces Point (punkt dostępowy - do którego mogą się podłączać stacje robocze STA)

STA - STAtion - czyli stacja sieciowa - która jest klientem, który może się podłączać do AP

oczywiście moduły mają nawet taką fajną opcję jak

APSTA - Acces Point + STAtion - czyli mogą pracować zarówno jako stacja i punkt dostępowy, dzięki czemu np wbudowany STA może się łączyć do jakiegoś AP bezpośrednio albo przez jakiś router WIFi , natomiast do tego AP może się podłączyć JEDEN klient. Niestety ograniczeniem trybu APSTA jest to, że tylko jeden klient może się wtedy podłączyć do AP

można by jeszcze długo o tym pisać - no ale to są takie podstawy podstaw

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

jeśli chcesz więc mieć bezpośrednie połączenie między dwoma modułami no to już chyba na podstawie tego opisu wiesz jak je ustawić?

JEDEN w tryb tylko AP

DRUGI mógłby być ustawiony TYLKO w tryb STA - ale bezpieczniej dać go w tryb APSTA. I ten moduł ustawiasz w tryb CLIENT i podłączasz go do procka z którego chcesz wysyłać rozkazy. Taki rozkaz doleci do pierwszego AP i no i tam procek zapali diodę


Autor postu otrzymał pochwałę

_________________
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: 5 sie 2018, o 10:15 
Offline
Użytkownik

Dołączył(a): 28 maja 2016
Posty: 469
Lokalizacja: Katowice
Pomógł: 1

Dziękuję za bardzo konkretną informację (podpowiedź). Właśnie tego potwierdzenia mi brakowało od osoby doświadczonej w temacie. :):) Teraz będę wałczył dalej .

To jeszcze dopytam o jedną rzecz.

Z tego co mi Pan napisał to:
W puszce w ścianie montuję układ uC jako AP i on będzie otrzymywał polecenie np z mojego zrobionego pilota z jednym klawiszem. Układ w puszcze otrzymuje informację i włącza lub wyłącza przekaźnik. Pilot natomiast będzie w trybie APSTA. I to jest logiczne i zrozumiałe.
Ale co w sytuacji, gdy będę miał pilot (układ z atmegą i modułem wifi) z kilkoma klawiszami, którymi będę chciał włączać i wyłączać świetlenie w kilku pomieszczeniach. Wtedy pilot ustawiam jako APSTA, a w puszkach w pokojach wszystkie moduły z uC w tryb AP? Wydaje mi się,że powinno być w takim wypadku odwrotnie, czyli pilot jako AP, a puszki w ścianach jako STA ( bo to puszki w ścianie powinny się połączyć z centralnym modułem wysyłającym). czy dobrze to rozumuję?
Wiem,że mogę zamiast pilota użyć komórkę, ale ja chcę właśnie mieć pilot własnoręcznie zbudowany:)

Mam jeszcze odrębne pytanie.
W prostym programie (w ogóle nie związanym z tematem uarta) który włącza i wyłącza diodę mogę sobie włączanie diody uzależnić od wartości zmiennej, np jeśłi zmienna ma wartość 1, to zapala diodę, jeśli zmienna ma wartość 0 to ją gasi.
A czy w tym kodzie z poradnika #0173 WIFI232 - programowanie - Part 01
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

zamiast wysyłać po uarcie jakiś string , to czy mogę go gdzieś z ręki wpisać? tylko po to , aby sprawdzić,czy dioda mi się włączy i wyłączy, ponieważ chcę w tym kodzie uzależnić sobie włączanie diody od nadesłanego stringa. Czy w ciele funkji od odbioru stringa po uarcie mogę ręcznie gdzieś tego stringa wpisać? Pytam o takie działanie, ponieważ nie jestem jeszcze obyty ze zdarzeniami i colbakami. A chciałem się też dowiewdzieć w którym miejscu funkcji odbierającej ten string właśnie zostanie umieszczony.

_________________
Nikt nie mówił,że będzie łatwo...



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:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO