Zamiast int16_t użyj uint16_t (dla tablicy w eepromie, rzutowanie też jest zbędne)
Problem jest tutaj: [syntax=c]void RunNeuralNet_Classification () { ComputeFeedForwardSignals((double*)input... 100,0); ComputeFeedForwardSignals((double*)hidde... 23,1); } [/syntax] W wywołaniu funkcji masz konwersję tablicy dwuwymiarowej na jednowymiarową (rzutowanie...
Nie chcę Cię martwić (bo jeżeli Twój kod działa jak powinien to OK), ale to co robisz w pierwszym poście 1 i 3 nie jest sobie tożsame. Kod w #1 jest jak najbardziej prawidłowy. Typ char to dla platformy .NET tak naprawdę 16-to bitowa liczba z zakresu 0...65535 Więc taki kod: znak o kodzie ASCII = 4 . Do tego w zasadzie typ char został stworzony. Jeżeli...
ad.1 Aby zrozumieć co się dzieje w tej linijce musisz dowiedzieć się co to są wskaźniki i rzutowanie typów. Jeżeli restart to tablica, to: [syntax=c]x=restart[0];[/syntax] przepisze pierwszy element z tablicy do zmiennej x. Nazwa tablicy to jednocześnie wskaźnik (adres w pamięci) do tej tablicy. I na przykład: [syntax=c]x=restart[1];[/syntax] zadziała...
Język C nie wspiera dynamicznych tablic wielowymiarowych. Masz dwie możliwości: 1- wykorzystać "tablicę tablic" czyli tablicę wskaźników; 2- użyć tablicy jednowymiarowej i liczyć indeksy "na piechotę". Twój przykład jest zbliżony do metody pierwszej, tzn. tabpix jest u Ciebie wskaźnikiem na wskaźnik, a ponieważ w C wskaźnik na element jest równoważny...
Niestety, ale jeśli chcesz tablicę wskaźników, przy czym wskaźniki wskazują na konkretne bloki pamięci, musisz je inicjalizować. Jeśli obie tablice są globalne, to bez problemu powinno dać się to zrealizować jakoś tak: [syntax=C]static char buff0[5][20]; char *menu_main[5] = { buff0[0], buff0[1], buff0[2], buff0[3], buff0[4] };[/syntax] lub równoważnie:...
Rzutowanie zmień na takie coś to będzie prawidłowo liczyło średnią (tzn. z miejscami po przecinku): [syntax=cpp]Srednia=((float)SumaOcen/(fl... A co do liczniki to działa jak jest na pisane: [syntax=cpp]if(Oceny[i]<3){++Licznik;... tzn jeśli i-ty element tablicy oceny jest mniejszy od 3 to zwiększ wartość licznika...
W ogólnym przypadku musisz wysłać każde pole osobno, lub też napisać procedury serializacji i deserializacji struktury do/z tablicy znaków. W specyficznym przypadku może uda się wykorzystać specjalne dyrektywy kompilatora, aby struktura była upakowana w pożądany sposób (bez wyrównywania pól). Aby zgłębić zagadnienie, przeczytaj "Data structure alignment"...
Do funkcji w przykładzie przekazywany jest wskaźnik. W C/C++ nazwa tablicy jest jednocześnie wskaźnikiem na początek tablicy(tłumaczyłem Ci to bodajże przy okazji Twojej walki z jpg:). Czyli: Text_1234 == &Text_1234[0] Więc robisz dobrze w swoim kodzie(a przynajmniej w pierwszej jego wersji). Tak: &Text_1234 mógłbyś zrobić gdyby funkcja przyjmowała...
no właśnie tutaj sprawa jest trochę dziwna, bo rzutowanie zarówno na uint8_t jak i int8_t zwraca waring. Sprawa nie jest dziwna ale oczywista, sa to 3 rozne typy danych. Ogólnie co do obliczania długości tabilcy to możesz zastsować komendę sizeof(info0). Zwraca ona długość tablicy zainicjalizowanej. Sizeof to nie komenda ale operator i nie radze tak...
Przeniosę to przerwanie i tablice do plików .c. Ale wtedy w pliku głównym .c mam includować plik przerwania .c? Myślałem, że tam inkluduje się tylko pliki .h Nie musisz include'ować pliku .c, a nawet nie powinieneś. W Makefile dopisz go tylko do plików źródłowych (SRC = $(TARGET).c przerwanie.c inny_plik.c itd.) a linker odwali resztę roboty. Zostało...
Dlaczego nie działa rzutowanie tego typu ? A mógłbyś wyjaśnić, co znaczy nie działa? Bo zazwyczaj działa... [edit] Musisz tylko pamiętać, że kompilator jest uprawniony do wyrównywania ułożenia pól w strukturach w zależności od wymagań architektury procesora. Jest prawdopodobne, że pole wskaźnika payload zostanie przesunięte w pamięci (wyrównane) do...
Trochę się zmaieszałem. Pomocy :-) chodzi mi o rzutowanie wskaźnika np mam taka deklarację (uint32_t *) ?
(...) wiedzi z urządzenia. Szukaj początku ramki. Użyj tego polecenia do odczytania 18 bajtu od początku ramki. ``` char byte = (frame >> 18) & 0xFF; ``` aczkolwiek uważam, że lepszym podejściem jest zdefiniowanie typu struktury (koniecznie packed) i odczytanie tego bajtu jako jej atrybut. Rozumiem Twoje zastrzeżenia, więc spróbujmy podejść...
Zauważyłem pewną specyfikę dla zwykłej tablicy makro nie działa jedynie dla pozycji nieparzystych w tablicy... Dla parzystych rzutowanie działa jak należy... To sugeruje błąd dostępu do źle "wyrównanych" danych w pamięci - zmienne o długości 2 bajtów powinny być umieszczone w pamięci pod parzystymi adresami. W tablicy elementów typu char, przy próbie...
Tak wiem, ten kod: out_int16=(in_uint8[3]*256+in_uint8[4]) stworzyłem tylko do sprawdzenia poprawnej kolejności. Ciekawie wyglądają odbierane dane tym sposobem, gdy wartości są ujemne :) Zapis przez rzutowanie jest "długaśny" szczególnie jak chcę zamieniać z ramki na int32 :)
Implementuje sobie obsługę MODBUS'a na tego uC i pojawił się mały problem. O ile moja biblioteka obsługi MODBUS'a działa bez problemu na wszelkich 8-mio "bitowcach" jak i na STM'ach o tyle na LPC1754 mam problem z "liniowością" pamięci. Dane z portu zapisywane są w tablicy (bajt po bajcie). Mając definicję ramki zapytania MODBUS rzutuję ją na tą tablicę....
Jak wyżej - dodatkowo: 1.stwórz wkażnik typu menuitem 2.poprzez rzutowanie typów przypisz wskażnikowi adres tablicy (bezpośrednie przypisanie kompilator odrzuci ze względu na różne typy) 3.taka konstrukja + arytmetyka wskazników pozwala na łatwi dostęp do elementów tablicy; (wskaznik+indeks) pozwala na dostęp do konkretnego elementu tablicy; Pisze bardzo...
Problem rozwiązany. Źle dobrane znaki większości i mniejszości, a także niepotrzebne rzutowanie były spowodowane tym, że aplikacja źle działała.
rodziel liczbe na cyferki :)... sie przyda sie dzielenie przez 10 i %... pozniej dodaj do kazdej cyferki kod zera z tablicy ascii i masz zapisane to w znakach ascii :)... a jak dalej potrzebujesz az "stringa", to PRAWDOPODOBNIE trzeba tak... rzutowanie na chary zrob i wrzuc te kody do tablicy, a na koncu dodaj kod konca tablicy (NULL pewnie) :)...
No właśnie chodzi o to że te wartości mam w tablicy i mógłbym przerzutować na float całą tablicę, ale nie mogę bo mam ograniczoną pamięć. Czy rozwiązanie z mnożeniem i dzieleniem.. tzn zwiększanie wartości x10, ew. x100 i potem wykonać rzutowanie pojedynczych elementów w pętli for i przetworzyć i wrzucić od nowa do tablicy short int z wartością przemnożoną...
Jak do tej pory myślałem że wyrównanie dotyczy głównie struktur i to takich które chcemy używać do przesyłania danych np. po RS232, zeby się nie okazało że ślemy jakieś głupoty wynikające właśnie z braku wyrównania. Możesz takim razie wyjaśnić, co u mnie powoduje to niewyrównanie? Poza tym zauważyłem, że ta moja funkcja do konwersji tablicy charów na...
Błąd we wzorze na UBRR powoduje obcinanie zamiast zaokrąglania, co w efekcie daje niewłaściwą szybkość transmisji. Temat był wałkowany - trzeba do dzielnej dodać połowę szybkości. Tak długie liczby są mało wygodne do przetwarzania - łatwiej traktować to jako ciąg znaków reprezentacji szesnastkowej ew. sekwencję krótkich liczb (tak, jak adresy IP)....
Ale dalej nie rozumiem jak właśnie zapisać to do pliku. Mimo, że robimy rzutowanie nie wiem jak to przerobić na znak i wpisać do pliku tak żeby Zapisać to do tablicy 2-wymiarowej. Pierwszy to znak drugi to liczba wystąpień w ASCII. Powiem szczerze czytam i przeglądam tą Symfonie C++ cały czas i nic z tego nie rozumiem. Jest funkcja do otwierania pliku,...
Podnosisz do kwadratu każdy element tablicy - zakładając, że masz w niej 13-bitowe wartości, to do kwadratu potrzebują one do zapisu 26 bitów, czyli więcej niż 16. A teraz dlaczego dla tablicy z elementami 16-bitowymi to nie działa - mnożenie uint16_t razy uint16_t daje uwaga uint16_t. Widzisz więc gdzie jest błąd. Gdyby kompilator wiedział, że ma zrobić...
Tak swoją drogą to te kombinacje są nieco błędne - jeśli ilość danych do zapisania nie jest podzielna przez 4, to wcale nie można sobie przeczytać "poza" koniec tablicy - undefined behavior. Nie mówiąc już o tym, że zasadniczo rzutowanie danych typu uint8_t na uint32_t bez zapewnienia w jakiś sposób wyrównania tych pierwszych jest również błędne (na...
LPSTR to char* LPWSTR to wchar_t* Chcesz podać char* zamiast wchar_t* do funkcji. Można wykonać rzutowanie i wtedy skompiluje się bez błędu, ale to mniej więcej tak, jakby podać tablicę int zamiast tablicy char. W pewnych wypadkach się przydaje, ale zwykle nic dobrego z tego nie wyjdzie, bo int ma większy rozmiar niż char - tak jak wchar_t jest większy...
To nie jest dobre miejsce na dodawanie handlera. Dodajesz go przy każdym naciśnięciu przycisku, więc wywoływany jest wielokrotnie. Niepotrzebnie robisz rzutowanie - możesz wykorzystać port . Zdecyduj się - po polsku albo po angielsku. Błędnie zakładasz, że odbierzesz co najmniej 4 bajty i akurat te potrzebne.
Wyraziłeś się precyzyjnie tylko że to rozbijanie wyszło wcześniej. Napisałeś o promocji do integer a ja dodałem priorytet .Dla więcej bitowych liczb wystarczy jasno sprecyzować rzutowanie ?. Na zrzucie ekranu widać jak liczby 0xFE i 0xFD wpadają do tablicy już jako znaki ascii f-0x66 e-0x64 f-0x66 d-0x65 dzięki snprintf , więc chyba wszystko działa....
Jako początkujący miałem problem, aby poprawnie ustawić np. 5 środkowych bitów w rejestrze. Wrzucam trywialne macra - może komuś się przydadzą: [syntax=c] #define u32 unsigned #ifdef __GNUC__ #defineasm__asm__ #else #defineasmasm #endif [/syntax] podstawowe operacje: [syntax=c] #defineread32( addr ) *( ( u32* )( addr ) ) #definewrite32( addr, val )...
W C# pisze się szybciej? No przepraszam ale żeby w c++ wyświetlić zmienną a piszę: cout<<a; 8 znaków w c# Console.WriteLine(a); 21 znaków... i kolejna rzecz która już mnie doprowadza do szału. Dlaczego do cholery nie można zrobić takiego przypisania: FOR(9) plansza[i]=(i+48)+1; czyli przypisać jedynkę, dwójkę itd. z tablicy ASCII Dobra przeszło...
error C2679 dostajesz, bo nie masz zdefiniowanego konstruktora kopiującego. Jak tylko go stworzysz, dostaniesz błąd o niezgodności typów albowiem: obserwowane *tab[13]; deklarujesz tablicę wskaźników do obiektów, i masz do tego prawo, ale zaraz potem tab[li]=spolki(tablica[i...
OK pierwsza linijka: deklaracja wskaźnika s. druga linijka: &f - pobranie adresu w pamięci zmiennej f (jest ona typu float). Ta operacja zwróci wskaźnik do float, czyli float*. Ale zamieniamy to na char*, więc wykonujemy rzutowanie (char*)&f. Wskaźnik s będzie wskazywał na adres zmiennej f, ale jest typu char*, więc działa jak wskaźnik do tablicy charów...
Utworzyłem typ strukturalny : typedef struct Interface { int Time; BOOL Thread; unsigned char Buffer_I[100]; unsigned char Buffer_O[100]; unsigned char NumberOfBytes; unsigned char CountError; unsigned char Status; }; następnie zmienną tego typu : Interface InterfaceRS; Teraz w funkcji obsługującej wątek, chcę podać adres tablicy...
Jeżeli już koniecznie chcesz to zrobić na tablicach, to takie coś powinno zadziałać: void zmiana_i(flash char **tabptr ) { unsigned char i = 0; while(1){ lcd_putsf( tabptr[i]); //wypisz string na LCD i = (i + 1) % 2; }; } A przy wywołaniu: zmiana_i((flash char**)wyborptr); Jeżeli...
ej kurde no [; chetnie bym ci powiedzial jak sprawa wyglada w GCC, ale nie kumam tego co on tam wyczynia niestety [; na poziomie optymalizacji 0 ... kod wykonuje misaligned read i ... idzie dalej /; odczytuje jednym LDRem (zwyklym!) adres konczacy sie na -B (czyli 11, czyli niezbyt podzielny przez 4), a odczytana przez niego wartosc jest wysoce abstrakcyjna...
Ok, już widzę... :) Zaraz poprawię... Niestety bezmyślne kopiuj-wklej. W podobnym projekcie to zmieniłem, a tutaj zapomniałem... Dodano po 49 Oczywiście zmieniłem: //taktowania blokow [syntax=c] RCC_APB2PeriphClockCmd(RCC_APB2Periph_GP... ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_GP... ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_GP... ENABLE);...
"data race" to w sensie kto pierwszy ten lepszy czyli że ta seria mniejszych odczytów może odbyć się nie chronologicznie czy o co chodzi? 1. ptr jest adresem tablicy unsigned char (odnośnie tego fragmentu: wc =LD_WORD(buf); gdzie BYTE buf ) czyli wskaznik do unsigned char mamy zrzutowany na wskaznik na unsigned char - czyli nic to nie daje. 2. wskaznik...
Takie głupie pytanie: jakiego typu jest v_temp? Przy obliczeniach jest automatyczne rzutowanie na float i spowrotem do całkowitych po obliczeniach? Co do przesuwania wyników to już ktoś wcześniej zwracał uwagę że indeksy tablicy lecą od 0 a nie od 1 i tymczasem tylko to mogę podejrzewać. Wyświetlanie liczb z przecinkiem można zrobić prosto, nawet na...
A mógłby któryś z kolegów dokładnie wytłumaczyć czemu nie działa kod Autora z początku tego wątku? to już opisał tmf przecież, bo: test.dana=(unsigned long)bufor[0]; to rzutowanie wartości char w postaci jednego bajtu z tablicy bufor na unsigned long . Nie może to więc inaczej zadziałać niż tak jak objawiało się to autorowi w pierwszym...
Program działa, chociaż wydaje mi się, że temperatura jest ciut zawyżona, no ale może i faktycznie taka jest. Mam jeszcze inny problem, a właściwie póki co za małą wiedze w temacie, żeby wiedzieć jak ten temat ugryź, a mianowicie: Mam tak zdefiniowane zmienne: ( or ) missing [IF(CHR(S2(1)) = 4 THEN] Assigment error...
Witam. Zająłem się dzisiaj tablicami (to w ramach prób odczytu numeru seryjnego z urządzenia Dallasa). Aby sobie ułatwić i sprawdzić jedną z funkcji zdefiniowałem tablicę 16-elementową z wartościami liczbowymi, a następnie chciałbym wyświetlić osiem pierwszych liczb na LCD, w postaci numerycznej, czyli na LCD chcę w tym przypadku uzyskać 12345678 (a...
Zacznę od zera: czy możesz mi polecić co mogę sobie darmowo (znaczy w necie) poczytać ogólnie i o szczegółach, bo google zwraca masę na każdy temat - o różnej wartości, z błędami, nie do tego itp? Tyczasem kopię elkę i też jest różnie, nie wszystko co mi może być potrzebne jest, muszę się z kontekstu domyślać czemu tak a nie inaczej no i ogólnie brakuje...
Nie rozumiem jeszcze dlaczego ale kompilator czasami podkreśla mi składnię na żółto tego: res = pf_open(strcpy_P( files, plik i podaje komunikat passing argument 2 of 'strcpy_P' discards qualifiers from pointer target type . Dlatego że przez całą książkę piszę, przypominam o tym wszędzie na forach, ale jakoś mało kto słucha, robi po swojemu a potem...
Projekcik fajny, gratuluję ambicji :) Kliknąłem "Fajne" mimo kodu PHP! Nie chcę tutaj opisywać Twoich błędów, więc zerknij na to co dla Ciebie przygotowałem: [syntax=php]<?php /* Pobieranie parametru z $_GET['d'] Dodatkowo wykonujemy rzutowanie na typ liczbowy całkowity (int) */ $d = (int) $_GET['d']; /* Sprawdzanie czy podany parametr jest w poprawnym...
Postanowiłem liczbę typu float rozbić na 4 bajty stosując rzutowanie na wskaźnik char. A następnie przesyłać bajt po bajcie do PC jednak mam problemy, ze złożeniem tego na PC bo ostatecznie odbieram inną liczbę niż wysyłam.Kody programów zamieszczam poniżej: #include <avr\io.h> unsigned char dane; float wynik=2.9876; int i=0; int a=0; void INI_RS(unsigned...
damiano713 --> czy jak napisałeś , że sprawdzony to - sam może go sprawdzałeś ??? BoskiDialer --> wow ;) "Kod poprawiany w oknie pisania wiadomości" ale ok na razie po kolei próbuję to co napisałeś uruchamiać i sprawdzać czy działa. Czyli zanim nawet przerobiłem pliki arp.c dodałem w pętli głównej programu sam kod do tworzenia i wysyłania ramki...
Usunięcie tablicy nie przyniosło oszołamiających efektów, choć poprawiło sytuację. Dane są wysyłane poprawnie do mniej więcej 32 czy 64-tej próbki, a ja chciałbym wysłać ich 255. Kolejne próbki po bodajże 64-tej znów są przekłamane. Nie wiem w czym piszesz, ale dziwnie działasz na wskaźnikach/adresach. Poza tym rzutując na unsigned char ograniczyłeś...
to skoro padła odpowiedz jak poradzić sobie z problemem to powiem co poszło nie tak. w językach kompilowanych, na przykład C oprócz zwykłej tablicy istnieje także statyczna czysta tablica. [syntax=c]const char tablica[liczba][/syntax] gdzie liczba to naprzykład [syntax=c]#define liczba 100[/syntax] podczas przejścia preprocesora jak kompilator widzi...
Zapewne chodzi o to: [syntax=c] tablica.studenci[tablica.aktualny].imie = (char *)malloc(strlen(i) + 1); tablica.studenci[tablica.aktualny].nazwi... = (char *)malloc(strlen(n) + 1); [/syntax] Dodaj rzutowanie na "char *"
rzutowanie zmiennej rzutowanie wskaźnik rzutowanie zmiennych
volvo silnika zadania oczka korekta temperatura
własny serwis elektroniki zyxel lte5398
Samsung ES25 czarne punkty na ekranie – martwe piksele LCD czy kurz na matrycy? Canon BJC 85 – gdzie kupić głowicę BC-10, BC-11e, BC-12e (BJ-cartridge)