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



Teraz jest 11 lut 2025, o 16:34


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 4 ] 
Autor Wiadomość
PostNapisane: 26 lut 2018, o 21:22 
Offline
Użytkownik

Dołączył(a): 08 lut 2016
Posty: 96
Pomógł: 2

Hej

Mam taki problem odbieram sobie string-a który ma postać:
T:-14.80*C|H95%RH

Chciałbym temperaturę mieć w zmiennej typu float. gdyż chciałbym dokonywać jej porównania z innymi zmiennymi.

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


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


Kiedy próbuję wyświetlić taką zmienną otrzymuję pytajnik na ekranie czy może mi ktoś podpowiedzieć gdzie robię błąd.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 26 lut 2018, o 21:34 
Offline
Moderator
Avatar użytkownika

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

StaryAnoda napisał(a):
Chciałbym temperaturę mieć w zmiennej typu float. gdyż chciałbym dokonywać jej porównania z innymi zmiennymi.

Rozumiem, że bez float to się nie da? ... hmmmm no masakra Panie, istna masakra .... Qurczę to w jaki sposób robią to milardy ludzi na 8-bitowcach hmmm ? zastanawiałeś się Pan ?

jak sądzisz jeśli masz np dwie takie temperatury

14.87 C
17.24 C

to jeśli pomnożysz je x100 ? ... hmmm mówi ci to coś ? dokładniej mówiąc

(14*100)+87 = 1487
(17*100)+24 = 1724

to nie da się jednak porównać tych dwóch liczb bez floatów a na zwykłych "int"ach ? gdzie będą działać również porównania dla ujemnych ? I zrobi się to w 0,0000001 sekundy

_________________
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: 27 lut 2018, o 15:40 
Offline
Użytkownik

Dołączył(a): 08 lut 2016
Posty: 96
Pomógł: 2

To jest pisane na STM32, w tym modelu mam sprzętowe wsparcie dla liczb zmiennoprzecinkowych. Ale dziękuję za pomoc zrobiłem to tak jak na Twoim przykładzie.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 27 lut 2018, o 16:53 
Offline
Moderator
Avatar użytkownika

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

StaryAnoda napisał(a):
To jest pisane na STM32, w tym modelu mam sprzętowe wsparcie dla liczb zmiennoprzecinkowych.

To jest właśnie moment gdzie mnóstwo ludzi myśli, że przesiadając się na 32-bitowce - to one właśnie zastąpią część problemów programistycznych, że one same coś zrobią .... a tu jak widać skucha - bo język C zarówno na 8- jaki 16- czy 32- bitowce jest taki sam ;)

To, że ja staram się uczyć ludzi programowania w C na 8-bitowcach nie wynika z tego, jak zarzuca mi mnóstwo malkontentów, że kocham i znam tylko biedne AVR'y ....

Nie na darmo też pokazywałem sporo poradników z użyciem takich maluchów jak ATtiny10 w których brakuje mnóstwa wielorakich zasobów ... pokazując jakie można stosować ciekawe techniki programistyczne ... ale niewiele osób to docenia - szkoda ;)

Ja tu nie mówię teraz broń Boże o Tobie - tak tylko ogólnie pozwalam sobie na pewne refleksje bo temat twojego problemu się niejako zazębia

Otóż ucząc się technik programowania na tych "biednych" 8-bitowcach - gdzie nierzadko trzeba się nieźle nagimnastykować aby obsłużyć bardziej skomplikowane zagadnienia jak np Ethernet, karty pamięci, WiFi, USB ... itp itd to później KAŻDY - ale KAŻDY kto sobie nieźle to wszystko przećwiczył na 8-bitowcu - z oddechem pełnym radości przekonuje się, że przejście na 32-bitowca sprowadza się li tylko do poznania jego architektury i konfiguracji - zaś techniki programowania - pozostają ogólnie rzecz biorąc te same

StaryAnoda napisał(a):
To jest pisane na STM32

Jest gdzieś o tym mowa w twoim pierwszym poście ? (warto więc nawet w tym dziale - porządnie opisywać swój problem) ... chociaż jak sam widzisz to okazało się mało ważne

StaryAnoda napisał(a):
w tym modelu mam sprzętowe wsparcie dla liczb zmiennoprzecinkowych.

dlatego, że fakt posługiwania się 32-bitowcem nie oznacza, że programista może liczyć na jakąś iluzoryuczną łatwiznę serwowaną przez 32-bitowca ;) ... Oczywiście, że na STM przy jego zasobach spokojnie można sobie poradzić również z użyciem floatów ale widać, że kolega z czystej ciekawości nie przećwiczył wcześniej tego na 8-bitowcach - a zasada ich wykorzystania w C jest - znowu - TAKA SAMA ;)

żeby nie być gołosłownym:
http://mirekk36.blogspot.com/2013/04/ec ... float.html

_________________
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: 4 ] 

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