#include #ifdef HSDAQ_EXPORTS #define HS_API(type) __declspec(dllexport) type __cdecl #else #define HS_API(type) type #endif #ifdef __cplusplus // for C++ compile use extern "C" { #endif /* __cplusplus */ //========================================================================= // 01. System API //========================================================================= HS_API(void) HS_GetSDKVersion(LPSTR sdk_version); HS_API(HANDLE) HS_Device_Create(LPCSTR ConnectionString); HS_API(bool) HS_Device_Release(HANDLE obj); HS_API(bool) HS_GetFirmwareVersion(HANDLE obj,LPSTR version); HS_API(bool) HS_GetHWFirmwareVersion(HANDLE obj,LPSTR fpga_version); HS_API(bool) HS_Reboot(HANDLE obj); //========================================================================= // 02. Configration API //========================================================================= HS_API(bool) HS_GetConfig(HANDLE obj,int configtype, int param, long *settingval); HS_API(bool) HS_GetConfigString(HANDLE obj,int configtype, int param, char *settingstr, int *maxstr); HS_API(bool) HS_SetConfig(HANDLE obj,int configtype, int param, long settingval); HS_API(bool) HS_SetConfigString(HANDLE obj,int configtype, int param, char *settingstr, int *maxstr); HS_API(bool) HS_ReadGainOffset(HANDLE obj,int ch, unsigned short *gainVal, short *offsetVal); //configtype definition #define BOARD_CONFIG 0 #define IO_CONFIG 1 #define HSDAQ_CONFIG 2 #define DATALOG_CONFIG 4 #define DATA_RESPONSE_CONFIG 5 #define RMS_EXT_DEVICE_GAIN 6 //param definition for DATALOG_CONFIG #define LOGFOLDERTYPE 1 #define LOGFILEMAXSIZE 2 //param definition for DATA_RESPONSE_CONFIG #define RMS_SOURCE_BASE 0 #define RMS_TRANSFER_RATE 1 //param definition for HSDAQ_CONFIG #define HSDAQ_CONNECT_TIMEOUT 1 //========================================================================= // 03. IO API //========================================================================= HS_API(bool) HS_ReadAIALL(HANDLE obj, float ai[], int totalchannel); HS_API(bool) HS_ReadAI(HANDLE obj,int ChannelIndex, float *ai); HS_API(bool) HS_ReadDIO(HANDLE obj,unsigned long *diVal, unsigned long *doVal); HS_API(bool) HS_WriteDO(HANDLE obj, unsigned long val); HS_API(bool) HS_WriteDOBit(HANDLE obj, int ChannelIndex, bool val); //========================================================================= // 03-2 Counter Functions //========================================================================= HS_API(bool) HS_SetDICNTConfig(HANDLE obj,DWORD wChannel,DWORD wMode,DWORD dwValue,DWORD reserved); HS_API(bool) HS_SetCounterConfig(HANDLE obj,DWORD wChannel,DWORD wMode,DWORD dwValue,DWORD reserved); HS_API(bool) HS_GetDICNTConfig(HANDLE obj,DWORD wChannel,DWORD *wMode,DWORD* dwValue, DWORD *reserved); HS_API(bool) HS_GetCounterConfig(HANDLE obj, DWORD wChannel, DWORD *wMode, DWORD* dwValue, DWORD *reserved); HS_API(bool) HS_GetCounter(HANDLE obj,DWORD wChannel, DWORD *dwValue); HS_API(bool) HS_GetDICNT(HANDLE obj,DWORD wChannel, DWORD *dwValue); HS_API(bool) HS_GetCounterAll(HANDLE obj, DWORD dwValue[]); HS_API(bool) HS_GetDICNTAll(HANDLE obj,DWORD dwValue[]); HS_API(bool) HS_ClearCounter(HANDLE obj,DWORD wChannel); HS_API(bool) HS_ClearDICNT(HANDLE obj,DWORD wChannel); HS_API(bool) HS_ClearCounterALL(HANDLE obj); HS_API(bool) HS_ClearDICNTALL(HANDLE obj); #define CNT_DISABLE 0 #define CNT_ENABLE 1 #define CNT_SYNC 2 //========================================================================= // 04. High speed DAQ API //========================================================================= HS_API(bool) HS_SetAIScanParam(HANDLE obj,short pacerChCnt, short pacerGain, short triggerMode, long sampleRate, unsigned long targetCnt, short DataTransMethod, short AutoRun); HS_API(bool) HS_GetAIScanParam(HANDLE obj, short *pacerChCnt, short *pacerGain, short *triggerMode, long *sampleRate, unsigned long *targetCnt, short *DataTransMethod, short *AutoRun); HS_API(bool) HS_GetAIBufferStatus(HANDLE obj,WORD *wBufferStatus, DWORD *dwDataCountOnBuffer); HS_API(bool) HS_SetAIAnalogTriggerParam(HANDLE obj,int analogmode,bool En_Channel[],float hightriglevel[],float lowtriglevel[],int totalSetchannel,unsigned long leftsidecnt,unsigned long rightsidecnt,unsigned long RESERVED); HS_API(bool) HS_GetAIAnalogTriggerParam(HANDLE obj,int *analogmode,bool En_Channel[],float hightriglevel[],float lowtriglevel[],int totalGetchannel,unsigned long *leftsidecnt,unsigned long *rightsidecnt,unsigned long *RESERVED); HS_API(bool) HS_SetAIDelayTriggerParam(HANDLE obj, unsigned long delaytime,unsigned long RESERVED); HS_API(bool) HS_GetAIDelayTriggerParam(HANDLE obj, unsigned long* delaytime,unsigned long* RESERVED); HS_API(DWORD) HS_GetAIBufferHex(HANDLE obj,WORD *wBuffer, DWORD dwBufferSize); HS_API(DWORD) HS_GetAIBuffer(HANDLE obj,float *fBuffer, DWORD dwBufferSize); HS_API(bool) HS_ClearAIBuffer(HANDLE obj); HS_API(bool) HS_StartAIScan(HANDLE obj); HS_API(bool) HS_StopAIScan(HANDLE obj); HS_API(bool) HS_GetTotalSamplingStatus(HANDLE obj,unsigned long *totalReadCnt, unsigned int *SamplingStatus); HS_API(bool) HS_TransmitDataCmd(HANDLE obj); HS_API(WORD) HS_SetEventCallback(HANDLE obj, WORD wEventType,WORD EventParam,PVOID CallbackFun,void *pdwCallBackParameter); HS_API(WORD) HS_RemoveEventCallback(HANDLE obj,WORD wEventType); enum AI_TRIGGER_TYPE { AI_TRI_SOFTWARE=0, //Software trigger 0 AI_TRI_EXTERNAL, //External trigger 1 AI_TRI_POST, //Post-trigger 2 AI_TRI_PRE, //Pre-trigger 3 AI_TRI_MID, //Middle trigger 4 AI_TRI_DELAY, //Delay trigger 5 AI_TRI_AI, //Analog input trigger 6 }; //========================================================================= // 05. Synchronous Input DAQ API //========================================================================= HS_API(bool) HS_SetSyncInScanParam(HANDLE hobj,DWORD SyncInheader,WORD InChNumArray[],WORD InChTypeArray[],WORD Arraycount,DWORD Options,DWORD Reserved); HS_API(bool) HS_GetSyncInScanParam(HANDLE hobj,DWORD *SyncInheader,WORD InChNumArray[],WORD InChTypeArray[],WORD Arraycount,WORD *ActualArrayAmout,DWORD *Options,DWORD *Reserved); HS_API(DWORD) HS_GetSyncInBuffer(HANDLE hobj,void *packetheader,void **wfAIBuffer,BYTE **bDIBuffer,BYTE **bDOBuffer,void **pDICNTbuffer,void **pCNTbuffer,void *pUDbuffer1,void *pUDbuffer2,DWORD dwFrameDataNumber); HS_API(DWORD) HS_GetSyncInBufferDW(HANDLE hobj,DWORD *packetheader,DWORD **wfAIBuffer,BYTE **bDIBuffer,BYTE **bDOBuffer,DWORD **pDICNTbuffer,DWORD **pCNTbuffer,DWORD *pUDbuffer1,DWORD *pUDbuffer2,DWORD dwFrameDataNumber); HS_API(DWORD) HS_GetSyncInBufferLV(HANDLE hobj,DWORD *packetheader,DWORD *wfAIBuffer,BYTE *bDIBuffer,BYTE *bDOBuffer,DWORD *pDICNTbuffer,DWORD *pCNTbuffer,DWORD *pUDbuffer1,DWORD *pUDbuffer2,DWORD dwFrameDataNumber); HS_API(bool) HS_GetSyncInBufferStatus(HANDLE hobj,WORD *wBufferStatus,DWORD *dwFrameCountOnBuffer); HS_API(bool) HS_ClearSyncInBuffer(HANDLE hobj); HS_API(bool) HS_GetSyncInTotalSamplingStatus(HANDLE hobj,unsigned long * totalReadCnt,unsigned int * SamplingStatus); enum SYNC_IN_TYPE { SYNC_IN_AI=0, //2bytes (Hex to float) SYNC_IN_AI_HEX, //2bytes SYNC_IN_WORD_DI_CNT, //2bytes SYNC_IN_WORD_CNT, //2bytes SYNC_IN_DWORD_DI_CNT, //4bytes SYNC_IN_DWORD_CNT, //4bytes SYNC_IN_DI, //One bit represents a channel SYNC_IN_DO, //One bit represents a channel SYNC_IN_UD_BYTE, //1bytes SYNC_IN_UD_WORD, //2bytes SYNC_IN_UD_DWORD, //4bytes SYNC_IN_UD_FLOAT //4bytes }; #define SYNC_DISABLE 0 #define SYNC_ENABE 1 //========================================================================= // 06. Data logger API //========================================================================= HS_API(bool) HS_StartLogger(HANDLE obj,char * filePath,int interval,int filetype); HS_API(bool) HS_StartLoggerW(HANDLE obj,TCHAR * filePath,int interval,int filetype); HS_API(bool) HS_StopLogger(HANDLE obj); HS_API(int) HS_GetAllLogFiles(TCHAR *folderpath,int filetype); HS_API(HANDLE) HS_LogFile_Open_byIndex(int index,TCHAR *getfullFilename); HS_API(HANDLE) HS_LogFile_Open(char *fullFilename); HS_API(HANDLE) HS_LogFile_OpenW(TCHAR *fullFilename); HS_API(bool) HS_LogFile_Close(HANDLE hobj); HS_API(bool)HS_GetLogFileInfo(HANDLE hobj, DWORD *filesize, int *filetype,int *fileversion); HS_API(bool)HS_GetLogFile_AIScanConfigInfo(HANDLE hobj, short *pacerChCnt, short *pacerGain, short *triggerMode, long *sampleRate, short *DataTransMethod, short *SyncMode); HS_API(bool)HS_GetLogFile_GainOffset(HANDLE hobj,int ch, unsigned short *gainVal, short *offsetVal); HS_API(bool)HS_GetLogFile_AIScanSampleInfo(HANDLE hobj, DWORD *sampleCount, char *StartDate, char *StartTime); HS_API(DWORD)HS_GetLogFile_AIData(HANDLE hobj, int StartIndx,DWORD count, float *fAIData); //calibrated data (float) from read .txt HS_API(DWORD)HS_GetLogFile_AIDataHex(HANDLE hobj,int StartIndx,DWORD count, WORD *AIData); //calibrated data (Hex) from .bin //========================================================================= // 07. Error Handling API //========================================================================= HS_API(DWORD) HS_GetLastError(); HS_API(void) HS_SetLastError(DWORD errorno); HS_API(void) HS_ClearLastError(); HS_API(void) HS_GetErrorMessage(DWORD dwMessageID, LPSTR lpBuffer); //========================================================================= // Error Codes //========================================================================= #define HS_ERR_SUCCESS 0x00000 #define HS_ERR_UNKNOWN 0x00001 //===================================================================== // 0x10000~ 0x12999 system API Error //WSAGetLastError //Basic===================================================================== #define HS_ERR_BASE 0x13000 #define HS_ERR_UNKNOWN_MODULE (HS_ERR_BASE + 3) #define HS_ERR_INVALID_MAC (HS_ERR_BASE + 4) #define HS_ERR_FUNCTION_NOT_SUPPORT (HS_ERR_BASE + 6) #define HS_ERR_MODULE_UNEXISTS (HS_ERR_BASE + 7) #define HS_ERR_FUNCTION_REPEAT_CALLED (HS_ERR_BASE + 9) #define HS_ERR_INVALID_HANDLE_VALUE (HS_ERR_BASE + 10) #define HS_ERR_DEVICE_IO_CONTROL (HS_ERR_BASE + 11) #define HS_ERR_INVALID_PARAMETER (HS_ERR_BASE + 12) #define HS_ERR_SDK_LOADING (HS_ERR_BASE + 13) #define HS_ERR_MEMORY_ALLOCATED (HS_ERR_BASE + 14) //Memory Access============================================================= #define HS_ERR_MEMORY_BASE 0x14000 #define HS_ERR_MEMORY_INVALID_SIZE (HS_ERR_MEMORY_BASE + 8) //DATA log============================================================= #define HS_ERR_DATALOG_BASE 0x14100 #define HS_ERR_DATALOG_INVALID_SIZE (HS_ERR_DATALOG_BASE + 1) #define HS_ERR_DATALOG_CONFIGFILE_NOFOUND (HS_ERR_DATALOG_BASE + 2) //Watch Dog================================================================= #define HS_ERR_WDT_BASE 0x15000 #define HS_ERR_WDT_INVALID_VALUE (HS_ERR_WDT_BASE + 1) #define HS_ERR_WDT_UNEXIST (HS_ERR_WDT_BASE + 2) #define HS_ERR_WDT_BASE_NOT_SET (HS_ERR_WDT_BASE + 3) #define HS_ERR_WDT_OS_FOR_OS_STARTUP (HS_ERR_WDT_BASE + 4) //Device open and close====================================================================== #define HS_ERR_DEVICE_BASE 0x17000 #define HS_ERR_DEVICE_CHECKSUM (HS_ERR_DEVICE_BASE+1) #define HS_ERR_DEVICE_READ_TIMEOUT (HS_ERR_DEVICE_BASE+2) #define HS_ERR_DEVICE_RESPONSE (HS_ERR_DEVICE_BASE+3) #define HS_ERR_DEVICE_UNDER_INPUT_RANGE (HS_ERR_DEVICE_BASE+4) #define HS_ERR_DEVICE_EXCEED_INPUT_RANGE (HS_ERR_DEVICE_BASE+5) #define HS_ERR_DEVICE_OPEN_FAILED (HS_ERR_DEVICE_BASE+6) #define HS_ERR_DEVICE_INVALID_VALUE (HS_ERR_DEVICE_BASE+8) #define HS_ERR_DEVICE_INTERNAL_BUFFER_OVERFLOW (HS_ERR_DEVICE_BASE+9) #define HS_ERR_DEVICE_SEND (HS_ERR_DEVICE_BASE+10) #define HS_ERR_DEVICE_DATA_CONNECT (HS_ERR_DEVICE_BASE+11) //IO======================================================================== #define HS_ERR_IO_BASE 0x18000 #define HS_ERR_IO_NOT_SUPPORT (HS_ERR_IO_BASE+1) #define HS_ERR_IO_ID (HS_ERR_IO_BASE+2) #define HS_ERR_IO_SLOT (HS_ERR_IO_BASE+3) #define HS_ERR_IO_CHANNEL (HS_ERR_IO_BASE+4) #define HS_ERR_IO_GAIN (HS_ERR_IO_BASE+5) #define HS_ERR_IO_INT_MODE (HS_ERR_IO_BASE+6) #define HS_ERR_IO_VALUE_OUT_OF_RANGE (HS_ERR_IO_BASE+7) #define HS_ERR_IO_CHANNEL_OUT_OF_RANGE (HS_ERR_IO_BASE+8) #define HS_ERR_IO_DO_CANNOT_OVERWRITE (HS_ERR_IO_BASE+10) #define HS_ERR_IO_AO_CANNOT_OVERWRITE (HS_ERR_IO_BASE+11) #define HS_ERR_IO_OPERATION_MODE (HS_ERR_IO_BASE+12) #define HS_ERR_IO_DELAY_TIME (HS_ERR_IO_BASE+13) #define HS_ERR_IO_ANALOG_MODE (HS_ERR_IO_BASE+14) #define HS_ERR_IO_ANALOG_RANGE (HS_ERR_IO_BASE+15) #define HS_ERR_IO_ANALOG_COUNT (HS_ERR_IO_BASE+16) //RMS======================================================================== #define HS_ERR_RMS_BASE 0x19000 #define HS_ERR_RMS_PARAM (HS_ERR_RMS_BASE+1) #define HS_ERR_CMD_SETVAL (HS_ERR_RMS_BASE+2) /*callback event*/ #define EVENT_ERROR 0x0001 #define EVENT_N_SAMPLE_REACH 0x0002 #define EVENT_DATA_SAMPLING_TIMEOUT 0x0004 #define EVENT_LAN_BUFFER_OVERFLOW 0x0008 #define EVENT_LOG_N_SAMPLE_REACH 0x0010 typedef struct daqtime { //timestamp type 1 //WORD year; //16bits //char month; __int16 day:5;//5bits __int16 hour:5;//5bits __int16 minute:6;//6bits __int16 sec:6;//6bits __int16 msec:10; //10bits } DAQ_TIME; //total 32bits typedef struct { //timestamp type 2 __int32 minute:6;//6bits __int32 sec:6;//6bits __int32 msec:10; //10bits __int32 usec:10; //10bits } DAQ_TIME2; //total 32bits #ifdef __cplusplus } #endif /* __cplusplus */