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



Teraz jest 28 mar 2024, o 17:40


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 78 ]  Przejdź na stronę Poprzednia strona  1, 2, 3
Autor Wiadomość
PostNapisane: 23 kwi 2018, o 21:33 
Offline
Moderator
Avatar użytkownika

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

Sorki ale troszkę ...hmmm no łapię się za głowę ... bo o ile mógłbym zrozumieć problem ze zrozumieniem działania mechanizmu komend AT czy ich parsowaniem, a piszesz że wiesz co i jak .... To pytanie jak wysłać 3 temperatury ? Proszę - nawet 10 temperatur, można nawet 100 tak wysłać albo i 2 tysiące

AT+TEMP=23.7,11.2,-4.5,7.3,28.5,33.11,9.8,21.9,24.0,1.2

_________________
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 kwi 2018, o 09:03 
Offline
Użytkownik

Dołączył(a): 03 gru 2016
Posty: 56
Lokalizacja: Mszczonów
Pomógł: 0

Właśnie chciałem żeby tak wyglądała komenda AT, która sobie potem sparsuje. I to jest dla mnie zrozumiałe. Nie wiem natomiast w jaki sposób wysyłać tą komendę w czasie wykonywania się pętli głównej programu.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 kwi 2018, o 10:05 
Offline
Moderator
Avatar użytkownika

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

jeśli chodzi o mnie to pokazuję to w tak wielu poradnikach wideo przy okazji różnych tematów ale szczególnie WIFI gdzie także jest przecież komunikacja RS232 ale również przy UDP

_________________
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 kwi 2018, o 10:08 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 cze 2014
Posty: 855
Lokalizacja: pod Warszawą
Pomógł: 58

padre159 napisał(a):
Właśnie chciałem żeby tak wyglądała komenda AT, która sobie potem sparsuje. I to jest dla mnie zrozumiałe. Nie wiem natomiast w jaki sposób wysyłać tą komendę w czasie wykonywania się pętli głównej programu.


Powołaj sobie jakiś timer programowy który co określony przez Ciebie czas wyśle to co chcesz np.:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

_________________
Pomóżcie mi stanąć na nogi



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 kwi 2018, o 18:02 
Offline
Użytkownik

Dołączył(a): 03 gru 2016
Posty: 56
Lokalizacja: Mszczonów
Pomógł: 0

mczarny napisał(a):

Powołaj sobie jakiś timer programowy który co określony przez Ciebie czas wyśle to co chcesz np.:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


O właśnie o to mi chodzi. Kurczę rzeczywiście już gdzieś to widziałem.
Zastanawiam się czy trzeba robić ten timer programowy bo pętla programu i tak wykonuje się w czasie około 5 sekund. Jest to program odczytu temp z DS18B20 od Pana Mirka. Tam jest zrobiony już timer systemowy. Czy muszę robić osobny bezpośrednio do wysyłania komend?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 kwi 2018, o 21:45 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 cze 2014
Posty: 855
Lokalizacja: pod Warszawą
Pomógł: 58

padre159 napisał(a):
O właśnie o to mi chodzi. Kurczę rzeczywiście już gdzieś to widziałem.
Zastanawiam się czy trzeba robić ten timer programowy bo pętla programu i tak wykonuje się w czasie około 5 sekund. Jest to program odczytu temp z DS18B20 od Pana Mirka. Tam jest zrobiony już timer systemowy. Czy muszę robić osobny bezpośrednio do wysyłania komend?


pewnie, ze nie musisz. Z tego co pamiętam to w programie do 1wire timer jest ustawiony na 800ms i wykorzystana jest dodatkowa zmienna " licznik " gdzie jak licznik==1 to rozkaz pomiaru, jak licznik==2 to odczyt. Teraz robisz jak licznik==3 to wysyłasz odczyt przez UART i zerujesz licznik. Cykl się powtarza. Wszystko w temacie.....

_________________
Pomóżcie mi stanąć na nogi



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 kwi 2018, o 08:31 
Offline
Użytkownik

Dołączył(a): 03 gru 2016
Posty: 56
Lokalizacja: Mszczonów
Pomógł: 0

Właśnie tak to sobie wyobrażałem.
Jeszcze jedno pytanie.
Czy muszę budować biblioteki do obsługi tej jednej komendy.
Czy po prostu dopisać tą funkcję
sprintf("AT+TEMP=")T1,T2,T3;
i to zadziała?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 kwi 2018, o 10:32 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 cze 2014
Posty: 855
Lokalizacja: pod Warszawą
Pomógł: 58

padre159 napisał(a):
Właśnie tak to sobie wyobrażałem.
Jeszcze jedno pytanie.
Czy muszę budować biblioteki do obsługi tej jednej komendy.
Czy po prostu dopisać tą funkcję
sprintf("AT+TEMP=")T1,T2,T3;
i to zadziała?


Ale o jakiej bibliotece teraz mówisz? Rozumiem, że UART masz odpalony i komunikacja działa więc dla funkcji sprint powołujesz bufor

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

wielkość bufora oczywiście zależna od tego ile wartości chcesz przesłać
i teraz dalej
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

po stronie odbiorczej parsujesz sobie dane i po zawodach

_________________
Pomóżcie mi stanąć na nogi



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 kwi 2018, o 17:12 
Offline
Użytkownik

Dołączył(a): 03 gru 2016
Posty: 56
Lokalizacja: Mszczonów
Pomógł: 0

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


Takie coś skleciłem w swoim kodzie.
Pokazuje mi worninga "implicit declaration of function `sprintf` [-wimplicit-function-declaration]
Jak czytam na forach to jest to problem że funkcja nie jest zadeklarowana nigdzie.
Mam bibliotekę MK_USART
I tak po prostu w main.c mam sobie coś dopisać żeby ją zadeklarować?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 kwi 2018, o 19:39 
Offline
Użytkownik

Dołączył(a): 25 lip 2013
Posty: 2561
Pomógł: 126

A nie brak jakiegos #include?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 kwi 2018, o 19:59 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 cze 2014
Posty: 855
Lokalizacja: pod Warszawą
Pomógł: 58

padre159 napisał(a):
Mam bibliotekę MK_USART
I tak po prostu w main.c mam sobie coś dopisać żeby ją zadeklarować?


Po pierwsze masz to tak "zaincludować". W stdoi.h jest funkcja sprintf a w MK_USART funkcja uart_puts
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Po drugie to pokazuj co tam sam namodziłeś bo tak to trzeba zgadywać a cierpliwość się kończy.

_________________
Pomóżcie mi stanąć na nogi



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 26 kwi 2018, o 15:17 
Offline
Użytkownik

Dołączył(a): 03 gru 2016
Posty: 56
Lokalizacja: Mszczonów
Pomógł: 0

MK_USART miałem załączoną "zaincludowaną"
Nie miałem tej stdio.h nie wiedziałem o niej. Zaraz sobie poczytam o niej żeby uzupełnić wiedzę.
No to biorę się za parsowanie w B4A :)
Dziękuję za pomoc z tym problemem
Pewnie to jeszcze nie koniec moich przygód z tym tematem



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 maja 2018, o 16:38 
Offline
Użytkownik

Dołączył(a): 03 gru 2016
Posty: 56
Lokalizacja: Mszczonów
Pomógł: 0

Jest prawie pewne co pisze kolega wyżej. Przyznaję się bez bicia że jestem żółtodziobem w tym ogromnym świecie programowania.
ALE!
Ten świat bardzo mi sie podoba, szczególnie radość kiedy elektronika robi to co jej napisałeś :D
I dlatego wracam z kolejnym problemem bo nie mogę zaznać radości :P
Wysyłam i odbieram temperaturę oraz komunikaty o granicznych temperaturach. Wszystko sobie parsuję i wyświetlam w osobnych okienkach. Temperatura wysyłana jest co 4sekundy.
I teraz problem mam z komunikatami.
Kiedy się pojawią to ładnie się wyświetlają i nadpisują w dolnej linii a wcześniejsze uciekają do góry. Tak jak w poradnikach.
Jednak kiedy przestaną nadlatywać to pojawia się pusta linia która wypycha komunikaty do góry i uciekają. Jak zapobiec temu żeby nie pojawiała się pusta linia kiedy brak komunikatu.

Na screenie widać po prawo kod z B4A. 6 argument listy to właśnie komunikaty.
Myślałem żeby wstawić
If lList(6)>1 then
Ale to nie zadziałało

Po lewo kod C po wysłaniu temperatury wysyłany jest przecinek, dzięki któremu mogę wyodrębnić komunikaty w B4A i wyświetlić w innym polu.

Obrazek



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 maja 2018, o 17:05 
Offline
Użytkownik

Dołączył(a): 03 gru 2016
Posty: 56
Lokalizacja: Mszczonów
Pomógł: 0

no własnie jak zrealizować tego if-a?
Zastanawiam się nad funkcją "if not" albo "else if"

Bo widzę to tak:

llist(6) = komunikat // włożenie napisu do zmiennej zadeklarowanej wcześniej jako string

If komunikat = " " & "0" then // jeśli spacja lub 0 to

i tutaj jak napisać żeby nic nie wyświetlało?

else // jeśli warunek 1 niespełniony to wyświetl

wyświetlanie komunikatu w danym polu.

I tutaj właśnie nie wiem jak to zrealizować



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

Dołączył(a): 03 gru 2016
Posty: 56
Lokalizacja: Mszczonów
Pomógł: 0

z tym już sobie poradziłem :D kombinacji nie było końca ale efekt jest.
Zrobiłem już też wysyłanie komendy AT+RST po przyciśnięciu klawisza w aplikacji.
Jutro lecimy z odczytaniem komendy na procku zdalnym resecie procesora. :D



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 maja 2018, o 18:10 
Offline
Użytkownik

Dołączył(a): 03 gru 2016
Posty: 56
Lokalizacja: Mszczonów
Pomógł: 0

No i właśnie...
Mam załączoną bibliotekę MK_USART

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


Problem mam z tym że nic nie dolatuje do bufora z zewnątrz.
Szybko odpaliłem UDP Tester i sprawdziłem połączenie WIFI. Z aplikacji dolatuje do procesora komenda AT+RST i wyświetlam ją na LCD.
Kiedy wgrywam ten kod i wyświetlam bufor nic sie nie pojawia.
Co może być przyczyną?

------------------------ [ Dodano po: 19 minutach ]

już wiem :D
przestawiłem
USART_Init( __UBRR );
register_uart_str_rx_event_callback( odbierz_dane );
na sam koniec int main(void)

I w funkcji zmieniłem na "str" zamiast "buf"
Nie wiem które z tych rzeczy były przyczyna ale reset działa :D



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 paź 2018, o 20:25 
Offline
Użytkownik

Dołączył(a): 03 gru 2016
Posty: 56
Lokalizacja: Mszczonów
Pomógł: 0

No i stało się :D
Udało mi sie dokończyć projekt i obronić tytuł inyżniera!
Dziękuję Panie Mirku za Pana cykl poradników, za książki, za forum, za blog i serce wkładane w to co Pan robi. Niepowtarzalny styl nauczania w poradnikach. To nadmierne gadulstwo :D
Dzięki temu wszystkiemu od zera nauczyłem się programować mikrokontrolery i peryferia w języku C. Napisałem aplikację na ANDROIDA. I obroniłem tytuł. Jeszcze 5 lat temu nie uwierzyłbym, gdyby ktoś mi powiedział że z palcem w nosie napiszę aplikację na smartfona i zaprogramuję taki układ.
DZIĘKUJĘ!
Mam nadzieję że i moje wpisy i opis problemów też komuś pomogły.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 paź 2018, o 22:15 
Offline
Użytkownik

Dołączył(a): 25 lip 2013
Posty: 2561
Pomógł: 126

Super! Gratuluję!



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: 78 ]  Przejdź na stronę Poprzednia strona  1, 2, 3

Strefa czasowa: UTC + 1


Kto przegląda forum

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