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



Teraz jest 24 sty 2026, o 10:51


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 10 ] 
Autor Wiadomość
PostNapisane: 16 paź 2016, o 18:33 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 19 lis 2015
Posty: 219
Pomógł: 20

Cześć.

Na podstawie rozdziału z BB - protokół UDP próbuję zrobić funkcję do parsowania danych z uart ale zatrzymałem się.

W książce jest taki kod:

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


nie rozumie tej części jak funkcja atoi zamienia ciąg znaków na wartość (0,1,2).

dokładnie tego - jak nadleci łańcuch "set_led" na który wskazuje wskaźnik wsk, to funkcja atoi zamienia to na 0 - i tu chyba właśnie źle to rozumie.

proszę o pomoc w wyjaśnieniu.

pozdrawiam



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 paź 2016, o 20:36 
Offline
Użytkownik

Dołączył(a): 24 sty 2012
Posty: 1469
Pomógł: 56

funkcja atoi zamienia znak "0" lub znak "1" lub znak "2" na cyfry 0, 1 lub 2
Transmisję masz ascii więc nie wysyłasz cyfr tylko kody tych znaków w ascii.
Po stronie odbiorczej musisz sobie z powrotem zamienić na liczby żeby zadziałała Ci
konstrukcja case.

_________________
Jestem początkujący i moje porady mogą być błędne



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 paź 2016, o 20:54 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 19 lis 2015
Posty: 219
Pomógł: 20

Dokladnie.
Jak wysle znaki 0 lub 2 albo 3 to ladnie dziala. Ale nie rozumie tego jak Mirek pisze w ksiazce ze wysyla komende np set_lcd i ja parsuje. chyba ze w transmisji udp jest inaczej niz w uart



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 paź 2016, o 21:07 
Offline
Użytkownik

Dołączył(a): 24 sty 2012
Posty: 1469
Pomógł: 56

Jest dokładnie tak samo. Tylko medium jest inne.
A komenda... cóż to pewnie tylko hasło pod którym kryją się konkretne działania
(czytaj kody do wykonania)

_________________
Jestem początkujący i moje porady mogą być błędne



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 paź 2016, o 21:34 
Offline
Moderator
Avatar użytkownika

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

jez2000 napisał(a):
Ale nie rozumie tego jak Mirek pisze w ksiazce ze wysyla komende np set_lcd


Jak to nie rozumiesz, a to?

enum commands { set_led = 0, get_led, set_lcd };

to co to jest ? (str.473) ... i na dodatek opisane dobrze - dlaczego warto stosować typ wyliczeniowy

_________________
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: 17 paź 2016, o 10:13 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 19 lis 2015
Posty: 219
Pomógł: 20

Jest napisane że wykorzystano typ enum aby nadać kody liczbowe komendom (czyli 0, 1, 2), i że to kody będą wysyłane zamiast nazw.

czyli zamiast takiego lancucha : set_led ^ 1 ^ 0 wysyłane jest 0 ^ 1 ^ 0 ??



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 paź 2016, o 14:13 
Offline
Użytkownik

Dołączył(a): 24 sty 2012
Posty: 1469
Pomógł: 56

oczywiście bo...
set_lcd np jest tylko dla lepszej czytelności programu. Czyli nie dla maszyny, nie dla kompilatora
tylko dla wygody >programisty<
Po prostu tam gdzie jest ta nazwa tam w kody wynikowy jest wstawiony numerek.


Autor postu otrzymał pochwałę

_________________
Jestem początkujący i moje porady mogą być błędne



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 paź 2016, o 14:37 
Offline
Moderator
Avatar użytkownika

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

jez2000 napisał(a):
czyli zamiast takiego lancucha : set_led ^ 1 ^ 0 wysyłane jest 0 ^ 1 ^ 0 ??

Odpowiem pytaniem na pytanie - a wiesz co to jest typ wyliczeniowy enum ? i jak się z niego korzysta ? ... bo tu właśnie masz doskonały przykład kiedy i w jaki sposób można z niego korzystać ;) ... wyżej kolega MirkoT doprecyzował i odpowiedział szerzej na twoje pytanie.

_________________
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: 17 paź 2016, o 18:34 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 19 lis 2015
Posty: 219
Pomógł: 20

OK.
Już wszystko wyjasnione, komendą musi być liczba, a nie znaki abcdef.... -



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 paź 2016, o 20:21 
Offline
Moderator
Avatar użytkownika

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

jez2000 napisał(a):
komendą musi być liczba,

A kto powiedział, że tak MUSI być? Na pewno nie ja .... akurat w tym przypadku pokazałem, że po prostu można i tak sobie radzić, uzyskujemy też wtedy mniejszą nadmiarowość wysyłanych danych ... ale stosować można różne techniki - równie dobrze można wysyłać całe stringi ASCII czyli komendę składającą się ze znaków

"set_lcd"

w czym problem ? Wszystko zależy od potrzeb itp itd

a tu PRZEDE WSZYSTKIM chciałem pokazać technikę programowania z takim praktycznym wyjaśnieniem i zastosowaniem typu wyliczeniowego .... na bazie konkretnego przykładu - bo wtedy lepiej to można zrozumieć. Zamiast tylko na sucho opowiedzieć o tym co to jest typ wyliczeniowy.

_________________
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  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 10 ] 

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