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


Работа с буфером

Вы не вошли.

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

Дмитрий
01.10.2004 15:01:08
#1

Гость

Работа с буфером

Прочитал в описании функции ReadData о переполнении буфера и появилось несколько вопросов:
1) Можно ли за один раз считать ReadData, скажем, 1 мегабайт данных? Что при этом произойдет? Функция сможет корректно заполнить мегабайтный буфер за один раз?
2) Если размер буфера в E-140 составляет 32 килобайта, то какого размера буфер желательно передавать функции ReadData, чтобы избежать переполнения? Каков его оптимальный размер?
3) Стоит ли вообще беспокоиться о переполнении буфера, если идет непрерывное считывание на P-IV на частоте 1 кГц при количестве каналов 32.
4) Правильно ли я просчитываю:
   1 кГц * 32 канала * 2 байта на отсчет = 64 Кбайта в секунду. Т. е. в секунду нужно считать 2 буфера.

kodorkin
01.10.2004 15:27:51
#2

Гость

Re: Работа с буфером

1. можно и мегабайт. ограничение поставлено в 2 мегабайта.
2. размер буфера для ReadData лучше всего определить исходя из эксперемента. все зависит от частоты дискретизации ацп и загруженности системы, но в общем случае желательно что бы буфера хватало на сбор данных в течении нескольких секунд.
3. все зависит от загрузки системы и размера буфера. см. пункт 2.
4. правильно, если под 1кГц подразумевается "частота одного канала" (поле ChannelRate в структуре ADC_PARS_E140).

Дмитрий
06.10.2004 17:52:45
#3

Гость

Re: Работа с буфером

Подскажите, пожалуйста, какими должны быть параметры AdcRate, InterKadrDelay и ChannelRate, чтобы при количестве активных каналов равном 16 за одну секунду передавалось 1000 кадров.

kodorkin
06.10.2004 20:01:29
#4

Гость

Re: Работа с буфером

видимо до документации руки не доходят...
печально....

например так:
1.
AdcRate=16.0           (кГц)
InterKadrDelay=0.0625  (мс)

2.
AdcRate=32.0           (кГц)
InterKadrDelay=0.53125 (мс)

ChannelRate - выходной параметр функции FILL_ADC_PARS()
после вызова FILL_ADC_PARS, должно быть ChannelRate=1.0 кГц

Дмитрий
07.10.2004 13:14:33
#5

Гость

Re: Работа с буфером

Документацию я читал, но все равно не могу понять следующего:
Если:
ChannelRate=1/(InterKadrDelay+(ChannelsQuantity-1)/AdcRate)
и при этом:
InterKadrDelay=k/AdcRate, где k - целое число в диапазоне (1..256)

тогда как будет выглядеть функция, позволяющая задавать любые ChannelRate. Получается, нужно сделать так:
ChannelRate=1/(k/AdcRate+(ChannelsQuantity-1)/AdcRate), а дальше делать перебор k от 1 до 256 до тех пор, пока ChannelRate не будет приблизительно равен нужному значению?

kodorkin
07.10.2004 15:37:27
#6

Гость

Re: Работа с буфером

именно так.

Дмитрий
07.10.2004 16:54:12
#7

Гость

Re: Работа с буфером

Спасибо за помощь!