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



Teraz jest 31 mar 2026, o 09:17


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 8 ] 
Autor Wiadomość
PostNapisane: 5 wrz 2018, o 21:22 
Offline
Nowy

Dołączył(a): 10 wrz 2016
Posty: 22
Pomógł: 1

Witam serdecznie. Mam problem z funkcją strtok(). Parsuje sobię dane z uarta i po otrzymaniu stringa funkcja mi go niszczy. Wiem że strtok w miejsce separatora wstawia zero ale nie w tym problem. Kawałek funkcji parsującej:

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


Nie zjedzcie mnie proszę za esp :) ale nie z nim problem tylko w sumie z samym parsowaniem. Dostaje z modułu takiego stringa z serwera ntp, no i parsowanie działa do drugiego wywołania strtok. Po wyrzuceniu weekday na uart w terminalu dostaję "Tue" a gdy wyrzucam month to dostaję np ".8888". String nadlatuje w całości na pewno i teraz nie wiem gdzie poległem... Jakby ktoś mógł mnie naprowadzić byłbym bardzo wdzięczny.

Pozdrawiam.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 wrz 2018, o 21:31 
Offline
Użytkownik
Avatar użytkownika

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

Możesz podejrzeć w terminalu jak wygląda nadlatujący string? Na pewno tokeny są oddzielone spacją?
Moja funkcja parsująca dane temperatury
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

porównaj
u mnie tokeny są oddzielone przecinkiem

_________________
Pomóżcie mi stanąć na nogi



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 wrz 2018, o 21:39 
Offline
Nowy

Dołączył(a): 10 wrz 2016
Posty: 22
Pomógł: 1

Tak, wysyła w hexie 20 czyli spację.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 wrz 2018, o 21:44 
Offline
Użytkownik
Avatar użytkownika

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

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

czyli tu chyba powinno być
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: 5 wrz 2018, o 21:58 
Offline
Nowy

Dołączył(a): 10 wrz 2016
Posty: 22
Pomógł: 1

Funkcja strncasecmp porównuje pierwszych n bajtów obu stringów i w zależności od wyniku zwraca rezultat. Tak czy siak, nic to nie zmieniło.

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


A odpowiedz w terminalu to:
AT+CIPSNTPTIME?

+CIPSNTPTIME:Wed Sep 05 22:53:47 2018
Wed

Jest wysłane zapytanie do modułu, nadlatuje string w całości i pierwsze dwa strtok działają, jak zamiast weekday na terminal wyrzucę month to dostaję odpowiedz ".8888" a w zasadzie w hexie 01 B8 B8 B8 B8.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 wrz 2018, o 22:14 
Offline
Użytkownik
Avatar użytkownika

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

a nie powinieneś tego hex-a zamienić na dziesiętne?
Miesiąc jest przesyłany liczbą czy nazwą np:"maj"?

_________________
Pomóżcie mi stanąć na nogi



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 wrz 2018, o 22:20 
Offline
Nowy

Dołączył(a): 10 wrz 2016
Posty: 22
Pomógł: 1

Problem rozwiązany. Babol ze zmiennymi.

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


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


Kilka gwiazdek za mało a ile nerwów straconych. Dzięki za pomoc i zainteresowanie!



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 wrz 2018, o 22:22 
Offline
Użytkownik
Avatar użytkownika

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

No widzisz dlatego dałem Ci przykład swojej funkcji gdzie do wskaźnika były zapisywane poszczególne tokeny...

_________________
Pomóżcie mi stanąć na nogi



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 1 gość


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