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


e14-440 и NumberOfWordsToPass

Вы не вошли.

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

Антон
23.03.2008 17:51:23
#1

Гость

e14-440 и NumberOfWordsToPass

Если в примере ReadWrite выставить DataStep(он же NumberOfWordsToPass)меньше чем 32*63 вылетает ошибка:
First-chance exception at 0x00436302 in ReadWrite.exe: 0xC0000005: Access violation writing location 0x003b7000.
В строке:
    // формируем данные для целого FIFO буфера ЦАП в модуле
    CurrentTime = 0.0;
    for(i = 0; i < (DWORD)dp.DacFifoLength; i++)
    {
        WriteBuffer[i] = Round(SignalAmplitude*sin(2.0*M_PI*SignalFrequency*CurrentTime));

Хотя в хэлпе написано что "Величина параметра NumberOfWordsToPass должна находиться в диапазоне от 32 до (1024*1024), а также быть кратной 32"

Подскажите с чем это связано и как эту ошибку обойти(мне нужно меньшее количесвто отсчётов в блоке).

Спасибо

Антон
23.03.2008 17:53:22
#2

Гость

Re: e14-440 и NumberOfWordsToPass

Да, версия 14-440D. Ошибка как раз в потоке цапа. Но почему?

Антон
23.03.2008 18:06:09
#3

Гость

Re: e14-440 и NumberOfWordsToPass

Да и ещё вопрос:
считываю с 4 каналов(с помощью ReadWrite) и получаю такие данные:
ER=-22  ER=1176  ER=2194  ER=0
ER=-25  ER=1902  ER=2194  ER=0
ER=-11  ER=1902  ER=2920  ER=0
ER=31   ER=1176  ER=0     ER=0
ER=38   ER=0     ER=1176  ER=0
ER=33   ER=2920  ER=1902  ER=0
ER=11   ER=2920  ER=1902  ER=0
ER=-3   ER=0     ER=1176  ER=0
ER=-21  ER=1176  ER=0     ER=0
ER=-27  ER=1902  ER=2920  ER=0
ER=-10  ER=1902  ER=2194  ER=0
ER=31   ER=1176  ER=2194  ER=0
ER=38   ER=0     ER=2920  ER=0
ER=33   ER=2920  ER=0     ER=0
ER=10   ER=2194  ER=1176  ER=0
ER=-3   ER=2194  ER=1902  ER=0
ER=-21  ER=2920  ER=1902  ER=0
ER=-25  ER=0     ER=1176  ER=0
ER=-10  ER=1176  ER=0     ER=0
ER=29   ER=14    ER=-515  ER=1902
Это похоже на правду или тут что-то не то? первый канал вроде нормально, но остальные как-то подозрительно.

24.03.2008 12:01:53
#4

Сотрудник "Л Кард"
Здесь с 24.04.2014
Сообщений: 1,495

Re: e14-440 и NumberOfWordsToPass

1. В данном  конкретном примере под буфер WriteBuffer выделяется память размером 2*DataStep. И эта величина не должна быть меньше размера FIFO буфера ЦАП dp.DacFifoLength. Иначе произойдет разрушение памяти. Что и происходит, когда Вы переменную DataStep приравниваете к 32*63.
2. Вы подключите к модулю хоть какой-нибудь сигнал, напрмер синус. Тогда можно будет однозначно оценить работоспособность входного тракта модуля.

Антон
24.03.2008 14:46:13
#5

Гость

Re: e14-440 и NumberOfWordsToPass

Спасибо.

А вот ещё вопрос, бегло почитав документацию правильно ли я понял, что задав количество отсчётов(NumberOfWordsToPass)и частоту АЦП, мы будем ждать вемя = Количество отсчётов/частота АЦП + время задержки?

24.03.2008 17:18:36
#6

Сотрудник "Л Кард"
Здесь с 24.04.2014
Сообщений: 1,495

Re: e14-440 и NumberOfWordsToPass

Антон
25.03.2008 09:40:47
#7

Гость

Re: e14-440 и NumberOfWordsToPass

ммм. сколько нюансов.
Спасибо.
А как можно считать фиксированное количество отсчётов(с определённой частотой АЦП), но не кратное 32?
Можно конечно увеличить частоту в 32 раза и увечить количество отсчётов в 32 раза(что бы время измерения осталось то же) и запоминать каждый 32 отсчёт, но это как-то неправильно.

Как можно более рационально выкрутится? может не используя стандартные ReadData()?