Меню

+7 (495) 785-95-25
sale@lcard.ru
sale@lcard.ru
|
||||
|
Работа с библиотекой lcomp в linuxДоброго времени суток. Сейчас пишем модуль для работы с платой L791 в составе нашего ПО. Не могли бы Вы кинуть ссылку или привести тут небольшой пример на С/С++ записи данных со всех 16 каналов платы (данные могут прийти на несколько каналов одновременно). В примере test.cpp производится запись с 4-х каналов и как я понял, одновременно. Когда я просматриваю записанный файл в L-Graph, то я вижу все 4 канала и могу отключить те, которые мне не нужны. Но как писать данные в отдельные файлы (1 канал - 1 файл)? |
|||
|
||||
|
Re: Работа с библиотекой lcomp в linuxс 4 до 16 понятно как расширить. массив Chn до 16 заполнить и NCh 16 поставить. дальше поток всегда идет общий из кадров по 16 отсчетов. разбирать на отдельные каналы руками 0 16 32 отсчеты в один массив 1 17 33 в другой итд |
|||
|
||||
|
Re: Работа с библиотекой lcomp в linuxТ.е. я получаю кадр с платы размера N. Этот кадр содержит данные со всех 16 каналов? Мне нужно отрезать куски по сдвигу? Лучше какой-нибудь простенький пример разбора. |
|||
|
||||
|
Re: Работа с библиотекой lcomp в linuxА, кажется понял. С платы идет поток из кадров одного размера в количестве NCh. Соответственно, 1 кадр = Chn[1], 2 = Chn[2] и т.д. Т.е. 0,16,32,64 и т.д. кадр - это 1 канал. А могу ли я узнать, на какой канал или каналы пришли данные? |
|||
|
||||
|
Re: Работа с библиотекой lcomp в linuxкак запустили сбор так данные на все и приходят. плате все равно что там за значения. шум, 0 или сигнал... данные идут 0123012301230123... если 4 канала. если это рассматривать как одномерный массив, то 0 4 8 итд позиции выдернутые в отдельный массив дадут непрерывный поток данных с 0 канала. для других каналов аналогично. |
|||
|
||||
|
Re: Работа с библиотекой lcomp в linuxНу как кадр разбирать я понял. А можно как-то плате установить минимальный уровень входного сигнала через библиотеку? Я пока что плохо представляю, как мне в файл не писать шумы с не используемых каналов. По идее, запись с платы должна включаться при поступлении данных на какие-либо каналы. А тут получается, что у меня постоянно будут приходить данные в виде шумов по всем портам... Как-то неправильно... |
|||
|
||||
|
Re: Работа с библиотекой lcomp в linuxнет. такого нет у этой платы. запись идет всегда по всем каналам. можете анализировать данные в программе и принимать решение. |
|||
|
||||
|
Re: Работа с библиотекой lcomp в linuxKonstantin. По поводу "неправильности".
|
|||
|
||||
|
Re: Работа с библиотекой lcomp в linuxL-502 безусловно интересна, если мы перейдем на платформу с PCI-E обязательно будем использовать ее... |
|||
|
||||
|
Re: Работа с библиотекой lcomp в linuxPoul, вот кусок потоковой функции из примера test.cpp halfbuffer =IrqStep*pages/2;
for(i=0;i<multi;i++)
Тут p - это указатель на начало кадра, а halfbuffer - это размер кадра? Если я правильно все понял, то в Вашем примере, если указать количество каналов 16, то данные будут писаться со всех этих каналов. А разбор кадров по каналам можно делать прямо тут по итерациям (0-я итерация - 1-й канал, 1-я - 2-й и т.д.) Поправьте меня, если я ошибаюсь... |
|||
|
||||
|
Re: Работа с библиотекой lcomp в linuxкадры они маленькие...16 отсчетов. а p указатель на начало буфера куда эти кадры попадают. тут без разбора ожидается заполнение половины буфера этими кадрами и потом запись на диск. и к другой половине... разбор можно и тут устроить, но надо иметь ввиду скорости сбора и все посчитать... |
|||
|
||||
|
Re: Работа с библиотекой lcomp в linuxИсходя из того, что открывая файл test.dat в программе LGraph она корректно определяет данные по указанному мной количеству каналов, предположу, что размер кадра является величиной фиксированной. Так какой же у него размер? Или, если я ошибаюсь, то как мне его вычислить? Я планирую сразу разбирать кольцевой буфер на 16 канальных буферов, а уже потом, по заполнению этих 16 буферов, производить запись в файлы... Подскажите, возможно ли осуществить мой вариант? |
|||
|
||||
|
Re: Работа с библиотекой lcomp в linuxкадр равен числу каналов. буфер один общий. если разбивать до в другие буфера ручками... |
|||
|
||||
|
Re: Работа с библиотекой lcomp в linuxТ.Е. 16 бит или 2 байта ? Я прав? |
|||
|
||||
|
Re: Работа с библиотекой lcomp в linuxЯ имел ввиду для NCh = 16... И сразу еще один вопрос. Возможно ли на плате L791 реализовать управление внешней сигнализацией? К примеру, на микрофоне, подключенном к АЦП включать лампочку, если данные перестали поступать. Если такая возможность существует, то где я могу о ней почитать? |
|||
|
||||
|
Re: Работа с библиотекой lcomp в linuxесли 16 каналов, то отсчет там 32бита *16 те кадр 64 байта.
|
|||
|
||||
|
Re: Работа с библиотекой lcomp в linuxKonstantin, внешней сигнализацией можно управлять на верхнем программном уровне. Асинхронный вывод на цифровые линии в L-791 имеется.
|
|||
|
||||
|
Re: Работа с библиотекой lcomp в linuxPoul, т.е. на каждый канал приходится по 32 бита или 4 байта вне зависимости от указанного количества каналов NCh? Меняется только размер кадра в зависимости от количества каналов. Еще не совсем понял про сам кольцевой буфер (*р - в Вашем примере test.cpp). Его размер фиксированный или также зависит от количества каналов NCh? |
|||
|
||||
|
Re: Работа с библиотекой lcomp в linuxда.да.для 791 фиксированный. |
|||
|
||||
|
Re: Работа с библиотекой lcomp в linuxPoul, подскажите, в Вашем примере переменная синхронизации *pp используется для определения уровня наполнения буфера. При этом используется флаг I_ADC_PCI_COUNT_L791. Что он означает и какие еще можно использовать флаги с этой переменной? И еще вопрос, что вообще из себя представляет эта переменная? Можно ли при помощи нее забирать данные из кадра и если да, то каким образом? |
|||
|
||||
|
Re: Работа с библиотекой lcomp в linuxpp это массив где все регистры отмаплены у платы. I_ADC_PCI_COUNT_L791 индекс в массиве для регистра ADC_PCI_COUNT_L791. |
|||
|
||||
|
Re: Работа с библиотекой lcomp в linuxТ.е. переменная pp[I_ADC_PCI_COUNT_L791] показывает, сколько отсчетов считано в настоящий момент? А можно через нее забирать данные с конкретного отсчеда (например 0, 16, 32 и т.д. для 1 канала)? |
|||
|
||||
|
Re: Работа с библиотекой lcomp в linuxесть I_ADC_BUFFER. как плата работает читайте описание, но работа с регистрами это однозначно медленно будет. |
|||
|
||||
|
Re: Работа с библиотекой lcomp в linuxPoul. Сделал запись по каналам... Вроде работает, но есть некоторая проблема. Пытаюсь из сырого файла сделать wav, но не пойму какие параметры сигнала АЦП взять для заголовка. Например sample rate можно брать из dRate платы структуры ADC_PAR_1, битность 32 бит/сек (32 бит на канал) или я не правильно посчитал? Наверняка кто-то уже сталкивался с такой проблемой... Может есть какой-нибудь пример пересчета? |
|||
|
||||
|
Re: Работа с библиотекой lcomp в linuxdRate это частота в кадре. частота кадров 1/dKadr.
|