Меню
+7 (495) 785-95-25
sale@lcard.ru
sale@lcard.ru
Страницы 1
СПАСИБО))) Вопрос решен)
Добрый день. Подскажите,пожалуйста как осуществляется работа плагина.
У нас есть d_info->input_kadrs_min = 100; т. е. обрабатываем за один раз не менее 100 кадров. А что происходит с данными и переменными,когда мы обрабатываем уже не первый раз?
В расчетной функции PluginDataExchange происходит расчет. В этом расчете мы используем массив из 40 элементов,который изменяется в зависимости от обрабатываемого элемента. этот массив состоит из предшествующих элементов. При первой обработки этих 100 элементов он заполниться. а что будет при последующих обработках. или он изначально будет отталкиваться от объявления и каждый раз обнулять его? Что необходимо сделать,чтобы массив pf_buf изменял свои значения так, будто мы один раз обрабатываем,т.е. цикл for вызавается один раз?
for (i = 0, n = data_str->n; i < n; i++)
{
pf_buf[i % 40] = ptr1[2 * i];
pf_temp_sum = 0;
for (int j = 0; j < 40; j++)
{
if (n_pf >= j) { pf_temp = pf_b_64[j] * pf_buf[n_pf - j]; }
else { pf_temp = pf_b_64[j] * pf_buf[pf_N + n_pf - j]; }
pf_temp_sum = pf_temp_sum + pf_temp;
}
ptr[5 * i] = pf_temp_sum / 64;
}
Добрый день. В данном коде происходит простое увеличение амплитуды на заданный коэффициент.
for (i = 0, nch = DataInfo.nch[device_index], n = data_str->n; i < n; i++, ptr += 1)
{ ptr1 += nch; ptr2 += nch;
*ptr = *ptr1 * DataInfo.parameters_int[PARM_KOEFFICIENT];
}
В данном случае получается все верно. http://prntscr.com/pga1qk
При этом, если мы пытаемся выполнить тоже действие, только поэлементно,
for (i = 0, nch = DataInfo.nch[device_index], n = data_str->n; i < n; i++, ptr += 1)
{ ptr1 += nch;
ptr2 += nch;
*ptr = *&ptr1[2*i+nch] * DataInfo.parameters_int[PARM_KOEFFICIENT];
}
то получаем неверный результат(рисунок 2). http://prntscr.com/pga578
Как правильно обращаться к конкретному элементу, чтобы выполнить это действие,чтобы получить такой же результат как и при работе с указателями?
А какую именно задачу Вы хотите решить с помощью своего плагина?
А вообще мне нужно работая с данными,которые сейчас иметь возможность обратиться к конкретному элементу,и к элементу, который был до этого элемента на 40 позиций ранее
А какую именно задачу Вы хотите решить с помощью своего плагина?
Задача состоит в обработке сигналов. В том числе и их фильтрации.
Например. Получили определенный объем данных, на выходе должны получить данные с поправочными коэффициентами.
int k[9]={1,7,0,5,...};
int pf_N = 40;
int n_pf = 0;
double *ptr1, *ptr;
int index1 = DataInfo.chan_kadr_offset[device_index][DataInfo.adc_channels[0]];
ptr1 = &data_str->data_to_plugin[index1]; // данные от ЛГрафа
ptr = &data_str->data_from_plugin[0]; //для ЛГрафа
while(1)
{
for(int i=0; i<9; i++)
{*ptr = *ptr1 * k;}
}
Если в такте допустим 110 элементов. то прогоняя каждый раз по 9 элементов у него останется 3 элемента.
http://www.lcard.ru/download/lgraph2_plugins.pdf это описание как писать плагины и что можно... я честно говоря плагины не пишу для L-Graph II и тонкостей не знаю.
К сожалению, там я не нашла ответа на этот вопрос.
Подскажите,пожалуйста. а мы можем обращаться не по кадрам,а поэлементно к данным в режиме реального времени( к каждому элементу кадра) для выполнения каких-либо математических операций? например выполнить пробег циклом For по каждому элементу?
Спасибо за ответ))
Подскажите, пожалуйста. У меня при запуске плагина xy_microsoft_visual_c++_2010_express формируется ошибка: "Ошибка плагина XY oscikkoscope (BCB 6.0): Слишком много точек". В связи с чем это может быть?
Добрый день. Подскажите, пожалуйста. В примерах, написанных на LabWindows вы используете функции из библиотеки CVIRTE. А при написании в среде разработки Visual Studio есть другие библиотеки, либо можно использовать эту? И если возможно пользоваться этой, то переменные каких типов принимает функция InitCVIRTE?
спасибо большое. Все заработало с опорной частотой 2МГц.
Я вызвала функцию X502_SetSyncMode(_hnd, X502_SYNC_EXTERNAL_MASTER) для ведомого. и установила 1,5МГц частоту. Теперь сигнал синхронный но с ведомого ЦАПа смещен на 2,5 микросекунды. будто бы раньше начинает работать.
А еще в руководстве написано, что для модуля E502 вывод на ЦАП при опорной частоте 1.5 МГц работает только для версии прошивки PLDA 1 или выше. а у нас получается,что версия прошивки 0.
Прошивки ПЛИС и Контроллера были изменены, но прошивка PLDA осталась равной 0.
При старте программы сигнал на выходах ведущего и ведомого ЦАПа строго синхронизированы, на втором цикле смещение где-то 1,5 микросекунды, на последующих циклах оно нарастает. Подаем один и тот же сигнал на все выходы ЦАП. Во втором модуле используется частота от внешнего мастера по разъему межмодульной синхронизации
if(dac == DAC_2)
if (err == X502_ERR_OK)
err = X502_SetSyncStartMode(_hnd, X502_SYNC_EXTERNAL_MASTER);
А есть возможность поочередного подключения Е20-10?
Добрый день. Подскажите,пожалуйста, возможно ли работать с 2 приборами Е20-10 через Labview? Может возможно программно поочередно открывать один из 2х АЦП и считывать данные?
Страницы 1
Адрес: 117105, Москва, Варшавское шоссе, д. 5, корп. 4, стр. 2
Многоканальный телефон:
+7 (495) 785-95-25
Отдел продаж: sale@lcard.ru
Техническая поддержка: support@lcard.ru
Время работы: с 9-00 до 19-00 мск