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



Teraz jest 19 lut 2025, o 09:38


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 22 ] 
Autor Wiadomość
PostNapisane: 14 gru 2015, o 19:45 
Offline
Użytkownik

Dołączył(a): 08 kwi 2013
Posty: 38
Pomógł: 2

Witam, potrzebuje linijki kodu która zapisze string z wagi "SI 0.02kg" tak bym mógł go odebrać samą wartość wagi.
Parsować stringi umiem, ale nie widzę w tym stringu żadnego tokenu.


posiadam bluebooka, greenbooka, strosuje bliblioteke MK_USART z greenbooka.

Proszę o pomoc
Dziękuje pozdrawiam.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 gru 2015, o 19:58 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 07 kwi 2013
Posty: 418
Lokalizacja: Rzeszów
Pomógł: 102

Można to zrobić iteracyjnie, ale nie ma sensu wyważać otwartych drzwi:

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

Teraz w zmiennej "Waga" znajduje się wartość 0.02.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 gru 2015, o 20:16 
Offline
Użytkownik

Dołączył(a): 08 kwi 2013
Posty: 38
Pomógł: 2

Chodzi o to to że ten string będzie przysyłany przez uart cały czas, a wartość będzie zmienną zmieniającą się. potrzebuje zapisać string przylatujący do "uart_buf" z biblioteki MK_USART.

^^ funkcja nie kompiluje się gdy wstawię "uart_buf".



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 gru 2015, o 20:34 
Offline
Moderator
Avatar użytkownika

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

Kazik323 napisał(a):
Witam, potrzebuje linijki kodu która zapisze string z wagi "SI 0.02kg" tak bym mógł go odebrać samą wartość wagi.
Parsować stringi umiem, ale nie widzę w tym stringu żadnego tokenu.

Jak to nie ma tokenu ? a SPACJA to co ?

porównaj poza tym kilka stringów, z różnymi wartościami bo jeśli tam np przy wartości SI12.02kg brak spacji no to widać wyraźnie, że podejść tu można na zasadzie wycięcia stringa ze środka od znaku nr X i zakończenia na znaku Y

_________________
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: 14 gru 2015, o 20:43 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 07 kwi 2013
Posty: 418
Lokalizacja: Rzeszów
Pomógł: 102

Nie znam tej biblioteki w związku z tym nie wiem czym jest "uart_buf" oraz jaki komunikat błędu otrzymujesz przy jakim kodzie.
Można stosować FSM (skończona maszyna stanów), ale jeżeli ta biblioteka ma zaimplementowany jakiś bufor, wtedy w zasadzie oczekujesz na znak 'k' lub też koniec łańcucha '\0' i dalej postępujesz tak jak napisałem w poprzednim poście. Jeżeli w "MK_USART" został użyty bufor pierścieniowy i brak jest funkcji zwracającej N ostatnich bajtów, musisz pamiętać o "zawijaniu się" tego bufora.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 gru 2015, o 20:51 
Offline
Użytkownik

Dołączył(a): 08 kwi 2013
Posty: 38
Pomógł: 2

próbowałem takiej funkcji

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

niestety funkcja zwraca mi zawsze zero

waga wysyłą mi takie stringi:

SI 8.02kg
SI 5.52kg
SI 15.02kg
SI 30.02kg



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 gru 2015, o 21:08 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 07 kwi 2013
Posty: 418
Lokalizacja: Rzeszów
Pomógł: 102

Funkcja "atoi" będzie zwracać 0 ponieważ jako parametr podajesz "S".

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



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 gru 2015, o 21:27 
Offline
Użytkownik

Dołączył(a): 08 kwi 2013
Posty: 38
Pomógł: 2

Panie ""atmel""
jako mogę przypisać zwróconą funkcje "atof" do zmiennej " odebranie"



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 gru 2015, o 21:34 
Offline
Moderator
Avatar użytkownika

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

Cytuj:
SI 8.02kg
SI 5.52kg
SI 15.02kg
SI 30.02kg

Panie no to masz ŚLICZNE DWA tokeny

- pierszy token to SPACJA
- drugi token to litera 'k'

i od razu z marszu masz wskaźnik dla stringa do atoi()

_________________
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: 14 gru 2015, o 21:41 
Offline
Użytkownik

Dołączył(a): 08 kwi 2013
Posty: 38
Pomógł: 2

teraz zauważyłem, że strona nie pokazuje ale mam


SI 8.02kg -- tu mamy 7 spacj
SI 5.52kg --tu mamy 7 spacj
SI 15.02kg -- tu jest juz tylko 6 spacj
SI 30.02kg -- tu jest juz tylko 6 spacj

tych dwóch spacji nie potrafię obsłużyć.

------------------------ [ Dodano po: 20 minutach ]

napisaem taką funkcje:

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


niestety nadal zwracane mam zero



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 gru 2015, o 22:28 
Offline
Moderator
Avatar użytkownika

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

Kazik323 napisał(a):
SI 8.02kg -- tu mamy 7 spacj
SI 5.52kg --tu mamy 7 spacj
SI 15.02kg -- tu jest juz tylko 6 spacj
SI 30.02kg -- tu jest juz tylko 6 spacj

Ja tak się zapytam nieśmiało - panie kolego czy ty wiesz w ogóle co oznacza słowo SPACJA ? Bo z tego co tu napisałeś wydaje mi się że nie wiesz - ale napisz to wtedy pewnie się wyjaśni bo przez to jakieś mega babole pewnie robisz

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

No ale nie - kod swojej funkcji napisałeś niby dobrze - uwzględniając spację jako token - więc nie rozumiem o co chodziło ci z tym rozpisaniem że tam widzisz po 7 czy 6 spacji

Jak ci ta funkcja nie działa to sobie spróbuj to debugować - czyli albo wyświetlać na LCD co ci wpada do tej funkcji do buf bo pewnie czasem coś innego

_________________
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: 14 gru 2015, o 22:53 
Offline
Użytkownik

Dołączył(a): 08 kwi 2013
Posty: 38
Pomógł: 2

Mam taki program napisany:

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




Ta funk zwraca zero chyba dlatego, że otrzymuje ratość xx.yy tak kropka mnie martwi, a ja zapisuje to jako "int" prosze o pomoc, jak za zmienna zdefiniować.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 gru 2015, o 23:04 
Offline
Moderator
Avatar użytkownika

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

Kazik323 napisał(a):
tak kropka mnie martwi, a ja zapisuje to jako "int"


No i dobrze, że cię martwi ;) no pewnie że to jeszcze trzeba rozbić na kolejne dwa tokeny - czyli kropkę potraktować jako token bo przecież funkcja atoi() to Ascii To Integer a nie ASCII TO FLOAT ;)

_________________
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: 14 gru 2015, o 23:14 
Offline
Użytkownik

Dołączył(a): 27 lis 2015
Posty: 36
Zbananowany użytkownik

Pomógł: 5

lewy górny róg ekranu. wiadomości prywatne.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 gru 2015, o 23:15 
Offline
Użytkownik

Dołączył(a): 08 kwi 2013
Posty: 38
Pomógł: 2

waga wysyła mi taki string

Obrazek

------------------------ [ Dodano po: 28 minutach ]

panowie połowiczny sukces, ta funkcja do kropki mi wyświetla dobrze zmienną. niestety jeszcze po przecinku caly czas jest zero :

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



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 gru 2015, o 08:39 
Offline
Moderator
Avatar użytkownika

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

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


sprawdź - bo zobacz że u siebie próbujesz dwa razy łapać spację

_________________
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 gru 2015, o 15:40 
Offline
Użytkownik

Dołączył(a): 08 kwi 2013
Posty: 38
Pomógł: 2

Witam, sam zrobiłem identyczna funkcje, zanim pan to opublikował.

Zastanawia mnie jedna rzecz gdy w pętli niema żadnych opóźnień, to zmienna raz posiada wartość, a raz jest zerem.
x.yy
0.0
x.yy
0.0
Gdy uruchomiłem funkcje w docelowym programie (pętla trwa ok 2s) to wszystko ładnie działa.


Waszym zdanie co mogło być tego powodem ? ?

Dziękuje za pomoc,
pozdrawiam.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 gru 2015, o 16:16 
Offline
Moderator
Avatar użytkownika

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

Kazik323 napisał(a):
Gdy uruchomiłem funkcje w docelowym programie (pętla trwa ok 2s) to wszystko ładnie działa.

Już któryś raz na forum słyszę tak przedziwne, żeby nie powiedzieć straszne pomysły - no panowie panowie .... pomyślcie chwilę co to znaczy funkcja nieblokująca i zdarzenie. I jak macie to opóźniać to w zasadzie bez sensu w ogóle korzystać z takich mechanizmów. Napisz sobie wtedy program na delayach

Wracając do tego że co jakiś czas jest zero zamiast wartości - to pisałem już wyżej, co za problem wyświetlać sobie na LCD co ci tam przylatuje i wprowadzić później warunki które to wyeliminują .... Często takie urządzenia wysyłają np dwa znaki ENTER i jak myślisz co się wtedy dzieje ?

dostajesz do funkcji parsującej pusty string! i jak myślisz na co jest to przerabiane przez atoi() ?

_________________
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 gru 2015, o 17:05 
Offline
Użytkownik

Dołączył(a): 08 kwi 2013
Posty: 38
Pomógł: 2

mirekk36 napisał(a):
Kazik323 napisał(a):
Gdy uruchomiłem funkcje w docelowym programie (pętla trwa ok 2s) to wszystko ładnie działa.

Już któryś raz na forum słyszę tak przedziwne, żeby nie powiedzieć straszne pomysły - no panowie panowie .... pomyślcie chwilę co to znaczy funkcja nieblokująca i zdarzenie. I jak macie to opóźniać to w zasadzie bez sensu w ogóle korzystać z takich mechanizmów. Napisz sobie wtedy program na delayach


Panie Mirku, dlaczego zakłada pan że mam w swoim programie pełno delay?
W swoim programie nie mam mam żadnego dalaya z wyjątkiem tego w bibliotece 1 wire.
Dlaczego pan uważa że nie wiem co to jest funkcja nie blokująca ?
Dlaczego pan uważa że nie wiem co mi nadajnik wysyła?

Nadajnik wysyła mi znaki CR LF.

Panowie pod jaką kombinacją klawiszy w programie putty znajduje się znak "LF"?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 gru 2015, o 17:26 
Offline
Moderator
Avatar użytkownika

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

Kazik323 napisał(a):
Panie Mirku, dlaczego zakłada pan że mam w swoim programie pełno delay?

Nie wiem czy używasz delay ale jeśli sam piszesz, że:
Kazik323 napisał(a):
Gdy uruchomiłem funkcje w docelowym programie (pętla trwa ok 2s)

to nie ważne czy używasz delay czy nie to, że tak powiem "w diabły" idzie idea prawidłowego i poprawnego działania parsowania danych poprzez obsługę zdarzeń.

Kazik323 napisał(a):
Dlaczego pan uważa że nie wiem co to jest funkcja nie blokująca ?

Oczywiście mogę źle zakładać - ale jak piszesz, że uruchomiłeś funkcję parsującą co 2 sekundy to do tego się to sprowadza

Kazik323 napisał(a):
Dlaczego pan uważa że nie wiem co mi nadajnik wysyła?

Powiedz mi oczekujesz pomocy i podpowiedzi czy chcesz mi coś zarzucać albo mówić mi że wszystko robisz dobrze - tylko że ci nie działa. No skoro nie działa to podpowiadam ci jak umiem na co możesz nie zwracać uwagi. tym bardziej, że wcale o tym nie napisałeś i nie odniosłeś się do tego - a już drugi raz napisałem o sprawdzaniu tego co dolatuje do bufora. Więc trzeba umieć sobie to debugować i po to się wypowiadam - a nie po to żebym miał komuś coś zarzucać że wie albo nie wie, że ma jakiś tam poziom wiedzy czy nie ma go .... no toż to chore troszkę podejście. Piszę i pomagam - ale jeśli źle to ok - nie będę pisał.

Kazik323 napisał(a):
Nadajnik wysyła mi znaki CR LF.

LF masz ładnie ignorowany w biblitece z GB o ile tej biblioteki używasz - a ty nadal ani się nie odniosłeś do tego że urządzenie może wysłać podwójne CRLF i że to żaden problem w obsłudze - ale ok .... wyłączam się.

Może ktoś inny lepiej ode mnie pomoż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: 16 gru 2015, o 17:49 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 15 wrz 2013
Posty: 74
Lokalizacja: Sierakowice/Gdańsk
Pomógł: 9

Kazik323 napisał(a):
Panowie pod jaką kombinacją klawiszy w programie putty znajduje się znak "LF"?
Możesz wpisać poprzez wciśnięcie i przytrzymanie prawego altu i wpisaniu nr znaku.
CR - 013
LF - 010



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 gru 2015, o 19:40 
Offline
Użytkownik

Dołączył(a): 08 kwi 2013
Posty: 38
Pomógł: 2

Źle sie wyraziłem, funkcja parsująca działa sobie niezależnie sama wywołuje sie gdy coś wpadnie do bufora, tylko moja funkcja odczytuje zmienne odebranie i odebranie2 co około 2s za sprawą timera.


Mój problem został rozwiązany, dziękuje bardzo za pomoc.
pozdrawiam



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

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