// Analog_Input_Scan.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include "HSDAQ.h" #include #include int _tmain(int argc, _TCHAR* argv[]) { HANDLE hHS; char IPadd[64]="\0"; char sdk_version[16]={0}; char fw_version[32]={0}; bool ret= false; short chCnt=8; short useGain=0; short extriggMode=0; bool continuousMode=false; long continuousTimeout=0; unsigned long targetCnt=0; long sampleRate=0; //unsigned long totalRead=0,totalReceived=0; short DataTransMethod=0; short AutoRun=0; if(argc>1) { wprintf(TEXT("%s\r\n"),argv[1]); //char *pFilePathName; //int nLen = wcslen(argv[1])+1; WideCharToMultiByte(CP_ACP, 0, argv[1], -1, IPadd, 64, NULL, NULL); printf("program start %s\r\n",IPadd); } else { printf("error argument\r\n"); return 0; } char tmp[128]={0}; sprintf(tmp,"%s,9999,10010",IPadd); //Step 1: Create a TCP connection with ET-7H16 hHS = HS_Device_Create(tmp); Sleep(10); if(hHS!=NULL) { printf("ET-7H16 Analog Input Scan Testing [N sample mode & Software trigger]\r\n"); HS_GetSDKVersion(sdk_version); printf("HSDAQ SDK Ver=%s\r\n",sdk_version); HS_GetFirmwareVersion(hHS,fw_version); printf("ET7H16 Firmware Ver=%s\r\n",fw_version); extriggMode=0; targetCnt=10000; sampleRate=35000; ret=HS_SetAIScanParam(hHS, chCnt, useGain, extriggMode, sampleRate, targetCnt, DataTransMethod,AutoRun); //Step 2: SetScanParam sets chCnt, useGain, triggerMode, sampleRate, targetCnt to ET7H16 if(ret==false) { printf("Error code 0x%x\r\n",HS_GetLastError()); } HS_GetAIScanParam(hHS, &chCnt, &useGain, &extriggMode, &sampleRate, &targetCnt,&DataTransMethod,&AutoRun); //Step 3: GetScanParam getsx chCnt, useGain, triggerMode, sampleRate, targetCnt to check with ET7H16 printf("ET-7H16 first Scan parameters chCnt %d, useGain %d, triggMode %d, sampleRate %ld, targetCnt %lu \n", chCnt, useGain, extriggMode, sampleRate, targetCnt); Sleep(10); WORD BufferStatus=0; //#define BUFFERSIZE 29200 //short *dataBuffer; float *fdataBuffer; unsigned long ulleng=0; unsigned long totalRecv=0; unsigned long CH1checkerror=0; unsigned long CH7checkerror=0; unsigned long otherCHcheckerror=0; unsigned long readsize=0; bool quit=false; /*Test N sample mode in this demo*/ if(targetCnt>0) //N sample mode { fdataBuffer=(float *)malloc(sizeof(float)*targetCnt); //Step 5: Start AI Scan DWORD t1=GetTickCount(); //Step 4: Start AI Scan ret=HS_StartAIScan(hHS); if(ret==false) { printf("Error code 0x%x\r\n",HS_GetLastError()); } //Step 5: while loop to get total received data from ET7H16Logger while(quit==false) { ret=HS_GetAIBufferStatus(hHS,&BufferStatus,&ulleng); if(ret==false) { printf("Error code 0x%x\r\n",HS_GetLastError()); } else { if(BufferStatus>2) //AI buffer overflow { /* 2: AD_BUF_OVERFLOW 4: AD_SCAN_STOP 8: AD_DATA_SAMPLING_TIMEOUT */ printf("Error<%d>, %lu\r\n",BufferStatus,ulleng); break; } if(ulleng==targetCnt) { //printf(">%d \r\n",ulleng); unsigned long size=targetCnt; { readsize=HS_GetAIBuffer(hHS,fdataBuffer,size); if(readsize==targetCnt) { printf("%lu data,",readsize); DWORD t2=GetTickCount(); printf("%lf sec\r\n",((float)t2-t1)/1000); for(int i=0;i1.35 || fdataBuffer[i]<0.95) { CH1checkerror++; printf("CH1 error %lu, %f\r\n",CH1checkerror,fdataBuffer[i]); quit=true; } break; case 7: //0V if(fdataBuffer[i]>0.2 || fdataBuffer[i]<-0.2) { CH7checkerror++; printf("CH7 error %lu, %f\r\n",CH7checkerror,fdataBuffer[i]); quit=true; } break; } } } else { printf("%d \r\n",readsize); printf("Get AI buffer error\r\n"); } } break; } } //continue mode if(_kbhit()) { Sleep(1); if(_getch()=='q' || _getch()=='Q') break; } } printf("AP total read %lu\n", readsize); //Step6: Stop AI Scan HS_StopAIScan(hHS); free(fdataBuffer); } //Step7: Close the connection HS_Device_Release(hHS); } return 0; }