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

KURS HOME ASSISTANT

Chcesz zautomatyzować swój dom bez skomplikowanego kodowania?
Zastanawiasz się nad wyborem sprzętu, oprogramowania i aplikacji?
Od czego zacząć przygodę z HA? Co będzie najlepsze na start?

Nasz kurs Home Assistant nauczy Cię krok po kroku, jak łatwo zautomatyzować swój dom i oszczędzić na rachunkach za prąd i ogrzewanie. Bez chmur, bez zbędnych abonamentów. Twoja przygoda z Home Assistant zaczyna się tutaj!

↓↓↓

    Szanujemy Twoją prywatność. Możesz wypisać się w dowolnym momencie.




    Teraz jest 7 sie 2025, o 22:36


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 7 ] 
    Autor Wiadomość
    PostNapisane: 21 mar 2015, o 22:45 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 23 wrz 2013
    Posty: 58
    Zbananowany użytkownik

    Pomógł: 10

    Odbieram dane przez USART w postaci binarnej i zapisuję do tablicy char[]. Chciałbym wyświetlić tą tablicę na LCD w postaci szesnastkowej np. jak odbiorę napis ATNEL to potrzebuję wyświetlić wartość znaków ASCII tj. 41 54 4e 45 4c.
    Drugie pytanie dotyczy odbierania danych binarnych, gdzie czasem występują też bajty o wartości 0x00 i nie wiem w tym momencie jak się zachowuje funkcja:

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

    Czy jest ona przystosowana tylko do odbierania stringów zakończonych zerem?



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 21 mar 2015, o 22:47 
    Offline
    Moderator
    Avatar użytkownika

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

    To jest komunikacja ASCII a nie binarna - rozumie kolega ?

    A odnośnie konwersji liczb to poczyta sobie kolega w BB ale też w PDF'ie WinAVR o funkcji ITOA i argumencie "radix"


    Autor postu otrzymał pochwałę

    _________________
    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: 21 mar 2015, o 22:52 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 23 wrz 2013
    Posty: 58
    Zbananowany użytkownik

    Pomógł: 10

    Być może niefortunnie się wyraziłem Panie Mirku. Transmisja jaką odbieram to dane z protokołu Modbus RTU, więc jak najbardziej transmisja binarna. Przykład ze stringiem ATNEL podałem jedynie do zilustrowania zagadnienia być może błędnie. Chodzi o to że znak char chcę wyrzucić na LCD w postaci szesnastkowej jego kodu.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 21 mar 2015, o 22:55 
    Offline
    Moderator
    Avatar użytkownika

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

    A no to rzeczywiście piszesz o jednym a myślisz o drugim. Ja odniosłem się do komunikacji z BB, tymczasem ty mówisz o Modbus i rozumiem że RTU czyli binarnym więc zapomnij o próbie odbierania stringów ASCII. Ja nie wiem też czy ty piszesz sam obsługę Modbusa czy korzystasz z jakichś bibliotek ... bo tego też nie napisałeś. Jeśli z gotowych bibliotek to tam jest wszystko ładnie przygotowane zwykle do obsługi transmisji binarnej ... Jeśli sam ... no to panie trzeba to sobie dobrze oprogramować - w tym timeouty.

    Co się zaś tyczy konwersji liczb na Hex to tak jak pisałem wyżej itoa()


    Autor postu otrzymał pochwałę

    _________________
    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: 21 mar 2015, o 23:36 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 23 wrz 2013
    Posty: 58
    Zbananowany użytkownik

    Pomógł: 10

    Użyłem funkcji itoa i wszystko ładnie dopóki nie nadlatuje bajt z zerami. Jak odbieram 0x06 0x06 0x06 0x06 to wyświetla mi tylko 6 i nic więcej



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 21 mar 2015, o 23:46 
    Offline
    Użytkownik
    Avatar użytkownika

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

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


    Korzystając z "itoa" można dodać warunek sprawdzający czy nie ma bardziej znaczącego znaku, jeśli tak to dopisz '0'.


    Autor postu otrzymał pochwałę


    Ostatnio edytowano 21 mar 2015, o 23:47 przez atmel, łącznie edytowano 1 raz

    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 22 mar 2015, o 00:04 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 23 wrz 2013
    Posty: 58
    Zbananowany użytkownik

    Pomógł: 10

    Próbowałem z tą funkcją "sprintf" więc widocznie musiałem coś pomieszać.

    Dzięki wielkie za pomoc



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

    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