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


FillDAQParameters

Вы не вошли.

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

Murad
28.04.2007 08:29:19
#1

Гость

FillDAQParameters

Я использую плату L-791. Написал:

IDaqLDevice* pI;
ADC_PAR streamParameters;
USHORT Channels[128];

ULONG size;
ULONG *usedSize, *Data, *Sync;

CREATEFUNCPTR CreateInstance;

ULONG CallCreateInstance(char* name)
{
   HINSTANCE hComponent = ::LoadLibrary(name);
   if(hComponent==NULL)
   {
      return 0;
   }

   CreateInstance = (CREATEFUNCPTR)::GetProcAddress(hComponent,"CreateInstance");
   if(CreateInstance==NULL)
   {
      return 0;
   }
   return 1;
}

GUID iid = {0x32bb8320, 0xb41b,0x11cf, 0xa6, 0xbb, 0x00, 0x80, 0xc7, 0xb2, 0xd6, 0x82};

//-- -------------------------------------------------------------------------
__fastcall TformMain::TformMain(TComponent* Owner)
        : TForm(Owner)
{

                UINT i;
        ULONG slot = 0;
 
   
   CallCreateInstance("lcomp.dll");
   LUnknown* pIUnknown = CreateInstance(slot);
     
   HRESULT hr = pIUnknown->QueryInterface(iid,(void**)&pI);

   if(!SUCCEEDED(hr)) MessageBox(this->Handle,"QueryInterface error","",MB_OK);
 
   pIUnknown->Release();
 
   if (pI->OpenLDevice()==INVALID_HANDLE_VALUE) MessageBox(this->Handle,"OpenDevice error","",MB_OK);

   for (int i = 0; i<128; i++) Channels[i]=0;
   Channels[0]=96;//0x0
   Channels[1]=97;
   Channels[2]=98;
   Channels[3]=99;
   Channels[4]=100;
   Channels[5]=101;
   Channels[6]=102;
   Channels[7]=0x18;//11000


   streamParameters.t1.s_Type = L_ADC_PARAM;
   streamParameters.t1.FIFO = 1024;
   streamParameters.t1.IrqStep = 1024;
   streamParameters.t1.Pages = 1;

   streamParameters.t1.AutoInit = 1;
   streamParameters.t1.dRate = 400.0;
   streamParameters.t1.dKadr = 0.0;
   streamParameters.t1.dScale = 0.0;
   streamParameters.t1.SynchroType = 0;
   streamParameters.t1.SynchroSensitivity = 0;
   streamParameters.t1.SynchroMode = 0;
   streamParameters.t1.AdChannel = 0;
   streamParameters.t1.AdPorog = 0;
   streamParameters.t1.NCh = 8;
   memcpy(streamParameters.t1.Chn,Channels,sizeof(USHORT)*128);
   streamParameters.t1.IrqEna = 0;
   streamParameters.t1.AdcEna = 1;

   streamParameters.t2.AutoInit = 1;
   streamParameters.t2.dRate = 400.0;
   streamParameters.t2.dKadr = 0.0;
   streamParameters.t2.SynchroType = 0;
   streamParameters.t2.SynchroSrc = 0;
   streamParameters.t2.NCh = 8;
   streamParameters.t2.IrqEna = 0;
   streamParameters.t2.AdcEna = 1;
   streamParameters.t2.s_Type = L_ADC_PARAM;
   streamParameters.t2.FIFO = 128;
   streamParameters.t2.IrqStep = 1024;
   streamParameters.t2.Pages = 1;
   memcpy(streamParameters.t2.Chn,Channels,sizeof(USHORT)*128);

   try
   {

   if (pI->FillDAQparameters(&streamParameters.t2)!=L_SUCCESS) MessageBox(this->Handle,"FillDAQParameters error","",MB_OK);
   }
   catch(...)
   {
        MessageBox(Handle,"&#211;&#241;&#242;&#240;&#238;&#233;&#241;&#242;&#226;&#238; &#236;&#238;&#230;&#229;&#242; &#240;&#224;&#225;&#238;&#242;&#224;&#242;&#252; &#237;&#229;&#239;&#240;&#224;&#226;&#232;&#235;&#252;&#237;&#238;!","",MB_OK);
   }

При вызове FillDAQParameters появляется исключение деления на 0.0 (вещественный).
Параметры АЦП указаны, как указано в документации. Смотрел пример 791.TST. Там примерно то же. Не скажете в чем может быть причина?

28.04.2007 10:01:24
#2

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

Re: FillDAQParameters

в прмере деление на 0? а зачем и t1 и t2 - там что-то одно должно быть...

Murad
28.04.2007 10:17:19
#3

Гость

Re: FillDAQParameters

Я пример не компилировал!!! Я пробовал оттуда параметры АЦП.
Пробовал t1 и/или t2 все-равно деление на ноль.
Разбираю ваш ULONG DaqL791::FillADCparameters(PDAQ_PAR sp)

Ваша функция FillADCparameters использует pdu.t3.Quartz, а объединение pdu (PLATA_DESCR_U) заполняется (судя по вашей программе библиотеки) только при вызове ReadPlataDescr (и, конечно, WritePlataDescr).
Еще вопрос: Обязательно ли вызывать перед передачей параметров АЦП ReadPlataDescr?

28.04.2007 13:41:38
#4

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

Re: FillDAQParameters

обязательно...иначе как частоту считать...