![ICP DAS USA PCI-1202 Series Скачать руководство пользователя страница 98](http://html2.mh-extra.com/html/icp-das-usa/pci-1202-series/pci-1202-series_user-manual_4476309098.webp)
PCI-1202/1602/180x Series Card
Multi-Function Boards
User Manual/ Ver. 4.8/ Mar. 2015/ PMH-0014-48/ Page: 98
7.8.6 The MagicScan Thread
The sample code of MagicScan thread as follows:
//----------------------------------------------------------------------
// wThreadStatus : 0x01=MagicScan start
//
0x02=timeout1
//
0x04=timeout2
//
0x08=FIFO overflow
//
0x80=MagicScan OK
WORD magic_scan()
{
WORD wVal,w1,w3;
DWORD i,dwTime,j,k,dwIndex;
for (j=0; j<wMP; j++) dwMagicSum[j]=0;
for (j=0; j<wMP; j++) wMagicNow[j]=wMagicAve[j];
for (j=0; j<wMP; j++) wMagicP[j]=0;
for (i=0; i<wMP; i++)
// skip the MagicScan settling time
{
dwTime=0;
for (;;)
{
wVal=inport(wAddrCtrl)&0x20;
if(wVal!=0) break;
+;
if(dwTime>100000)
return TimeOut;
}
inport(wAddrAdda)&0xffff;
}
dwMagicLowAlarm=0;
dwMagicHighAlarm=0;
for(i=0; i<wMagicNum; i++)
{
for (j=0; j<wMP; j++)
{
dwTime=0;
for (;;)
{
wVal=inport(wAddrCtrl)&0x60;
if (wVal==0x20) return FifoOverflow;
if (wVal==0x60) break;
+;
if (dwTime>100000) return TimeOut;
}
dwMagicSum[j]+=(inport(wAddrAdda)&0x0fff);
/* 0x0fff for 12-bitADC, 0xffff for 16-bit ADC */
wMagicNow[j]--;
w1=wMagicNow[j];