// Analog_Input_Scan.cpp : Defines the entry point for the console application. // // I-7088 [COM1, 9600, N,8,1, Address: 1] // // Connection: // // PC(COM1)<-----RS232---->7520<------RS485------>I-7088(D+/D-) // // I-7088 (PWM 0/GND)<-------------->PET-7H16(Trig+/-) // #include "stdafx.h" #include "HSDAQ.h" #include #include #include "pacsdk.h" #include "7088.h" int _tmain(int argc, _TCHAR* argv[]) { HANDLE hHS; char IPadd[64]="\0"; char sdk_version[16]={0}; char fw_version[32]={0}; char I7Kcom[]="COM1,9600,N,8,1"; HANDLE hcom; bool ret= false; short chCnt=8; short useGain=0; short extriggMode=3; //pre-trigger 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 & Post-trigger] using I-7088\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); //Step 2: open the COM port which is used to connected to I-7088 hcom = uart_Open(I7Kcom); if(hcom==NULL) goto EXIT; //Step 3: Initilize I-7088 Init7088(hcom); printf(" %s\n",I7Kcom); Sleep(100); extriggMode=2; //post-trigger targetCnt=30000; sampleRate=30000; ret=HS_SetAIScanParam(hHS, chCnt, useGain, extriggMode, sampleRate, targetCnt, DataTransMethod,AutoRun); //Step 4: 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 5: GetScanParam getsx chCnt, useGain, triggerMode, sampleRate, targetCnt to check with ET7H16 printf("ET-7H16 Scan parameters chCnt %d, useGain %d, triggMode %d, sampleRate %ld, targe tCnt %lu \n", chCnt, useGain, extriggMode, sampleRate, targetCnt); WORD BufferStatus=0; short *dataBuffer; 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 { dataBuffer=(short *)malloc(sizeof(short)*targetCnt); //Step 6: Start AI Scan DWORD t1=GetTickCount(); ret=HS_StartAIScan(hHS); if(ret==false) { printf("Error code 0x%x\r\n",HS_GetLastError()); } printf("Press any key to trigger an external signal....\r\n"); Sleep(5); //Step 7: while loop to wait the post-trigger by the external signal 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) //The received data counts equl to the target counts after the post-trigger { unsigned long size=targetCnt; { readsize=HS_GetAIBufferHex(hHS,(WORD *)dataBuffer,size); if(readsize==size) { printf("%lu data,",readsize); DWORD t2=GetTickCount(); printf("%lf sec\r\n",((float)t2-t1)/1000); for(int i=0;i0x1d6a || dataBuffer[i]<0x1d45) { CH1checkerror++; printf("CH1 error %lu, %X\r\n",CH1checkerror,dataBuffer[i]); quit=true; }*/ break; case 7: //0V /*if(dataBuffer[i]>0x10 || dataBuffer[i]<0) { CH7checkerror++; printf("CH7 error %lu, %X\r\n",CH7checkerror,dataBuffer[i]); quit=true; }*/ break; } } } else { printf("%d \r\n",readsize); printf("Get AI buffer error\r\n"); } } break; } } if(_kbhit()) { printf("The signal is triggered\r\n"); SetFREQ(hcom,0,10000); SetMode(hcom,0,0,1); PWM_Start(hcom,0,1); char c=_getch(); if(c=='q' || c=='Q') break; else Sleep(5); } else Sleep(1); } printf("AP total read %lu\n", readsize); //Step8: Stop AI Scan HS_StopAIScan(hHS); free(dataBuffer); } printf("Press any key to quit program.\r\n"); _getch(); EXIT: //Step9: Close the COM port uart_Close(hcom); //Step10: Close the connection HS_Device_Release(hHS); } else { printf("Fail to create device\r\n"); } return 0; }