下面是我的采集程序。求指点。
void ThreadProc()
{
LPVOID temp;
float tdata[6]={0,0,0,0,0,0};
int i,j;
YH.YH_ADstart();
USHORT usEventType=0;
ptCheckEvent.EventType = &usEventType;
ptCheckEvent.Milliseconds = 100;
while(1)
{
// Check message
if ((ErrCde = DRV_CheckEvent(DriverHandle1713,
(LPT_CheckEvent)&ptCheckEvent)) == 0)
{
// Process interrupt event
if (usEventType & ADS_EVT_INTERRUPT)
adInterruptEvent();
// Process buffer change event
if (usEventType & ADS_EVT_BUFCHANGE)
adBufChangeEvent();
// Process overrun event
if (usEventType & ADS_EVT_OVERRUN)
adOverrunEvent();
// Process terminate event
if (usEventType & ADS_EVT_TERMINATED)
{
adTerminateEvent();
if ((ErrCde = DRV_FAITransfer(DriverHandle1713,(LPT_FAITransfer)&ptFAITransfer)) != 0)
return ;
temp= (FLOAT far *)ptFAITransfer.DataBuffer;
for(j=0;j<(int)(gulConvNum/gwNumChl);j++)
{
for(i = 0; i < gwNumChl; i++)
{
tdata[i]+=((float *)temp)[i+gwNumChl*j];
}
}
for(i = 0; i < gwNumChl; i++)
{
AD_buff[i]=tdata[i]/(int)(gulConvNum/gwNumChl);
tdata[i]=0;
}
if(m_YHAD)//true means restart
YH.YH_ADstart();
else
{
GlobalUnlock(hBuf);// Free buffer
GlobalUnlock(hADBuf);
GlobalFree(hBuf);
GlobalFree(hADBuf);
DRV_DeviceClose(&DriverHandle1713);// Close driver
return;
}
}
}
}
}
void CYH::YH_ADstart(void)
{
if ((ErrCde = DRV_FAIIntScanStart(DriverHandle1713,
(LPT_FAIIntScanStart)&ptFAIIntScanStart)) != 0)//启动中断
{
DRV_GetErrorMessage(ErrCde,(LPSTR)szErrMsg);
GlobalUnlock(hBuf);
GlobalUnlock(hADBuf);
GlobalFree(hBuf);
GlobalFree(hADBuf);
DRV_DeviceClose((LONG far *)&DriverHandle1713);
}
}
最后修改:2009-6-11 20:49:33