Циклическая запись/воспроизведение в панорамном FFT анализаторе
22.02.2022
Сергій - UR3QJ
411
Додаткова інформація: raxp2.blogspot.com (по запрошенню)
Всі питання на пошту [email protected]
Циклическая непрерывная запись (например выборок с АЦП тюнера SDR) необходима в случае ограниченности ресурсов железа или при необходимости отслеживания некоторого события (сигнала) на ограниченном временном участке, когда нет необходимости вести архивацию на протяжении всего времени работы и заранее неизвестно время наступления этого события.
Демо-пример:
В полнофункциональном приложении:
Самое простое и логичное - использовать последовательную запись плавающим окном длиной равной размерности получаемого буфера данных (сэмпла) на фиксированном участке памяти. При достижении границы памяти, перемещать указатель для записи на начало и продолжать запись, тем самым затирая самые старые (ранее записанные) данные. По сути запись по кругу. В случае ограниченности RAM можно использовать файловые потоки через класс TFileStream и писать сразу на винчестер в режиме немонопольного доступа, имея для работы сторонних приложений готовый файл. Если же поток принимаемых данных в единицу времени слишком велик, а быстродействие и ресурсы винчестера ограничены, то следует воспользоваться записью непосредственно в RAM, используя класс TMemoryStream.
Детальнее

Демо-пример:
В полнофункциональном приложении:
Самое простое и логичное - использовать последовательную запись плавающим окном длиной равной размерности получаемого буфера данных (сэмпла) на фиксированном участке памяти. При достижении границы памяти, перемещать указатель для записи на начало и продолжать запись, тем самым затирая самые старые (ранее записанные) данные. По сути запись по кругу. В случае ограниченности RAM можно использовать файловые потоки через класс TFileStream и писать сразу на винчестер в режиме немонопольного доступа, имея для работы сторонних приложений готовый файл. Если же поток принимаемых данных в единицу времени слишком велик, а быстродействие и ресурсы винчестера ограничены, то следует воспользоваться записью непосредственно в RAM, используя класс TMemoryStream.
Детальнее

