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


E14-140 и ЛИНУКС!!!

Вы не вошли.

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

Sergo
08.08.2008 16:19:42
#26

Гость

Re: E14-140 и ЛИНУКС!!!

Добрый день!
Будьте добры обьясните пожалуйста как правильно работать с буфером FIFO.

Используя E14-140, под управлением lcomp_ALPHA 7
организую сбор данных с четырех каналов. В цикле считываю в stdout весь буфер следующим образом


size=10000000;
pI->RequestBufferStream(&size);
cout << " alloc size " <<  size << endl;

adcPar.t1.s_Type = L_ADC_PARAM;
adcPar.t1.AutoInit = 1;
adcPar.t1.dRate = 4.0;
adcPar.t1.dKadr = 0.0;
adcPar.t1.dScale = 0;
adcPar.t1.SynchroType = 0;
adcPar.t1.SynchroSensitivity = 0;
adcPar.t1.SynchroMode = 0;
adcPar.t1.AdChannel = 0;
adcPar.t1.AdPorog = 0;
adcPar.t1.NCh = 4;
adcPar.t1.Chn[0] = 0x0;
adcPar.t1.Chn[1] = 0x1;
adcPar.t1.Chn[2] = 0x2;
adcPar.t1.Chn[3] = 0x3;
adcPar.t1.FIFO = 4096;
adcPar.t1.IrqStep = 4096;
adcPar.t1.Pages = 32;
adcPar.t1.IrqEna = 1;
adcPar.t1.AdcEna = 1;

pI->FillDAQparameters(&adcPar.t1);
pI->SetParametersStream(&adcPar.t1, &size, (void **)&p, (void **)&pp,L_STREAM_ADC);

pI->EnableCorrection();
pI->InitStartLDevice();
pI->StartLDevice();


pI->StopLDevice();

for (int i=0; i<=size; i++)
    cout <<  p[i] << "---" << pp[i] << endl;

....

В связи с этим два вопроса:

1) Правильно ли такое решение задачи сбора с 4-х каналов и как правильно собирать данные, внутри  pI->StartLDevice(); ... pI->StopLDevice(); либо после

2) Хочу разбить выходной поток данных на четыре столбца (по каналу на каждый) Не могу сообразить как используя переменную синхронизации pp получить значение первого отсчета 1-го канала, первого отсчета 2-го канала, ... второго отсчета 1-го канала, второго отсчета 2-го канала и тд

11.08.2008 09:17:19
#27

Сотрудник "Л Кард"
Откуда: Москва
Здесь с 23.04.2014
Сообщений: 3,727

Re: E14-140 и ЛИНУКС!!!

1 зависит от задач. можно старт-задержка-стоп и вычитать данные. можно внутри старт-стопа в цикле, или отдельным потоком...
2 оно там и так по столбцам (ну или строкам) - там лежат кадр за кадром 1234 1234 1234....

Arcady
02.12.2008 05:32:44
#28

Гость

Re: E14-140 и ЛИНУКС!!!

Linux. Баг с выделением памяти < 4096:

Если буфер выделить < 4096:
--------------------------
size=512;
pI->RequestBufferStream(&size, L_STREAM_ADC);
...
pI->FillDAQparameters(&adcPar.t1);

pI->SetParametersStream(&adcPar.t1, &size, (void **)&p, (void **)&pp, L_STREAM_ADC);
...
--------------------------

то АЦП будет складывать данные куда угодно, только не в этот буфер. Более того, указатель адреса буфера будет указывать в странное место. У меня даже вывод в stdout попал в этот буфер.

02.12.2008 11:06:51
#29

Сотрудник "Л Кард"
Откуда: Москва
Здесь с 23.04.2014
Сообщений: 3,727

Re: E14-140 и ЛИНУКС!!!

а все остальные параметры какие были?

Аркадий
22.01.2009 07:51:10
#30

Гость

Re: E14-140 и ЛИНУКС!!!

Сейчас уже не скажу.
Нашёл этот сюрприз, исправил программу и пока больше не заморачивался.