Страница 1 из 1

Буфер памяти для накопления массива

Добавлено: 18 сен 2018, 16:52
Denis29
Всем добрый день! Подскажите пожалуйста с решением след. задачи: в цикле при помощи Visa считываются данные с внешнего устройства с частотой 320 Гц, получается непрерывный поток значений сигнала. Необходимо накапливать данные значения в массив размером 320 точек, и далее уже выводить этот массив на график, обрабатывать и т.д. То есть создать некий буфер данных, который будет перезаписываться. Само накопление в массиве создать удалось, но он движется от точки к точке, а не порциями. нужно накапливать порцию и выдавать, накапливать и выдавать, с частотой раз в секунду. Для пояснения прикладываю рисунок.

Re: Буфер памяти для накопления массива

Добавлено: 18 сен 2018, 17:52
Borjomy_1
Палитра Signal Processing/Point By Point/Other Function PtByPt/Data Queue PtByPt.vi
А принимать значение полного буфера один раз в 320 замеров. Размер буфера может быть больше, но использовать для вычислений последние 320 значений. Но в реальности такая схема работать не будет. И вот почему: прием несинхронный, это раз и период сигнала принципиально не будет совпадать 320 точками. Т.е уже на втором периоде фаза поплывет. И второе, поиск начала периода это отдельная задача.

Re: Буфер памяти для накопления массива

Добавлено: 19 сен 2018, 17:41
Denis29
Borjomy_1, Большое спасибо! Все заработало, массив выдается стабильно размером 320 точек и фаза вроде тоже не плывет, проверил путем склейки выдаваемых массивов в первоначальный массив. Единственное я не понял зачем нужен вывод "eliminated element" в блоке Data Queue. То есть получается он первую точку в очереди убирает?

Re: Буфер памяти для накопления массива

Добавлено: 20 сен 2018, 15:44
Borjomy_1
Denis29, функция универсальная, поэтому сделано на все варианты. Кому-то может и понадобится.