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


Проблемы с записью данных платы L791

Вы не вошли.

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

27.05.2013 12:47:37
#26

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

Re: Проблемы с записью данных платы L791

учитывая что busmaster быстрый, то со скорость сбора данных в принципе. там возможны тонкости с размером FIFO.когда оно отлично от 1, то работает пакетная передача данных по busmaster.

Konstantin
27.05.2013 14:25:40
#27

Гость

Re: Проблемы с записью данных платы L791

Спасибо за ответ, Poul! Еще один вопрос. Надеюсь последний smile
Вы не могли бы дать некоторые пояснения по поводу следующего фрагмента кода из Вашего примера test.cpp:

void *thread_func791(void *arg)
{
int halfbuffer;
int fl2, fl1;
unsigned int *tmp, *tmp1;
int i;

FILE *fd;

   fd=fopen("test.dat","wb");

   halfbuffer =IrqStep*pages/2;
   fl1=fl2= (pp[I_ADC_PCI_COUNT_L791]<=halfbuffer) ? 0:1;

   for(i=0;i<multi;i++)
   {
      while(fl2==fl1) { fl2=(pp[I_ADC_PCI_COUNT_L791]<=halfbuffer) ? 0:1; usleep(10);}
      tmp1=(unsigned int *)p+(halfbuffer*fl1);
      fwrite(tmp1,1,halfbuffer*sizeof(int),fd);
//    ((IDaqLDevice *)arg)->PlataTest();
      fl1=(pp[I_ADC_PCI_COUNT_L791]<=halfbuffer)? 0:1;
   }

   fclose(fd);
   complete=1;
}

Тут halfbuffer = 262144, я прав? Если я правильно понял, размер буфера запрашивается в 131072 слов, т.е. 131072*2 байт. Если это так, тогда поясните вот это fwrite(tmp1,1,halfbuffer*sizeof(int),fd);
тут Вы пишете в файл 131072*4 байт. Почему? И сколько же у Вас в итоге размер буфера в БАЙТАХ?

27.05.2013 16:33:22
#28

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

Re: Проблемы с записью данных платы L791

размер всего буфера в отсчетах 128*1024, размер в байтах 128*4096. Память выделяется в словах те 128*2048. halfbuffer должен быть в отсчетах