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


L761 одиночный вывод на ЦАП

Вы не вошли.

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

Алексей
05.05.2008 08:51:03
#1

Гость

L761 одиночный вывод на ЦАП

Здравствуйте.
Пишу программу для L761 (rev B, ADSP2184), которая анализирует данные с АЦП и выдает соответствующее управление на ЦАП. Программа работает минут 5-10, потом комп намертво виснет или перезагружается. Делал как в примере. Вот кусок программы (оставил только сбор и вывод на ЦАП):


    DWORD WINAPI ServiceThread(PVOID Context)
{
   int i;
   while(1)
   {
      // test for event capture
      pI->InitStartLDevice();
      pI->StartLDevice();
      WaitForSingleObject(hEventData,INFINITE);
      pI->StopLDevice();


   ap1.s_Type= L_ASYNC_DAC_OUT;//(ap1 - ASYNC_PAR)
   ap1.Mode=0;
   ap1.Data[0]=234;
   pI->IoAsync(&ap1);
   }
   return 0;
}

Инициализация:

   NCh=4;
   DSize=32*1024;
   if(CallCreateInstance("lcomp.dll")==0) {ShowMessage("1");}
   pIUnknown = CreateInstance(0);
   if(pIUnknown == NULL)  {ShowMessage("2");}
   pIUnknown->QueryInterface(IID_ILDEV,(void**)&pI);;
   pIUnknown->Release();

   pI->OpenLDevice();
   pI->GetSlotParam(&sl);
   pI->LoadBios("l761.bio");
   pI->PlataTest();       
   pI->ReadPlataDescr(&ph);

   ULONG tm = 512000; 
   pI->RequestBufferStream(&tm,L_STREAM_ADC);

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

         pI->FillDAQparameters(&adcPar.t1);
         pI->SetParametersStream(&adcPar.t1, &tm, (void **)&data, (void **)&sync,L_STREAM_ADC);

   hEventData = CreateEvent(0,FALSE,FALSE,NULL);
   pI->SetLDeviceEvent(hEventData);
   hThread=CreateThread(0,0x2000,ServiceThread,0,0,&Tid);

Пишу в C++ Builder 6, Windows XP, lcomp и биос скачал самые свежие с сайта. Проверял на нескольких машинах - одинаково. Подскажите, в чем проблема может быть, или я что-то не так делаю?
Спасибо.

12.05.2008 10:00:10
#2

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

Re: L761 одиночный вывод на ЦАП

Эээ... в билдере там можно напутать при работе с формами из треда что-нибудь... а так проверить лучше просто в тестовом примере L7XX.TST засунув вывод на ЦАП в цикл while который статус печатает...