napisany bez bibliotek, miałby objętość o 80% mniejszą niż z nimi. No i .....? Czy w jakiś sposób był lepszy? Czy mikrokontrolerowi robi różnicę czy FLASH jest w 3 czy 58% pełen? 1. (HAL) Obsługa przerwania i zapisanie danych do bufora kołowego (w przerwaniu?) 2. (AL) Odczytanie danych z bufora kołowego, prezentacja wyników Te problemy rozwiązuje RTOS....
Dodam że ten kod 'cd_free', jest na bazie kodu yampp3 i tam jest wg schematu podłączona pamięć do procesora jako bufor dla odczytanych danych z twardego dysku....
W jakis sposób w comport4 odczytać, ciag bajtów z bufora jako typu bajtowego? Instrukcja comport1.readstr( dane ,count) oraz z tego co sprawdziłem, także polecenie comport1.read(dane,count) , czyta kolejne bajty jako znaki. Kompilator wymusza zadeklarowanie wcześniej zmienną dane jako ansistring, shortstring jest niemożliwy. Niby jak kompilator wymusza...
A które urządzenie jest jako Master ? Bo jeżeli AVR to niema żadnych problemów, bo zegar wysyła master. Gdyby był jako Slave to przy 2 bajtach też nie powinno być problemu bo jak już ktoś wspomniał jest jeszcze rejestr przesuwny do którego dane są ładowane jak bufor jest jeszcze zajęty. Po odczytaniu danych z bufora dane z rejestru natychmiast przepisywane...
Juz bylo cos podobnego - przed odczytaniem danych sprawdz bufor, czy odpowiednia ilosc danych sie juz w nim znajduje.
Witam! Mam następujący problem. Wysyłam przez ComPort instrukcję do sterownika, która zmusza go do przesłania danych: form1.ComPort1.WriteStr(#06); Teraz sterownik wysyła ciąg znaków do COM'a. Skąd mam wiedzieć kiedy sterownik wysłał już wszystkie dane? Następnie muszę odczytać ten bufor poleceniem: form1.ComPort1.ReadStr(buf,300); Niestety ilość wysyłanych...
Struktura twiMaster ma bufor na odczytane dane: [syntax=c] ...... while (twiMaster.status != TWIM_STATUS_READY) { /* Wait until transaction is complete. */ } uint8_t byte1 = twiMaster.readData[0]; uint8_t byte2 = twiMaster.readData[2]; uint8_t byte3 = twiMaster.readData[3]; [/syntax]
Witam, jakiej uzyc funkcji, aby zapisac dane odczytane z bufora do pliku w C++ lub WinAPI (dane w buforze znalazly sie po wyslaniu ich przez posrt szeregowy). I drugie pytanie w jakis sposob rozwiazac problem ograniczonosci rozmiarow wysylanych plikow wynikajacych z rozmiaru bufora. Jakas petla, ktora bedzie po kazdym wypelnieniu i odczytaniu danych...
U mnie działa coś takiego: Odczytaj_sprzetowy_uart: Uart_txt = "" Do 'Odbierz znak po znaku Kod = Inkey() Uart_txt = Uart_txt + Chr(kod) 'Zapisz w Uart_txt Bufor = Ischarwaiting() 'Zakoncz jeśli CR lub brak znaku w buforze Loop Until Bufor = 0 Or Kod = 13 Return Odczytaj_uart: Bufor = Ischarwaiting()...
Toć to nie wystarczy zrobić gdzieś czegoś w stylu /dev/comx > /log/moj_plik.log ? Dawno nie używałem unixa ale coś w ten deseń można pokombinować (Jedynie nie wiem czy to nie zamknie od razu "sesji" po odczytaniu z bufora danych UARTu)
Freddie Chopin, FIFO jest dobrym rozwiązaniem, myślałem, że uda się to zrobić w prostszy sposób. Niestety muszę przebudować wszystkie funkcje z tym związane, bo chcę zamienić aktualne rozwiązanie czyli dwie zmienne tablica i licznik danych w buforze na strukturę z tablicą, wskaźnikiem na ostatnio odczytany element i licznikiem danych w buforze. Mam...
Zrób jakiegoś delay-a . Jeżeli transmisja odbywa sie raz na powiedzmy 1 sek to to załatwi sprawę - np po 0,1 sek od ostatnio odebranego znaku czyść bufor, a do odczytanych danych nie odwołuj się funkcją printf czy podobną bo one służą do stringów. Zawsze można jechać na wskaźniku czy indeksie i wyswietlać poszczególne znaki. Trochę mało danch zeby powiedzieć...
[syntax=C]while (!(USART2->ISR |= USART_... Co to w ogóle ma robić? [syntax=C]Temp = USART2->TDR; // Read t... I czemu usiłujesz odczytać dane z bufora wysyłki
1. Zaalokować jakiś bufor, na przykad wielkości 2^12 w obszarze zmiennych globanych. 2. Wczytać parametry. Dla zadania domowego specjalizowana biblioteka to overkill więc zakładamy, że argc[1] to nazwa pliku, argc[2], wielkość pliku 3. Otworzyć plik wejściowy - fopen w trybie binarnym 4. W pętli do EOF lub zerowej ilości odczytanych bajtów: 4a wczytać...
napiecie 12,57V, po odczytaniu bufora same fffffffki... W calych 2KB danych. Oczywiscie zapisywany plik zupewlnie inny (200B niecale).
W buforze odbioru są tylko dane wysłane przez czytnik. Należy zwrócić uwagę, że bufor wejściowy wypełnia się niezależnie od funkcji odczytu znaków. Jeżeli np. czytnik wysyła dane (ileś bajtów) cyklicznie, to jeżeli nie jest wywoływana funkcja odczytu znaków bufor wejściowy będzie stopniowo się zapełniał. Funkcja 4403 powoduje odczyt i usunięcie iluś...
Ok. Jeszcze nie przetestowałem, pewnie jutro wykonam test. Zastanawiam się nad wprowadzeniem dodatkowego większego bufora niż hardwarowy fifo. Jak wystąpi przerwanie to kopiuję z fifo do dodatkowego bufora i wychodzę, nawet jak wystąpi kolejne przerwanie a program nie odczytał z tego dodatkowego buforu danych w pętli głównej to nic się nie dzieje. Tak...
Przerwanie od odbiornika jest wywoływane w momencie kiedy dana jest gotowa w rejestrze, więc ta pętla do while jest niepotrzebna (zresztą ona jest wręcz nie wskazana bo wydłuża obsługę przerwania o nie wiadomo ile czasu). Poza tym proponuję jeszcze w M8 sprawdzac rejestr UCSRA, w nim są zgłoszone ewentualne błędy (szczegóły w manualu). Poniżej działająca...
Witam! Jak w ComPort w Delphi odebrać z bufora np. 300 odczytanych znaków? Jak zmusić ComPort aby przeczytał i załadował do bufora określoną liczbę danych? Pozdrawiam.
Nie można w ten sposób "szeregowo" wstawiać warunków na sprawdzanie, czy coś jest w buforze Serial: Co się stanie, jak pierwszy warunek nie będzie spełniony, ale drugi już tak, albo następny ? Kompletna sieczka tzn. przesyłane dane trafią nie do tych zmiennych, co trzeba. Lepiej w takiej sytuacji sprawdzić od razu, czy w buforze Serial jest komplet...
(...) czas odcięta przy użyciu inwertera z bramką NAND (np. 74LS00). Jeśli chcesz dodatkowo zobrazować dane na magistrali w trakcie pracy, proponuję zainstalowanie matrycy LED sterowanej przez rejestry przesuwne, co pozwoli na wizualne monitorowanie aktywności sygnałów. W razie problemów pytaj śmiało nas i Wstępna ocena dostępnych informacji Analizując...
użyj sobie po pierwsze bufora wejściowego dla RS'a (zobacz w helpie dokładnie co i jak to się używa) Config Serialin = Buffered , Size = 20 to po pierwsze, potem możesz stosować sobie polecenie Ischarwaiting w programie dzięki czemu nie będziesz musiał zatrzymywać programu i czekać z poleceniem INPUT gdy nie nadlatują żadne dane. Dzięki Ischarwaiting...
Jeśli wysyłasz dane z układu uP co 500ms to program, który odczytuje dane z bufora, możne sprawdzać czy nie pojawiły się w nim nowe dane i jeśli zostały zapisane nowe dane to wtedy je dopiero odczytać. Na pewno jest coś takiego opisane w książce RS232-praktyczne programowanie. Jesli nie to poszukaj na http://4programmers.net/search.php?q=obs...
(...) 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ść...
zwróc uwage czy twój napęd czyta dvd+ i dvd- czy tylko same plusy.Zwróc tez uwage jak ci juz odczyta płyte dvd jaki ma bufor danych.
Myślałeś o tym by zatrzasnąć stan linii danych w rejestrze na zboczu i odczytać zawartość rejestru już później przez CPU. Mógłbyś dodać licznik i mala pamięć SRAM oraz bufor bo tak małego FIFO raczej nie kupisz... Ale moim zdaniem będzie droższe i większe niż dodanie prostego uC który będzie w pętli robił to czego potrzebujesz - ile teraz kosztuje najtańszy...
zależy jak tą ramkę sobie zorganizujesz ale jeden z prostszych sposobów, gdy przesyłamy znaki ASCII to koniec ramki łatwo np odróżnić po tym, że nadleciał znak ENTER (0x0d). Gdy wykryjesz go w przerwaniu to już możesz powiadomić pętlę główną czy jakieś zdarzenie w tej pętli, że już jakaś cała i gotowa ramka czeka na odczytanie. Jeśli pętla główna będzie...
Pamiętaj, że rejestry SPI, w zależności czy to jest M/S, czy realizujesz przez USART, mają bufory. Jeśli więc coś nadajesz, a nie odczytasz SPDR, to ta wartość i tak tam jest, zostanie odczytana przy kolejnej okazji. Stąd możesz mieć opisane problemy z odczytem jakiś wcześniej przesłanych bajtów. Stąd też najlepiej albo jednocześnie zapisywać i odpisywać...
Sprawdź najpierw pochodzenie tego zera. Najlepiej w terminalu jak Ci pisałem. Moje podejrzenie jest takie, że jak wysyłałeś przez putst() było OK, bo on eliminował zero na końcu Twojego "stringa" char dataBuff wychodząc z funkcji. To zero pojawia się w tablicy niejawnie, ale tam jest. Gdy uruchamiasz DMA nie bierzesz pod uwagę, że tablica ma rozmiar...
Podczas programowania nie ma problemu... chodziło mi raczej czy jak będę korzystał z pamięci to programator nie zgłupieje i np. nie zapisze mi czegoś do flash'a(mikrokontrolera) niepotrzebnie... W takim razie czekam dalej na pomoc w używaniu tej pamięci... //Może kostka jest walnięta ... mógłby ktoś sprawdzić dla mnie kod z pliku poniżej? Podłączenie...
Jeśli możesz postaraj sie wysłać do terminala kolejno wartości hex 0x54,0x45,0x53,0x54 i sprawdź co wyświetla terminal jeśli to bedzie słowo TEST oznacza że mega wysyła poprawnie kody ascII możesz te same kody wysłać do megi i zobaczyć efekt na porcie a problem może być w formacie transmisji. Musisz sprawdzac podczas transmisji kilku bajtów gotowość...
Witam. Prawdopodobnie problem jest w obsłudze drugiego portu RS. Podaj kod źródłowy jak obsługujesz ten port do odczytu i zapisu. Należy utworzyć bufor do odczytu z RS drugiego , włączyć przerwania. Dopiero z bufora będziesz mógł odczytać.
Ten SPL/HAL jest super. Zamiast: if (USART2->SR & USART_SR_RXNE != 0) jest: if (USART_GetFlagStatus(USART2, USART_FLAG_RXNE)) Zamiast: char c = USART2->DR; jest: char c = USART_ReceiveData(USART2); Skoro zakładasz, że Twój program może się nie wyrobić, to pierwszym krokiem mogłoby być wywalenie całego SPLa tam gdzie jego miejsce, np. do "/dev/null"...
Po wykryciu startu kolejne bity są kompletowane w rejestrze szeregowym. Jak ostatni bit zostanie wpisany do rejestru szeregowego to cały bajt jest przepisywany do bufora danych z, którego można go programowo odczytać.
Tak się składa, ze również korzystam z BMA180. O to moja funkcja odczytu i zapisu bajtu z czujnika pod wskazany adres: [syntax=c]u8 spi_read_byte_acc(u8 adres) { u8 data; // Opuść ChipSelect, wyczyść poprzez odczyt DR bufor RX, oraz wyślij adres wraz z poleceniem odczytu. CS_ACC = 0; data = SPI1->DR; SPI1->DR = BMA180_READ | adres; // Oczekiwanie na...
Próbowałem już wcześniej tak jak kolega hotdog powiedział i faktycznie poprawiło się przy wysyłaniu paczkami w odstępach czasowych. Ale gdybym miałstosować takie rozwiązanie to lepiej ustawić prędkość na 38400b/s i wysyłać ciągiem, bo z taką prędkościąnie mam problemów, a wyjdzie szybciej niż wysyłanie paczkami. A co do tego że wyzyłam 1000000B ciągiem,...
Dobry wieczór. Postanowiłem w święta zająć się czymś poważniejszym niż zwykle, żeby nadrobić stracony przez ostatnie lata czas. Żeby się nie nudzić, wziąłem ze sobą CA80. Owinąłem pianką i zapakowałem do pudełka... Okazało się, że pomysł był raczej słaby. Mój pupilek wyzionął ducha. Wyświetlacz nawet nie błysnął. Po oględzinach długo nie wiedziałem,...
Zgadza się, funkcja przerywa działanie, ale w buforze nadal znajduje się znak, który trzeba odczytać. Trzeba opróżnić stdin, nie wiem jak to jest realizowane na mikrokontrolerach. Gdy funkcja napotka znak nie pasujący do wzorca wykonaj fflush(stdin), albo scanf("%c",&znak);
Tak jak pisałem już kiedyś pamięć można podłączyć po jakiś mikroprocesor, odczytać i wysłać zawartość do komputera. Drugi możliwy sposób to, jeśli masz programator obsługujący pamięci eprom, przedrutować wyprowadzenia tak, aby odpowiadały np 27128 i go odczytć. Tylko że wtedy może trzeba będzie dodać bufor dla linii danych, bo ten PAL nie ma żadnego...
To działa dokładnie tak samo jak w funkcjach ReadFile lub WriteFile z WinAPI. Trzeci argument to wskaźnik na WORD, ponieważ funkcja zwraca ile bajtów faktycznie odczytano właśnie poprzez tą zmienną. Może być tak, że chcesz czytać 1024bajty (btr=1024) a funkcja odczyta tylko 1000 bajtów (z dowolnego powodu, np. address out of range). I jak inaczej ma...
(at)rosak Nie wiem po co chcesz kupować jakiś analizator logiczny, jeśli masz porządny oscyloskop z dużym buforem. Chcesz rozgryźć ten protokół, czy tylko odtworzyć dane sekwencje? Jeśli tylko odtworzyć to wszystko masz już na tacy. Nagraj jakąś sekwencję oscyloskopem i spróbuj ją, odczytaną "recznie", odtworzyć przez interfejs SPI na mikrokontrolerze....
Nie będą wywyłane przecież losowo? Musisz wiedzieć, czy aktualnie jest wysyłany int16, czy uint16. Stąd musisz mieć jakieś dodatkowe informacje, czyli masz jakiś format ramki danych. Ja bym jak pisałem zastosował unie do dostępu do danych w buforze. Przed daną musi być jakiś znacznik typu.
Załaczam kod, który działa. odbiera dane z portu szeregowego i wyswietla je w MsgBox(). Zwróć jedynie uwagę na zdarzenieSerialPort1_DataReceived. Zmień w nim ilośc bajtów po której mają zostać odczytane dane z BUFORA portu szeregowego. Początkowo bowiem dane trafiają do bufora (każdy bajt oddzielnie wywołuje przerwanie i trafia do bufora) a stamtąd...
Obsługiwałem kiedyś pamięć SDRAM za pomocą FPGA. W odświeżaniu fizycznie chodzi o to, że dane z każdego wiersza muszą być odczytane do bufora, a następnie z powrotem wpisane do pamięci, bo inaczej zanikną. W odświeżaniu 'zwykłym' wykonujesz odczyt odpowiedniego wiersza sam (wyznaczasz niejako wiersz, który chcesz odświeżyć), o ile dobrze pamiętam. W...
Teraz mi się przypomniał warunek wysyłania PSH - ustawia się go w pakiecie, który zawiera ostatnią porcję danych z buforu nadawczego (nie licząc tych, które potencjalnie mogą przyjść). Czyli w przypadku gdy mss jest większe od rozmiaru buforu flaga ta praktycznie zawsze będzie ustawiona i opisana sytuacja nie miała by miejsca, dla większego buforu nadawczego...
bufor FIFO to generalnie pewien obszar pamięci RAM, do którego uzyskujemy dostęp za pomocą dwóch wskaźników. Pierwszy z nich (nazwijmy go WRptr) wskazuje nam miejsce zapisu, a drugi (RDptr) miejsce odczytu. Inicjując bufor ustwaiamy WRptr=RDptr=adres_bufora. Po zapisie lub odczycie zwiększamy odpowiedni wskaźnik o jeden. Zgodnie z tymi założeniami,...
W mojej aplikacji odczytuję dane po modbusie tcp co 1 sekundę. Jest to tablica z 50 elementami. Dane te są buforowane w sterowniku. Raz odczytuję rejestry Holding Registers z pod adresu 40001 a drugi raz z 40101 i tak w kółko. Poprostu nie mogę co jakiś czas zgubić 1 cyklu lub go rozsynchornizować bo dane nie będą się czytały z tego buforu co trzeba...
W powyższych postach to się pojawiało. Ja bym w przerwaniu na maszynie stanów na okrągło wysyłał żądania konwersji temperatury i odczytywał wszystkie czujniki. Odczyt temperatury i zapis do bufora "do zapisu" zrobiłbym atomowo. Z drugiej strony każde żądanie ze strony PC-ta również atomowo przepisywałoby bufor "do zapisu" na bufor "do odczytu" i odczytanie...
Witam. Można i czymś takim się bawić. Możliwości są stosunkowo małe. Do tego wykonałem tylko jedno podejście i wylądowało to w koszu. Obecnie używam modułów RFM69. To co masz to komunikacja tylko w jedną stronę. Transceiver umożliwia komunikację typu. Ja pytam ty odpowiadasz. Następna sprawa moduł wszystko załatwia sam, Ty tylko musisz z bufora odczytać...
Flagę TXE powinno się sprawdzać PRZED wpisaniem czegoś do DR (to akurat nie jest wielkim problemem), ale przed odczytaniem DR powinno się sprawdzać czy flaga RXNE jest ustawiona - dopiero wtedy można odczytać to co jest w DR. Bez tego wciąż nie odczytujesz tego co chcesz - na etapie inicjalizacji odczyt masz praktycznie natychmiast po wpisaniu (bufor...
widzę ustawiłeś blocklen na 0x200 (zamiast 0x0200 możesz napisać 0x200 -> wg mnie wygląda przejrzyściej) :) Skoro ustawiłeś blok/sektor danych na 512 to jak chcesz je zmieścić do bufora 16B :?: Oczywiście jest to możliwe,można odczytać pozostałe 498B w powietrze, ale czy Ty tak robisz :?: Czy po prostu próbujesz upchać 512B do tablicy 16B :?: Dodano...
Funkcja ReadFile w jakiś sposób przekazuje ilość odczytanych bajtów (do sprawdzenia w dokumentacji). Należy brać pod uwagę tylko tą ilość danych...
.... overlapped jest strukturą którą warto użyć w przypadku asynchronicznych operacji ReadFile(), WriteFile() czyli operacjach I/O. Parametryzujesz wtedy czas oczekiwania na komplena ramke w buforze wejściowym. Strukturę tę ustalasz przy otwarciu portu a następnie przy odczycie lub zapisie danych buforowanych. Bufor moze być ustawiony na 255 a ile z...
Witam, Realizuję komunikację master-slave pomiędzy PC(master) i dwoma mikrokontrolerami (ATmega8 i ATmega16). Program na PC piszę w C# i korzystam z odbioru danych poprzez 'SerialDataReceivedEventHandler'. W obsłudze zdarzenia korzystam z funkcji Read(bufor, offset, ilosc_danych) do odczytania odebranych danych. Zależy mi na tym, żeby przesyłać ramki...
Witam! Mam programator TL866CS i soft MiniPro w wersji 6 i mam problem z odczytem pamięci EPROM NM27C256NE - jest to pamięć OTP, ale odczytać ją przecież można. Problem polega na tym, że za każdym razem odczytane dane są inne.. Jeśli kilka razy kliknę "Read" to za każdym razem do bufora odczyta inne dane, inna jest suma kontrolna itp... Jest to co najmniej...
Pamięć wirtualna jest wyłączona bo po co mi ona jak mam 8GB ramu. Zauważyłem że jak trochę danych się odczyta i dam wstrzymaj to bufor się opróżnia i w ten dziwny sposób da się plik przerobić. Więc problemem jest jakiś bufor zapisu. Da się go jakoś ustawić aby nie robił problemu? Włączanie jako administrator albo z zgodności z xp nie zmienia nic.
http://obrazki.elektroda.pl/2748649000_1... Witam, Przedstawiam projekt autorskiego edytora do kart SLE 5528, lub ich starszego odpowiednika SLE 4428 –„SLE 5528 / SLE 4428 Card Editor by vayo” . Na wstępie parę słów o samych kartach. Karty te to 1kB EEPROM z dwu bajtowym kodem zabezpieczającym przed zapisem. Posiadają...
Bufor cykliczny - tablica o długości N bajtów. Dwa wskażniki na elementy tegoż. Pierwszy wskażnik do odczytu (wo), drugi do zapisu (wz). Początkowo oba wskażniki ustawione na początek bufora. Zapis: Procedura przerwania po każdym odebranym bajcie zapisuje go w miejscu wskazanym przez wz. Następnie wz jest inkrementowany i jeżeli wskazuje na element...
Wbrew powszechnej opinii, funkcje obsługujące transfer po SPI mogą być dedykowane do nadawania i odbioru, szczególnie przy wysyłaniu pakietów. Przykład 1: Wysyłanie pakietu do modułu radiowego: [syntax=c]void radioBufferWrite(uint8_t reg, uint8_t nData, uint8_t* pData) { volatile uint8_t bDummy; // NCS activate RADIO_NCS_GPIO->BRR = RADIO_NCS_bm; //...
Dane typów prostych (char, int, uint16_t, itd.) kopiujesz w sposób bezpośredni (operatorem "="), tak jak masz to w kodzie: [syntax=c]pamiecID[0][pozycja]=rxId;[/sy... Dane typu tablicowego kopiujesz z pomocą pętli (przechodząc kolejno przez wszystkie elementy) [syntax=c]for (int i=0; i<len; i++) { dst[i] = src[i]; }[/syntax] lub korzystając z jakiejś...
Udało się. Wystarczyło dać opóźnienie w postaci instrukcji Sleep (100) przed instrukcją odczytu (czytałem wcześniej o tym, ale nie wiedziałem jak i co zrobić). Teraz w zmiennej Pamiec mam cały zapis odczytany z mikrokontrolera. Zamykam temat. Pozdrawiam Adam_Z
Input nie zawiśnie jeśli ustawisz poprawnie "Config Input = Cr", bo standardowo Input "czeka" na CRLF. A odczytać musi, bo przejście do podprogramu nastąpi tylko w przypadku nadejścia znaku entera (13). Więc z góry wiadomo, że Input je odbierze. Bufor jest czyszczony przez ten Input właśnie. Sorry pomyłka - standardowo Input czeka tylko na CR więc jeśli...
Nie, to błedne rozwiązanie, co przedstawiłeś. Przesyłane dane trafiają do bufora najpierw portu COM, a potem systemowego. Wówczas funkcja ReadStr może odczytać dane z tego bufora. W przeciwnym razie będzie czekać. Po prostu w jednym wątku zrób "nieskończoną" pętlę czytającą, która po odczycie wstawi zarówno czas jak i wartość np do listy dynamicznej....
Musisz założyć, że nie wiesz ile danych odbierzesz w zdarzeniu. Wydaje mi się, że zakładasz odebranie wszystkich. Musisz je odbierać, gromadzić, przy okazji sprawdzając, czy są prawidłowe. Dlaczego .BytesToRead - 1 ?
Sam ostatnio z tym się bujałem z tym, że używam FLTK... Generalnie tryb OVERLAPPED jest upierdliwy i mi to do d... to działało... Trzeba pamiętać o tym, że funkcje odczytu/zapisu wracają natychmiast niezależnie czy odczytały cokolwiek czy nie potem to już zabawa z flagami, events itp, itd... Do odczytu, jeżeli już faktycznie coś zostało odebrane, używasz...
Korzystanie z PetitFS aby było szybkie to tylko i wyłącznie odczyt do bufora w pamięci RAM po 512 bajtów. Każdy odczyt mniejszej ilości bajtów to i tak odczyt sektora 512 bajtów a potem wyszukiwanie w nim tylu bajtów ilu potrzebujesz. Więc zastanów się jeśli ty próbujesz odczytywać po 1 bajcie to i tak aby odczytać 512 tych bajtów, aż 512 razy zostanie...
Teraz zbierasz w kodzie tylko bajt danych, aby obsłużył pakiet musisz założyć bufor #include <SoftwareSerial.h> SoftwareSerial LIN(0, 1); // Dlaczego nie czytasz danych na pinach 2 i 3? const int BUFFER_SIZE = 64; // rozmiar bufora char linBuffer[BUFFER_SIZE]; // Bufor danych int bufferIndex = 0; // Indeks bufora void setup()...
Czy interesuje cię gotowa biblioteka w TP (i nie tylko). Firma Moxa dołączała to kiedyś do swoich kart RS. Mam gdzieś gotowy sterownik pod Dos-a, obsługa coma jest banalna (sam podpina się pod przerwania, tworzy bufor, można założyć pułapkę na określony znak lub liczbę odczytanych danych,...full wypas). Obsługuje też porty z płyty gł. W międzyczasie...
A już tak blisko było, zapisuję do flasha poprawnie 84 strony pamięci, wysypuje mi się na siódmej stronie dla tego, że program szuka w buforze UARTu wystąpienia ciągu "+HTTPREAD:" a ten sam ciąg występuje również w treści danych binarnych jak i jest wysyłany przez moduł GSM. W jednej paczce danych odczytanych za pomocą HTTPREAD dostaję 2 razy ten sam...
cykl maszynowy 0.5us to zdecydowanie za dużo....Z dokladnoscia 1us procek bedzie miał 0.5us czasu na odczytanie danych z portu i wpisanie do bufora = technicznie niemożliwe. Nie wiem jak to jest w 8051 ale te procki są CISC i robią jeden rozkaz w wielu cyklach maszynowych.... Zastosuj SZYBKI procesor, jesli to do zastosowań domowych to użyj AVRa podkręconego...
Uporządkuj kod, numeracja przycisków i led jest pomieszana dla mnie, patrzącego z boku. Domyślam się że Ty już masz to tak zafiksowane, że nie ma innej możliwości. Przede wszystkim zacznij porządkowanie od "if (radio.available()) ", nie może być dwa razy w pętli głównej a tym bardziej zagnieżdżone, bo jak raz coś odczytasz to potem już tego nie ma,...
O to moje dywagacje teoretyczne . http://obrazki.elektroda.pl/3503754300_1... Taktujemy CPLD na 100 MHz. Pamięć o dostępie mniejszym niż 10 ns. W jednym cyklu następuje odczyta i później zatrzask, dostajemy 3 cykle na różne działania w tle. Zapis i odczyt można zrobić w dwóch cyklach. Prosty rejestr po SPI + FSM do ładowania adresu i...
Najbardziej efektywnie jest użyć jednej kości SDRAM podłączonej do MCU zawierającego zintegrowany kontroler pamięci SDRAM. Weź pod uwagę, że potrzebujesz 12 bitów adresu wiersza i 10 bitów adresu kolumny. Atmega jest 8-bitowa, więc adres wiersza wystawiasz w 2 operacjach (8+4, 6+6, 4+8, czy jak tam chcesz), a to trwa. Zapisanie pierwszego rejestru adresowego...
Witajcie Mam taką małą zagłowostkę, próbuję podpiąć do procesora AVR by odczytac 16 bitową magistralę danych ale o nietypowej właściwości, dane na każdej lini mają postać 2+ i -2V względem masy, przy czym każdy impuls ujemny jest powtórką bitu dodatniego. Potrzebuję zatem odczytywać tylko dodatnie połówki... i uwaga, magistrala jest bardzo słaba prądowo,...
No, coś mi się wydaje, że jednak może nie do końca rozumiesz właśnie to wszystko i stąd takie podajęcie. Co to w ogóle dla ciebie znaczy, że: Bo niby po czym innym program ma poznać czy odczytane dane pasują w tym określonym miejscu ? .... toż twoja próba obsługi tego przerwania - pokazuje, że w 1000% mógłbyś wykorzystać mechanizm z Bytematch Ustawiłbys...
tmf napisał: Poza tym MCU musi FT221 odpytywać, zeby sprawdzić czy nie nadeszły jakieś dane, odpada więc automatyczne wybudzanie. Nie zapoznałeś się z nota FT201 i piszesz nieprawdę. Może jednak ty się najpierw zapoznaj. Z noty, str. 15 "The FT201X device shall only be able to operate as a slave" - niby więc jak FT20x miałby poinformować MCU, że są...
Sytuacja opanowana. Import danych z pliku zapisanego binarnie oraz rozbicie tych danych na poszczególne bity zrealizowałem na podstawie takich o to funkcji: char*buffer; //wskaznik do bufora z odczytanymi danymi longlSize; //dlugosc odczytanego pliku int *bity; //wskaznik do tablicy z bitami void odczyt(void) { FILE * pFile; size_t result;...
AVE... BlackPill V2 ma częstotliwość zegara 100MHz - magia PLL. Bez problemu można zatem generować zmiany stanu z czasem 10ns. "Czarna piguła" ma 128kB pamięci SRAM, więc możemy połowę dać jako bufor danych, i użyć DMA do automatycznego przesyłania go na GPIO. Jak się sprężyć z kodem, to można prawie cały RAM przeznaczyć na bufor, a 512kB pamięci Flash...
No to zaopatrz się w proca który ma przynajmniej 2KB RAM. Co prawda powinno się dać upchnąć FATa na procu z 1KB RAM, ale wtedy jest tylko jeden bufor danych do zapisu/odczytu, co strasznie to spowalnia, i ogranicza wszystko do otwarcia tylko 1 pliku.
Witam Program odczytuje wiadomości wysłane przez RS232. Korzystam z komponentu ComPort. Chce przy jednym evencie OnRxChar odczytywać jedną wiadomość Dodano po 2 niestety kozystając z count zgarne cały bufor... a ja chce tylko te 20 bajtów danych w tym momencie.
Cześć, Zaczynam prace nad budową wibrometru. Zamierzam wykorzystać któryś z uK ATmega oraz układ ADXL345 lub bardziej wypasiony LSM9DS0, na przykład taki: https://www.adafruit.com/product/2021 Wibrometr ma mieć dwie możliwości przesyłu danych na zewnątrz. Pierwszy to komunikacja bezprzewodowa w czasie pseudo-rzeczywistym (opóźnienie bez większego znaczenia)....
No, z przerwaniami to już masz program wykonujący wiele zadań jednocześnie - nie wiadomo, w którym momencie w gpsread starą jego wartość do 128 - a więc w następnym przerwaniu możesz wpisać do gpsread[128] - poza zakresem? A lepiej pisać if (++wpp >= sizeof gpsread) wpp = 0; - jak potem zmienisz rozmiar gpsread, to nadal będzie dobrze.
Dla mnie to kompletna abstrakcja. Według Twojego kodu, to najpierw odczytujesz 1 bajt danych. Później od razu chcesz odczytać drugi bajt danych, którego najprawdopodobniej jeszcze nie ma (komputer jest szybszy niż transmisja z prędkością około 30kb/s). Jeżeli chcesz uzyskać taki efekt, to przy sprawdzeniu wartości == 'x' ustaw sobie flagę, że już odczytałeś...
Najprościej zrobić sobie stały bufor, tablica char, tak poukładany by każda pozycja tablicy odpowiadała stałej wartości, np. pod text[10] zawsze jedności lat, pod kolejną dziesiątki miesięcy, itd. reszta danych. Wystarczy wtedy wczytać linię tekstu do drugiego bufora i porównać komórki pamięci, co trzeba zmodyfikować w pierwszej i zapisać do pliku.
Czy wysyłanie nie wygląda przypadkiem tak, że urządzenie wrzuca coś do bufora i ustawia flagę że coś tam jest, i jeśli PC będzie chciał odczytać to wtedy generowane jest zdarzenie i wysyłane dane? Że nie da się np. najpierw żądać danych a potem ich generować?
Witam, Dzieki za załacznik, przydał sie bardzo. Jednak dalej mam problem z zapisem danych z bufora do strony jak i odczytem tychże danych ze strony do bufora, mimo ze stosuje fukcje z załącznika. Moze ktos wie jak to zrobic by wszystko smigało poprawnie? Bardzo prosze o pomoc, kombinuje juz na wszystkie spospoby - bez efektów:(. Dodam tylko, że zapis...
To napisz kilka procedur testowych, które dadzą pojęcie na czym polega niepoprawność danych - czy to jest powtarzalne, czy też losowe. Pewnie to zrobię, bo na etapie pracy nad sterownikiem do CF i portem BIOS-u CP/M-a (na systemie z 8080) przygotowałem sobie kilka procedur do printowania hexdumpów obszarów pamięci. Będę mógł więc przynajmniej sprawdzić...
Czy dobrym pomysłem byłoby podpięcie osobno nadajnika, oraz odczytanie wartości rejestru,który wysłał nadajnik?-wtedy mógłbym wyeliminować błąd sprzętowy.Czy mogę do tego użyć funkcji,które już zostały użyte w bibliotekach ? ( proszę o wskazanie których) - jestem początkujący, co nieco c rozumiem. to pierwszy tak poważny projekt z którym się mierze....
A więc tak: Na nagłówek pliku składa się 32B (pomijamy tutaj długie nazwy). Sektor składa się z 512B (czyli mamy 16 plików/katalogów). 1. Odczytujemy 512B do bufora (sektor Root_directory). 2. Dzielimy te 512B na 16 paczek po 32B. 3. W każdej paczce bit po bicie sprawdzamy czy są one równoważne z naszą nazwą pliku/katalogu. Tzn. pierwszy bajt w paczce...
Nie wiem na czym polega problem kolegi. Poza tym o porcie RS232 mówimy tylko po stronie komputera, koledze chodzi jak mniemam o to, że z komputera są wysyłane dane do procesora i ten powinien je odbierać. Zatem jak kolega napisał po pierwsze należy użyć bufora (dostępny z poziomu BASCOM - poszukaj w helpie) a potem w danym miejscu programu sprawdzać...
No to widocznie miałem interesujący remap w czasie kontaktu z tym softem skoro dane wyjechały. Dzięki za link. Faktycznie MHDD jest zecydowanie szybsze a i ( też z własnego doświadczenia to wiem ) efekt działania lepszy. Poza tym mniejsza męka dla dysku i Użyszkodnika jeżeli chodzi o czas pracy. P. Faktycznie kolega , taki efekt moze byc nawet jezeli...
A czy nie da się tego zrobić prościej? Prościej by było użyć filozofii bufora kołowego. Czyli tablicy elementów (u Ciebie sześciobajtowych) i dwóch wskaźników (nie koniecznie rozumianych jako adres fizyczny, bo może być to indeks w tablicy) "głowy" i "ogona" danych do wysyłki. Wtedy w operacjach zapisu i odczytu z bufora odpowiednio interpretujesz...
Może niefortunnie nazwałem obsługę zdarzenia watkiem, ale wydaje mi się, że zasadniczo obsługa UART jest quasi wątkiem. Dane w buforze odbioru buforowane są niezaleznie od działania programu. Między wysłaniem żądania przesłania danych do urządzenia, ich przysłaniem i odczytaniem może zostać zrealizowanych wiele kolejnych instrukcji w procedurze, w której...
nie wiem ile danych chcesz przesyłać i jakie budujesz urządzenie, ale czy konieczny jest dodatkowy procek zarządzający komunikacją? Nie lepiej w przerwaniu odbiorczym ładować sobie bufor a odczytywać go pod koniec głównego procesu? pzdr.
pozostaje tylko ustawienie tych samych prędkości po stronie PC i płytki Nie no, proszę Cię. Aż taki tępy nie jestem jak autor podlinkowanego tematu. Jest sobie testowo taki kod; Serial.begin(9600) <-- to jest w setupie programu // W pętli głównej// if(Serial.available()) { // jeśli są dane w buforze char dane = Serial.read(); // odczyt uart do zmiennej...
Nie spotkałem się z takim zachowaniem. Przesunięcie o 0x80 to ustawienie najważniejszego bitu.. może coś nie tak z reprezentacją danych (bufory są bez znaku..?). Ale to raczej mało prawdopodobne. Bascoma nie używałem, więc wolę się nie wypowiadać. Teraz to w sumie nie wiadomo, czy błędnie działa zapis, czy odczyt. Jeśli masz dostęp do czytnika kart...
Ten krótki program, to będzie praktycznie wszystko. Rozumiem, popatrzyłem w różne bootoladery i faktycznie są obudowane całą masą różnych zabezpieczeń/ komunikacji. Czyli wychodzi na to, że wystarczy dosłownie kilka linii by zapisać nową zawartość do flasha. Załóżmy więc, że zaczynam od samego początku, korzystając z książki Tomka: https://obrazki.elektroda.pl/3648619400_...
Cześć, pierwszy raz piszę tutaj. Mam czujnik obecności kupiony na AliExpress przez pomyłkę (przynęta na kliknięcie?) i chciałbym go sflashować, ale jest to bardziej testowe uruchomienie dla czegoś innego, ponieważ mam już kilka z nich w Zigbee. Jakiś czas temu sflashowałem kilka 8266 i było to całkiem łatwe, ale to wygląda na bardziej zniechęcające...
Witam wszystkich. Troche sie pobawiłem przykładowymi programami do alsy i udało mi się skrobnąć coś co odtwarza standardowego wav-a (44100 stereo). Kod poniżej. tomaszoo problem tkwii w użyciu funkcji: snd_pcm_writei(handle, buffer, frames); ostatni argument to nie liczba bajtów jaką zapisuje sie do urządzenia, ale liczba ramek. Na razie za bardzo nie...
Znalazłem coś takiego, czy oto chodziło ?? Config Serialin = Buffered , Size = 32 , Bytematch = 13 '... If Flaga = 1 Then Input String_var Reset Flaga End If '... Serial0charmatch: Set Flaga 'można odczytać znaki z bufora poprzez np. Input String_var Return
odczytanie danych dysku odczytanie danych zaszyfrowanego dysku odczytanie spalony
parametr maszynowy inspekcja samochodzie bezpiecznik awaryjnych
Rezystor do gasika MOSFET – jaki typ wybrać? SMD pulse, metal-oxide, surge-proof, niska indukcyjność Skuter 2T, bezpiecznik spalony – czy odpali ze stacyjki? DC-CDI, AC-CDI, rozrusznik