Witam,
problem mam jak w temacie. Chodzi mi o obliczenie odpowiedniej przestrzeni pamięci, która posłuży jako bufor. Dajmy na to, że typ danych to SGL, do tego 4 kanały o próbkowaniu 1 kHz. Obecnie daję na oko, ale jak to wyznaczyć? Bo łatwo przesadzić i w jedną i drugą stronę.
Głownie problem pojawia się jak tworzę nowy plik do zapisu, bo wtedy dane zapełniają bufor, a jeśli okno będzie otwarte za długo, to bufor się przepełni i wyskoczy błąd.
Jak obliczyć potrzebną pamięć do obsługi bufora programu?
Re: Jak obliczyć potrzebną pamięć do obsługi bufora programu?
Zależy jaka duża historia jest potrzebna, powinno być to przez kogoś zdefiniowane inaczej na zdrowy rozsądek. Przy 1k o obecnych rozmiarach ramu to kilka minut spokojnie może być.
Zainicjalizuj sobie tablice na początku programu + jakis wskaznik ile danych jest wypełnione w buforze + rotowanie i nadpisywanie tych danych. Alternatywnie na szybko można zrobić fixed queue dla każdego kanału wtedy masz rotowania z głowy, tylko się trzeba pobawić z jakims lockowaniem żeby dane się nie poprzesuwały wzgledem siebie.
https://lavag.org/topic/3469-data-loggi ... ar-buffers
https://lavag.org/topic/20356-a-simple- ... fer-input/
Zainicjalizuj sobie tablice na początku programu + jakis wskaznik ile danych jest wypełnione w buforze + rotowanie i nadpisywanie tych danych. Alternatywnie na szybko można zrobić fixed queue dla każdego kanału wtedy masz rotowania z głowy, tylko się trzeba pobawić z jakims lockowaniem żeby dane się nie poprzesuwały wzgledem siebie.
https://lavag.org/topic/3469-data-loggi ... ar-buffers
https://lavag.org/topic/20356-a-simple- ... fer-input/
CLS - Certified LabVIEW Student
-
- Posty: 188
- Rejestracja: 03 lut 2012 15:09
- Wersja środowiska: LabVIEW 2017
- Lokalizacja: Warszawa
- Kontakt:
Re: Jak obliczyć potrzebną pamięć do obsługi bufora programu?
Na sztywno tak właśnie robię, że mam tablicę, mnożę ją z próbkowaniem i współczynnikiem. I właśnie ten współczynnik jest kluczowy, bo nie wiem jak go określić. Jednak chciałbym umieć określić ile moje tablice zajmą pamięci i nie dobierać go na chłopski rozum.
Natomiast nadpisywanie tablic raczej nie jest możliwe, gdy używam DAQmx, bo na początku trzeba zdefiniować ustawienia.
Natomiast nadpisywanie tablic raczej nie jest możliwe, gdy używam DAQmx, bo na początku trzeba zdefiniować ustawienia.
Re: Jak obliczyć potrzebną pamięć do obsługi bufora programu?
Ja daje taki bufor, by odpytywanie z DAQmx odbylo sie gdzies pomiedzy 100ms - 250ms. Wtedy watek chodzi zwawo i rzesko, timeout mozna ustawic na sekunde i Windows powinien sobie spokojnie radzic z tak zawrotnym tempem.
Nie uzaleznialbym tego od historii. Akumulacja danych przy obecnym RAM w osobnym buforze na potrzeby przetworzen to na ogol malutki problem.
Wiecej uwagi poswiecam tematowi, kiedy albo jest multum kanalow, albo kosmiczna predkosc probkowania, albo jakies bardzo specjalne obliczenia "w locie". Z reszta, w tym ostatnim przypadku i przy zapisie do plikow (szczegolnie TDMS), czesto zrzucam dane do innego dodatkowego bufora i np. zapisuje raz na 20 akwizycji zeby plik nie puchl od metadanych.
Nie uzaleznialbym tego od historii. Akumulacja danych przy obecnym RAM w osobnym buforze na potrzeby przetworzen to na ogol malutki problem.
Wiecej uwagi poswiecam tematowi, kiedy albo jest multum kanalow, albo kosmiczna predkosc probkowania, albo jakies bardzo specjalne obliczenia "w locie". Z reszta, w tym ostatnim przypadku i przy zapisie do plikow (szczegolnie TDMS), czesto zrzucam dane do innego dodatkowego bufora i np. zapisuje raz na 20 akwizycji zeby plik nie puchl od metadanych.