Российский производитель и разработчик сертифицированного измерительного оборудования с 1987 года

Форум

Вы не вошли.

 Поиск | Регистрация | Вход 

#2 Re: Техническая поддержка » написание плагина для LGraph2 » 14.10.2019 13:37:12

Добрый день. Подскажите,пожалуйста как осуществляется работа плагина. 
У нас есть 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;
}

#3 Re: Техническая поддержка » написание плагина для LGraph2 » 08.10.2019 08:57:50

Добрый день. В данном коде происходит простое увеличение амплитуды на заданный коэффициент.
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

Как правильно обращаться к конкретному элементу, чтобы выполнить это действие,чтобы получить такой же результат как и при работе с указателями?

#4 Re: Техническая поддержка » написание плагина для LGraph2 » 04.10.2019 16:55:01

Алексей L Card пишет:

А какую именно задачу Вы хотите решить с помощью своего плагина?

А вообще мне нужно работая с данными,которые сейчас иметь возможность обратиться к конкретному элементу,и к элементу, который был до этого элемента на 40 позиций ранее

#5 Re: Техническая поддержка » написание плагина для LGraph2 » 04.10.2019 13:59:46

Алексей L Card пишет:

А какую именно задачу Вы хотите решить с помощью своего плагина?

Задача состоит в обработке сигналов. В том числе и их фильтрации. 
Например. Получили определенный объем данных, на выходе должны получить данные с поправочными коэффициентами.
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 элемента.

#6 Re: Техническая поддержка » написание плагина для LGraph2 » 03.10.2019 15:31:29

Poul пишет:

http://www.lcard.ru/download/lgraph2_plugins.pdf это описание как писать плагины и что можно... я честно говоря плагины  не пишу для L-Graph II и тонкостей не знаю.

К сожалению, там я не нашла ответа на этот вопрос.

#7 Re: Техническая поддержка » написание плагина для LGraph2 » 03.10.2019 13:44:50

Подскажите,пожалуйста. а мы можем обращаться не по кадрам,а  поэлементно к данным в режиме реального времени( к каждому элементу кадра) для выполнения каких-либо математических операций?   например выполнить пробег циклом For по каждому элементу?

#8 Re: Техническая поддержка » написание плагина для LGraph2 » 02.10.2019 14:29:18

Спасибо за ответ))
Подскажите, пожалуйста. У меня при запуске плагина xy_microsoft_visual_c++_2010_express формируется ошибка: "Ошибка плагина XY oscikkoscope (BCB 6.0): Слишком много точек".  В связи с чем это может быть?

#9 Техническая поддержка » написание плагина для LGraph2 » 02.10.2019 10:57:38

Татьяна НИИИ
Ответов: 14

Добрый день. Подскажите, пожалуйста. В примерах, написанных на LabWindows вы используете функции из библиотеки CVIRTE.  А при написании в среде разработки Visual Studio есть другие библиотеки, либо можно использовать эту? И если возможно пользоваться этой, то переменные каких типов принимает функция InitCVIRTE?

#10 Re: Техническая поддержка » Е502 Синхронный вывод » 03.09.2018 14:39:12

спасибо большое. Все заработало с опорной частотой 2МГц.

#11 Re: Техническая поддержка » Е502 Синхронный вывод » 30.08.2018 14:36:20

Я вызвала функцию  X502_SetSyncMode(_hnd, X502_SYNC_EXTERNAL_MASTER) для ведомого. и установила 1,5МГц частоту. Теперь сигнал синхронный но с ведомого ЦАПа смещен на 2,5 микросекунды. будто бы раньше начинает работать.
А еще в руководстве написано, что для модуля E502 вывод на ЦАП при опорной частоте 1.5 МГц работает только для версии прошивки PLDA 1 или выше. а у нас получается,что версия прошивки 0.

#12 Re: Техническая поддержка » Е502 Синхронный вывод » 30.08.2018 13:33:46

Прошивки ПЛИС и Контроллера были изменены, но прошивка  PLDA осталась равной 0.
При старте программы сигнал на выходах ведущего и ведомого ЦАПа строго синхронизированы, на втором цикле смещение где-то 1,5 микросекунды, на последующих циклах оно нарастает. Подаем один и тот же сигнал на все выходы ЦАП. Во втором модуле используется частота от внешнего мастера по разъему межмодульной синхронизации
if(dac == DAC_2)
        if (err == X502_ERR_OK)
            err = X502_SetSyncStartMode(_hnd, X502_SYNC_EXTERNAL_MASTER);

#13 Re: Техническая поддержка » Е20-10 LabView » 17.05.2017 08:00:47

А есть возможность поочередного подключения Е20-10?

#14 Техническая поддержка » Е20-10 LabView » 15.05.2017 15:49:54

Татьяна НИИИ
Ответов: 3

Добрый день. Подскажите,пожалуйста, возможно ли работать с 2 приборами Е20-10 через Labview? Может возможно программно поочередно открывать один из 2х АЦП и считывать данные?

Контакты

Адрес: 117105, Москва, Варшавское шоссе, д. 5, корп. 4, стр. 2

Многоканальный телефон:
+7 (495) 785-95-25

Отдел продаж: sale@lcard.ru
Техническая поддержка: support@lcard.ru

Время работы: с 9-00 до 19-00 мск