// 说明: 本程序演示了如何用程序查询方式读取AD数据 #include "stdafx.h" #include "windows.h" #include "stdio.h" #include "conio.h" #include "ACTS1000.h" int InputRange; #define AD_DATA_LEN 256*1024 // 要读取和处理的AD数据长度(点或字) float fADBuffer[AD_DATA_LEN]; // 分配缓冲区(存储原始数据) int main(int argc, char* argv[]) { HANDLE hDevice; int DeviceLgcID; ULONG ulDDR2Length = 0; ULONGLONG ulDDR2LengthByte = 0; ACTS1000_PARA_AD ADPara; // 硬件参数 ACTS1000_STATUS_AD ADStatus; ULONG nRetSizeWords; ULONG nAvailSampsPoints; ULONG nRead; int nCurrentChannel = 0,nADChannel = 0; ACTS1000_AD_MAIN_INFO ADMainInfo; DeviceLgcID = 0; printf("请输入逻辑ID:"); scanf_s("%d", &DeviceLgcID); hDevice = ACTS1000_CreateDevice(DeviceLgcID); // 创建设备对象 if(hDevice == INVALID_HANDLE_VALUE) { printf("CreateDevice error...\n"); _getch(); return 0; // 如果创建设备对象失败,则返回 } ACTS1000_GetMainInfo(hDevice,&ADMainInfo); // DDR2的长度(单位:MB) switch (ADMainInfo.nDeviceType>>16) { case 0x2012: printf("PXIE%04X\n",ADMainInfo.nDeviceType&0xFFFF); break; case 0x2111: printf("PCIE%04X\n",ADMainInfo.nDeviceType&0xFFFF); break; default: printf("ACTS1000-%04X\n",ADMainInfo.nDeviceType); } ulDDR2LengthByte = ADMainInfo.nDepthOfMemory; InputRange = ACTS1000_INPUT_N1000_P1000mV; // 要求用户从键盘上选择输入量程 memset(&ADPara, 0x00, sizeof(ADPara)); // 将各项参数复位至确定值0(强烈建议) // 预置硬件参数 ADPara.SampleMode = ACTS1000_SAMPMODE_CONTINUOUS; // 有限点采样 ADPara.FreqDivision = 1; for (int nCH=0; nCHulSecCnt) { ulSecCnt = ulTmp/1000; dResult = ADStatus.lSavePoints*1.00/((ulTmp+1)/1000.0); dResult=dResult/1000000.0; printf("%dS ",ulSecCnt); printf("%.3fM点/秒\n",dResult); } } } else { while ( !_kbhit() ) { if(!ACTS1000_ReadAnalog(hDevice, fADBuffer, nRead, &nRetSizeWords, &nAvailSampsPoints,5.0)) { printf("ReadDeviceDmaAD error...\n"); _getch(); goto ExitRead; } if (nRetSizeWords<=0) { continue; } ulReadCount+=nRetSizeWords; #if 1 ulTmp = GetTickCount()-ulTime; if (ulTmp/1000>ulSecCnt) { ulSecCnt = ulTmp/1000; dResult = ulReadCount*1.00/((ulTmp+1)/1000.0); dResult=dResult/1000000.0; printf("%dS ",ulSecCnt); printf("%.3fM点/秒\n",dResult); ULONG nTChannel = 0; for(int Index=0; Index<8; Index++) { for(nADChannel=nTChannel; nADChannel