1991piotrek Sierpień 31, 2020 Udostępnij Sierpień 31, 2020 (edytowany) Witam, mam pytanie, jak wysłać/odbierać zera bitowe, np wartość 0x00 ? np. dla : Serial.print(0x04.HEX); otrzymuję 4 a nie 04 (BIN 100 a powinno być 0000 0100) Problem w tym że nie otrzymuję pełnej informacji. Z góry dzięki Edytowano Sierpień 31, 2020 przez 1991piotrek Cytuj Link do komentarza Share on other sites More sharing options...
Gieneq Wrzesień 1, 2020 Udostępnij Wrzesień 1, 2020 @1991piotrek możesz spróbować użyć funkcję sprintf. Wynik dasz do bufora znaków (tablicy char o zadanej długości) i nic nie powinno uciec. 1 Cytuj Link do komentarza Share on other sites More sharing options...
1991piotrek Wrzesień 2, 2020 Udostępnij Wrzesień 2, 2020 Dzięki za szybką odpowiedz, próbowałem tej funkcji i nie działa w moim przypadku albo coś robię źle. #include <SoftwareSerial.h> uint8_t test[2] = {0x00,0x44}; char bufforDanych[8] {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}; void setup() { Serial.begin(57600); Serial1.begin(10400); } void loop() { // WYSYŁA if(Serial.available()) { for(int i=0; i<sizeof(test); i++) { Serial1.println(test[i],BIN); delay(20); Serial.read(); } } // ODBIERA while(Serial1.available()) { sprintf(bufforDanych,Serial1.read()); Serial.println(bufforDanych); } } Cytuj Link do komentarza Share on other sites More sharing options...
ethanak Wrzesień 2, 2020 Udostępnij Wrzesień 2, 2020 44 minuty temu, 1991piotrek napisał: albo coś robię źle. Owszem. Poczytaj dokumentację - wpisywanie na pałę funkcji bez sprawdzenia jak się je w ogóle wywołuje i potem jojczenie że nie działa to takie trochę wstydliwe jest... nie uważasz? 1 Cytuj Link do komentarza Share on other sites More sharing options...
Polecacz 101 Zarejestruj się lub zaloguj, aby ukryć tę reklamę. Zarejestruj się lub zaloguj, aby ukryć tę reklamę. Produkcja i montaż PCB - wybierz sprawdzone PCBWay! • Darmowe płytki dla studentów i projektów non-profit • Tylko 5$ za 10 prototypów PCB w 24 godziny • Usługa projektowania PCB na zlecenie • Montaż PCB od 30$ + bezpłatna dostawa i szablony • Darmowe narzędzie do podglądu plików Gerber Zobacz również » Film z fabryki PCBWay
1991piotrek Wrzesień 2, 2020 Udostępnij Wrzesień 2, 2020 ethanak jak masz zły dzień to idź pobiegać a nie wyładuj swojej agresji na mnie, zwyczajnie napisałem ze nie potrafię z niej właściwie korzystać a nie "jojcze". To pytanie nie było skierowanie konkretnie do ciebie, jeżeli w niczym nie pomożesz to poco się udzielasz? 1 Cytuj Link do komentarza Share on other sites More sharing options...
ethanak Wrzesień 2, 2020 Udostępnij Wrzesień 2, 2020 2 minuty temu, 1991piotrek napisał: zwyczajnie napisałem ze nie potrafię z niej właściwie korzystać Podałem link do dokumentacji? Podałem. Więc może zamiast obrażać się i tupać nóżkami bo się odezwał ktoś inny niż sobie wymarzyłeś (tak działa forum) to usiądziesz i poczytasz. 4 minuty temu, 1991piotrek napisał: jeżeli w niczym nie pomożesz No, tu już przesadziłeś. Podanie linku do opisu konkretnej funkcji to za mało? Co jeszcze chcesz? Mam to przeczytać za ciebie? Dziękuję, ja już czytałem. 1 Cytuj Link do komentarza Share on other sites More sharing options...
1991piotrek Wrzesień 2, 2020 Udostępnij Wrzesień 2, 2020 (edytowany) ethanak potrafię korzystać w wyszukiwarki, poza tym Gieneq wcześniej wysłał link do opisu, może problem wynika z mojej interpretacji lub braków w programowaniu ( jestem początkującym) ty "pomagasz" w stylu kopiuj i wklej, jak dla mnie to nie pomoc. Nie wnikam w to kto odpowiada ale co odpowiada ( nie podoba mi się sposób twoich odpowiedzi skierowanych do mnie. Ethanak może byłeś dotkliwie karany przez całe swoje zycie jeżeli czegoś nie umiałeś lub nie rozumiałeś, pewnie stąd ta agresja w twoich wypowiedziach ) Edytowano Wrzesień 2, 2020 przez 1991piotrek 1 Cytuj Link do komentarza Share on other sites More sharing options...
ethanak Wrzesień 2, 2020 Udostępnij Wrzesień 2, 2020 Czego nie zrozumiałeś z dokumentacji? Napisz konkretnie, ktoś na pewno pomoże. I nie doszukuj się jakiejś agresji tam, gdzie jej nie ma. Każdy z nas był kiedyś początkujący i nie ma co się tego wstydzić. Ale zadanie konkretnego pytania może pomóc szybciej, niż stwierdzenie "nie działa". Kompilator też pewnie jakieś ostrzeżenue wypisał, też warto podać... Cytuj Link do komentarza Share on other sites More sharing options...
1991piotrek Wrzesień 2, 2020 Udostępnij Wrzesień 2, 2020 (edytowany) Problem opisałem na początku Dnia 31.08.2020 o 09:30, 1991piotrek napisał: Witam, mam pytanie, jak wysłać/odbierać zera bitowe, np wartość 0x00 ? np. dla : Serial.print(0x04.HEX); otrzymuję 4 a nie 04 (BIN 100 a powinno być 0000 0100) Problem w tym że nie otrzymuję pełnej informacji. Z góry dzięki Po prostu męczę ten problem chyba od dwóch tygodni i już tracę chęci(zdecydowałem się poprosić o pomoc na forum, a w odpowiedzi między innymi dostaję ze "jojcze"😡). Więc jeszcze raz od początku. Jeżeli wysyłam szesnastkowo liczbę to funkcja print ucina początkowe zera i dostaję nie pełną informację (zer nie ma też gdy sprawdzam to w putty, może muszę je inaczej skonfigurować? ),dlatego mam problem z sprawdzeniem echa ( komunikacja jedno przewodowa KWP200), mogę zrobić własną funkcję która je uzupełni (chyba już zapętliłem się w rozumowaniu przy niej i muszę odpocząć😄) . Miałem nadzieje ze jest jakaś gotowa funkcja o której zwyczajnie nie wiem a działała by dla mnie tak jak chce. Podczas kompilacji tego powyższego programu nie dostaje żadnych błędów Edytowano Wrzesień 2, 2020 przez 1991piotrek Cytuj Link do komentarza Share on other sites More sharing options...
ethanak Wrzesień 2, 2020 Udostępnij Wrzesień 2, 2020 (edytowany) Gotową funkcją jest właśnie sprintf. Coś w stylu: sprintf(bufor, "%02x", zmienna); Najważniejszy jest tu drugi argument (format), który informuje funkcję w jaki sposób ma wypisać wartość (wartości) - w tym przypadku oznacza to "dwie cyfry szesnastkowe z wiodącym zerem". Więcej informacji w dokumentacji, ew. wpisz w przeglądarkę "man sprintf" (funkcja z avr-libc różni się co prawda w szczegółach od standartu, ale na początek powinno wystarczyć). Ogólnie - istnieje cała rodzina funkcji *printf, różnią się sposobem traktowania parametrów i umieszczaniem wyników, ale format traktują wszystkie tak samo; jeśli poznasz jedną z nich to tak jakbyś poznał wszystkie. Aha, musiałeś dostać ostrzeżenie od kompilatora o niezgodności typu drugiego parametru - czy przypadkiem nie masz w preferencjach wyłączonego wyświetlania wszystkich komunikatów? Edytowano Wrzesień 2, 2020 przez ethanak 1 1 Cytuj Link do komentarza Share on other sites More sharing options...
1991piotrek Wrzesień 2, 2020 Udostępnij Wrzesień 2, 2020 (edytowany) @ethanak Dzięki za odpowiedź. Teraz wszystko się zgadza Edytowano Wrzesień 2, 2020 przez 1991piotrek Cytuj Link do komentarza Share on other sites More sharing options...
Gieneq Wrzesień 2, 2020 Udostępnij Wrzesień 2, 2020 @1991piotrek fajnie, że udało się rozwiązać temat, jakbyś mógł wrzucić ostateczny kod, może komuś się przyda, a sam jestem ciekaw co z tego wyszło. Poza tym jak zawsze zachęcamy do bycia przyjaznym na forum. Może problemu nie rozwiąże ani bieganie, ani jojczenie, ale pomoże ich uniknąć lakoniczność we wpisach i podawanie samych konkretów, tak by nie było o jedno zdanie za dużo 🙂 Miłego popołudnia 1 Cytuj Link do komentarza Share on other sites More sharing options...
ethanak Wrzesień 2, 2020 Udostępnij Wrzesień 2, 2020 @Gieneqtu nie chodzi o przyjazność czy lakoniczność. Droga powinna być taka: Nie wiem jak to zrobić, zapytam. Masz link do dokumentacji. Czytam, czytam, i nie rozumiem co znaczy X. X znaczy to a to. Aha, rozumiem. Nigdy taka: Mnie nie działa. A czytałeś dokumentację? Nie bądź agresywny, masz minusa, a zaraz napiszę do admina to będziesz miał bana! (niestety, przypadek autentyczny). Przy okazji - dlaczego na wersji mobile nie mogę wstawić listy? Cytuj Link do komentarza Share on other sites More sharing options...
1991piotrek Wrzesień 2, 2020 Udostępnij Wrzesień 2, 2020 Świat nie jest czarno biały i każdy go widzi po swojemu. Przepraszam jeżeli ktoś poczuł się urażony moimi postami. Co do kodu to użyłem w końcu poprawie funkcji sprintf dzięki ethanak, #include <SoftwareSerial.h> byte test[2] = {0,255}; // wysyłam dziesiętnie char bufforDanych[8] {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}; void setup() { Serial.begin(57600); Serial1.begin(10400); } void loop() { // WYSYŁA if(Serial.available()){ Serial1.write(test,2); delay(20); Serial.read(); } // ODBIERA if(Serial1.available()){ sprintf(bufforDanych,"%01d",Serial1.read()); Serial.println(bufforDanych); } } Cytuj Link do komentarza Share on other sites More sharing options...
ethanak Wrzesień 2, 2020 Udostępnij Wrzesień 2, 2020 2 godziny temu, 1991piotrek napisał: sprintf(bufforDanych,"%01d",Serial1.read()); Czy nie uważasz, że jest to absolutnie bez sensu? %01d oznacza "jednocyfrowa liczba dziesiętna, a jeśli będzie mniejsza niż jednocyfrowa uzupełnij ją po lewej stronie zerami". Teraz przeczytaj to co napisałem. Teraz jeszcze raz. I jeszcze raz. I już nic nie pisz, tylko pomyśl, czy naprawdę o to ci chodziło? Aha, tu nie ma żadnej agresji. Cytuj Link do komentarza Share on other sites More sharing options...
Pomocna odpowiedź
Dołącz do dyskusji, napisz odpowiedź!
Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!