00001 #ifndef _ACQUISITION_H
00002 #define _ACQUISITION_H
00003
00004 #define DATASHORT 2 //2 byte integer
00005 #define DATALONG 4 //4 byte integer
00006 #define DATAFLOAT 8 //8 byte double
00007 #define DATASIGNED 16 // signed
00008
00009 #ifdef __cplusplus
00010 extern "C" {
00011 #endif
00012
00013 typedef UINT ACQDESCPOS;
00014
00015 #ifdef __linux__
00016 typedef int HACQDESC;
00017 #else
00018
00019 typedef HANDLE HACQDESC;
00020 #ifdef _DLL_EXPORT
00021 #define _DLL_API __declspec(dllexport)
00022 #else
00023 #define _DLL_API __declspec(dllimport)
00024 #endif //_ACQDEFS_H
00025
00026 #define HIS_RETURN _DLL_API UINT WINAPI
00027
00028 #endif
00029
00030
00031 #define WINRESTSIZE 34
00032 #define WINHARDWAREHEADERSIZE 32
00033
00034 #define DETEKTOR_DATATYPE_18BIT 16
00035 #define MAX_GREY_VALUE_18BIT 262144
00036
00037 typedef struct
00038 {
00039 DWORD dwPROMID;
00040 DWORD dwHeaderID;
00041 BOOL bAddRow;
00042 BOOL bPwrSave;
00043 DWORD dwNrRows;
00044 DWORD dwNrColumns;
00045 DWORD dwZoomULRow;
00046 DWORD dwZoomULColumn;
00047 DWORD dwZoomBRRow;
00048 DWORD dwZoomBRColumn;
00049 DWORD dwFrmNrRows;
00050 DWORD dwFrmRowType;
00051 DWORD dwFrmFillRowIntervalls;
00052 DWORD dwNrOfFillingRows;
00053 DWORD dwDataType;
00054 DWORD dwDataSorting;
00055 DWORD dwTiming;
00056 DWORD dwAcqMode;
00057 DWORD dwGain;
00058 DWORD dwOffset;
00059 DWORD dwAccess;
00060 BOOL bSyncMode;
00061 DWORD dwBias;
00062 DWORD dwLeakRows;
00063 } CHwHeaderInfo;
00064
00065 typedef struct
00066 {
00067 WORD wHeaderID;
00068 WORD wPROMID;
00069 WORD wResolutionX;
00070 WORD wResolutionY;
00071 WORD wNrRows;
00072 WORD wNrColumns;
00073 WORD wZoomULRow;
00074 WORD wZoomULColumn;
00075 WORD wZoomBRRow;
00076 WORD wZoomBRColumn;
00077 WORD wFrmNrRows;
00078 WORD wFrmRowType;
00079 WORD wRowTime;
00080 WORD wClock;
00081 WORD wDataSorting;
00082 WORD wTiming;
00083 WORD wGain;
00084 WORD wLeakRows;
00085 WORD wAccess;
00086 WORD wBias;
00087 WORD wUgComp;
00088 WORD wCameratype;
00089 WORD wFrameCnt;
00090 WORD wBinningMode;
00091 WORD wRealInttime_milliSec;
00092 WORD wRealInttime_microSec;
00093 WORD wStatus;
00094 WORD wCommand1;
00095 WORD wCommand2;
00096 WORD wCommand3;
00097 WORD wCommand4;
00098 WORD wDummy;
00099 } CHwHeaderInfoEx;
00100
00101
00102 typedef struct
00103 {
00104 WORD FileType;
00105 WORD HeaderSize;
00106 WORD HeaderVersion;
00107 ULONG FileSize;
00108 WORD ImageHeaderSize;
00109 WORD ULX, ULY, BRX, BRY;
00110 WORD NrOfFrames;
00111 WORD Correction;
00112 double IntegrationTime;
00113 WORD TypeOfNumbers;
00114
00115 BYTE x[WINRESTSIZE];
00116 } WinHeaderType;
00117
00118 typedef struct
00119 {
00120 DWORD dwPROMID;
00121 char strProject[6];
00122 char strSystemused[3];
00123 char strPrefilter[9];
00124 float fKVolt;
00125 float fAmpere;
00126 WORD n_avframes;
00127
00128 } WinImageHeaderType;
00129
00130 typedef struct
00131 {
00132 unsigned char wTiming;
00133 unsigned char wValue0;
00134 unsigned char wValue1;
00135 unsigned char wValue2;
00136 unsigned char wValue3;
00137 unsigned char wValue4;
00138 unsigned char wValue5;
00139 unsigned char wValue6;
00140 } FPGAType;
00141
00142
00143 HIS_RETURN Acquisition_Init(HACQDESC *phAcqDesc,
00144 DWORD dwChannelType, int nChannelNr,
00145 BOOL bEnableIRQ,
00146 UINT Rows, UINT Columns,
00147 UINT dwSortFlags,
00148 BOOL bSelfInit, BOOL bAlwaysOpen
00149 );
00150
00151
00152 HIS_RETURN Acquisition_SetCallbacksAndMessages(HACQDESC pAcqDesc,
00153 HWND hWnd,
00154 UINT dwErrorMsg, UINT dwLoosingFramesMsg,
00155 void (CALLBACK *lpfnEndFrameCallback)(HACQDESC),
00156 void (CALLBACK *lpfnEndAcqCallback)(HACQDESC)
00157 );
00158 HIS_RETURN Acquisition_EnumSensors(UINT *pdwNumSensors, BOOL bEnableIRQ, BOOL bAlwaysOpen);
00159 HIS_RETURN Acquisition_GetNextSensor(ACQDESCPOS *Pos,
00160 HACQDESC *phAcqDesc);
00161 HIS_RETURN Acquisition_GetCommChannel(HACQDESC pAcqDesc, UINT *pdwChannelType, int *pnChannelNr);
00162 HIS_RETURN Acquisition_DefineDestBuffers(HACQDESC pAcqDesc, unsigned short *pProcessedData, UINT nFrames, UINT nRows, UINT nColumns);
00163 HIS_RETURN Acquisition_Acquire_Image(HACQDESC pAcqDesc, UINT dwFrames, UINT dwSkipFrms, UINT dwOpt, unsigned short *pwOffsetData, DWORD *pdwGainData, DWORD *pdwPxlCorrList);
00164 HIS_RETURN Acquisition_Acquire_Image_Ex(HACQDESC hAcqDesc, UINT dwFrames, UINT dwSkipFrms, UINT dwOpt,
00165 unsigned short *pwOffsetData, UINT dwGainFrames, unsigned short *pwGainData,
00166 unsigned short *pwGainAvgData, DWORD *pdwGainData, DWORD *pdwPxlCorrList);
00167 HIS_RETURN Acquisition_Abort(HACQDESC hAcqDesc);
00168 HIS_RETURN Acquisition_SetFPGACameraMode(HACQDESC hAcqDesc, FPGAType FPGACommand, BOOL bInverse);
00169 HIS_RETURN Acquisition_SetCameraMode(HACQDESC hAcqDesc, UINT dwMode);
00170 HIS_RETURN Acquisition_Acquire_OffsetImage(HACQDESC hAcqDesc, unsigned short *pOffsetData, UINT nRows, UINT nCols, UINT nFrames);
00171 HIS_RETURN Acquisition_Acquire_OffsetImage_Ex(HACQDESC hAcqDesc, unsigned short *pOffsetData, UINT nRows, UINT nCols, UINT nFrames, UINT dwOpt);
00172 HIS_RETURN Acquisition_Acquire_GainImage(HACQDESC hAcqDesc, WORD *pOffsetData, DWORD *pGainData, UINT nRows, UINT nCols, UINT nFrames);
00173 HIS_RETURN Acquisition_Acquire_GainImage_Ex(HACQDESC hAcqDesc, WORD *pOffsetData, DWORD *pGainData, UINT nRows, UINT nCols, UINT nFrames, UINT dwOpt);
00174 HIS_RETURN Acquisition_CreateGainMap(WORD *pGainData, WORD *pGainAVG, int nCount, int nFrame );
00175 HIS_RETURN Acquisition_CreatePixelMap(WORD *pData, int nDataRows, int nDataColumns, int *pCorrList, int *nCorrListSize);
00176 HIS_RETURN Acquisition_DoOffsetCorrection(WORD *pSource, WORD *pDest, WORD *pOffsetData, int nCount);
00177 HIS_RETURN Acquisition_DoOffsetGainCorrection(WORD *pSource, WORD *pDest, WORD *pOffsetData, DWORD *pGainData, int nCount);
00178 HIS_RETURN Acquisition_DoOffsetGainCorrection_Ex(WORD *pSource, WORD *pDest, WORD *pOffsetData, WORD *pGainData,
00179 WORD *pGainAVG, int nCount, int nFrame);
00180
00181 HIS_RETURN Acquisition_DoOffsetCorrection32(unsigned long *pSource, unsigned long *pDest, unsigned long *pOffsetData, int nCount);
00182 HIS_RETURN Acquisition_DoOffsetGainCorrection32(unsigned long *pSource, unsigned long *pDest, unsigned long *pOffsetData, unsigned long *pGainData, int nCount);
00183 HIS_RETURN Acquisition_DoOffsetGainCorrection_Ex32(unsigned long *pSource, unsigned long *pDest, unsigned long *pOffsetData, unsigned long *pGainData,
00184 unsigned long *pGainAVG, int nCount, int nFrame);
00185 HIS_RETURN Acquisition_CreateGainMap32(unsigned long *pGainData, unsigned long *pGainAVG, int nCount, int nFrame );
00186
00187
00188 HIS_RETURN Acquisition_DoPixelCorrection(WORD *pData, int *pCorrList);
00189 HIS_RETURN Acquisition_IsAcquiringData(HACQDESC hAcqDesc);
00190 HIS_RETURN Acquisition_Close(HACQDESC hAcqDesc);
00191 HIS_RETURN Acquisition_CloseAll();
00192 HIS_RETURN Acquisition_SetReady(HACQDESC hAcqDesc, BOOL bFlag);
00193 HIS_RETURN Acquisition_GetReady(HACQDESC hAcqDesc);
00194 HIS_RETURN Acquisition_GetErrorCode(HACQDESC hAcqDesc, DWORD *dwHISError, DWORD *dwBoardError);
00195 HIS_RETURN Acquisition_GetConfiguration(HACQDESC hAcqDesc,
00196 UINT *dwFrames, UINT *dwRows, UINT *dwColumns, UINT *dwDataType,
00197 UINT *dwSortFlags, BOOL *bIRQEnabled, DWORD *dwAcqType, DWORD *dwSystemID,
00198 DWORD *dwSyncMode, DWORD *dwHwAccess);
00199 HIS_RETURN Acquisition_GetIntTimes(HACQDESC hAcqDesc, double *dblIntTime, int *nIntTimes);
00200 HIS_RETURN Acquisition_GetWinHandle(HACQDESC hAcqDesc, HWND *hWnd);
00201 HIS_RETURN Acquisition_GetActFrame(HACQDESC hAcqDesc, DWORD *dwActAcqFrame, DWORD *dwActSecBuffFrame);
00202 HIS_RETURN Acquisition_SetAcqData(HACQDESC hAcqDesc, DWORD dwAcqData);
00203 HIS_RETURN Acquisition_GetAcqData(HACQDESC hAcqDesc, DWORD *dwAcqData);
00204 HIS_RETURN Acquisition_GetHwHeaderInfo(HACQDESC hAcqDesc, CHwHeaderInfo *pInfo);
00205 HIS_RETURN Acquisition_SetFrameSync(HACQDESC hAcqDesc);
00206 HIS_RETURN Acquisition_SetFrameSyncMode(HACQDESC hAcqDesc, DWORD dwMode);
00207 HIS_RETURN Acquisition_SetTimerSync(HACQDESC hAcqDesc, DWORD *dwCycleTime);
00208 HIS_RETURN Acquisition_AbortCurrentFrame(HACQDESC hAcqDesc);
00209 HIS_RETURN Acquisition_SetCorrData(HACQDESC hAcqDesc, unsigned short *pwOffsetData, DWORD *pdwGainData, DWORD *pdwPxlCorrList);
00210 HIS_RETURN Acquisition_SetCorrData_Ex(HACQDESC hAcqDesc, unsigned short *pwOffsetData, unsigned short *pwGainData,
00211 unsigned short *pwGainAvgData, UINT nGainFrames,
00212 DWORD *pdwGainData, DWORD *pdwPxlCorrList);
00213 HIS_RETURN Acquisition_GetCorrData(HACQDESC hAcqDesc, unsigned short **ppwOffsetData, DWORD **ppdwGainData, DWORD **ppdwPxlCorrList);
00214 HIS_RETURN Acquisition_GetCorrData_Ex(HACQDESC hAcqDesc, unsigned short **ppwOffsetData, unsigned short **ppwGainData,
00215 unsigned short **ppwGainAvgData, UINT **nGainFrames, DWORD **pdwGainData, DWORD **pdwPxlCorrList);
00216 HIS_RETURN Acquisition_SetCameraGain(HACQDESC hAcqDesc, WORD wMode);
00217 HIS_RETURN Acquisition_SetFrameSyncTimeMode(HACQDESC hAcqDesc, unsigned int uiMode, unsigned int dwDelayTime);
00218
00219 HIS_RETURN Acquisition_Acquire_GainImage_Ex_ROI(HACQDESC hAcqDesc, WORD *pOffsetData, DWORD *pGainData, UINT nRows, UINT nCols, UINT nFrames, UINT dwOpt,UINT uiULX,UINT uiULY,UINT uiBRX,UINT uiBRY,UINT uiMode);
00220 HIS_RETURN Acquisition_Acquire_Image_PreloadCorr(HACQDESC hAcqDesc, UINT dwFrames, UINT dwSkipFrms, UINT dwOpt);
00221 HIS_RETURN Acquisition_Acquire_OffsetImage_PreloadCorr(HACQDESC hAcqDesc, WORD *pwOffsetData, UINT nRows, UINT nColumns, UINT nFrames, UINT dwOpt);
00222 HIS_RETURN Acquisition_GetHwHeader(HACQDESC hAcqDesc,unsigned char* pData,unsigned int uiSize);
00223 HIS_RETURN Acquisition_Acquire_GainImage_Ex_ROI_PreloadCorr(HACQDESC hAcqDesc, DWORD *pGainData, UINT nRows, UINT nCols, UINT nFrames, UINT dwOpt,UINT uiULX,UINT uiULY,UINT uiBRX,UINT uiBRY,UINT uiMode);
00224 HIS_RETURN Acquisition_Acquire_GainImage_PreloadCorr(HACQDESC hAcqDesc, DWORD *pGainData, UINT nRows, UINT nCols, UINT nFrames);
00225
00226 HIS_RETURN Acquisition_SetCameraBinningMode(HACQDESC hAcqDesc, WORD wMode);
00227 HIS_RETURN Acquisition_GetCameraBinningMode(HACQDESC hAcqDesc, WORD* wMode);
00228 HIS_RETURN Acquisition_ResetFrameCnt(HACQDESC hAcqDesc);
00229 HIS_RETURN Acquisition_GetLatestFrameHeader(HACQDESC hAcqDesc, CHwHeaderInfo *pInfo, CHwHeaderInfoEx *pInfoEx);
00230 HIS_RETURN Acquisition_GetHwHeaderInfoEx(HACQDESC hAcqDesc, CHwHeaderInfo *pInfo ,CHwHeaderInfoEx *pInfoEx);
00231 HIS_RETURN Acquisition_SetCameraTriggerMode(HACQDESC hAcqDesc, WORD wMode);
00232 HIS_RETURN Acquisition_GetCameraTriggerMode(HACQDESC hAcqDesc, WORD *wMode);
00233
00234
00235 HIS_RETURN Acquisition_DefineDestBuffersEx_32(HACQDESC hAcqDesc, void* pProcessedData, UINT nFrames, UINT nRows, UINT nColumns,UINT m_dwDataType);
00236 HIS_RETURN Acquisition_Init_Ex(HACQDESC *phAcqDesc,
00237 DWORD dwChannelType, int nChannelNr,
00238 BOOL bEnableIRQ,
00239 UINT Rows, UINT Columns,
00240 UINT dwSortFlags,
00241 BOOL bSelfInit, BOOL bAlwaysOpen,
00242 BOOL bEnable32Bit);
00243 HIS_RETURN Acquisition_SetCorrData_Ex_32(HACQDESC hAcqDesc, void *pwOffsetData, void *pwGainData,
00244 void *pwGainAvgData,UINT nGainFrames, DWORD *pdwGainData, DWORD *pdwPxlCorrList, DWORD dwDataType);
00245 HIS_RETURN Acquisition_Acquire_OffsetImage_32(HACQDESC hAcqDesc, void *pOffsetData, UINT nRows, UINT nCols, UINT nFrames, DWORD dwDataType);
00246 HIS_RETURN Acquisition_Acquire_OffsetImage_Ex_32(HACQDESC hAcqDesc, void *pwOffsetData, UINT nRows, UINT nColumns, UINT nFrames, UINT dwOpt, DWORD dwDataType);
00247 HIS_RETURN Acquisition_Acquire_OffsetImage_PreloadCorr_32(HACQDESC hAcqDesc, void *pOffsetData, UINT nRows, UINT nColumns, UINT nFrames, UINT dwOpt, DWORD dwDataType);
00248
00249 HIS_RETURN Acquisition_SetRotationAngle(HACQDESC hAcqDesc, long lRotAngle);
00250 HIS_RETURN Acquisition_GetRotationAngle(HACQDESC hAcqDesc, long* lRotAngle);
00251
00252 #ifdef __cplusplus
00253 }
00254 #endif
00255
00256
00257
00258 #define HIS_ALL_OK 0
00259 #define HIS_ERROR_MEMORY 1
00260 #define HIS_ERROR_BOARDINIT 2
00261 #define HIS_ERROR_NOCAMERA 3
00262 #define HIS_ERROR_CORRBUFFER_INCOMPATIBLE 4
00263 #define HIS_ERROR_ACQ_ALREADY_RUNNING 5
00264 #define HIS_ERROR_TIMEOUT 6
00265 #define HIS_ERROR_INVALIDACQDESC 7
00266 #define HIS_ERROR_VXDNOTFOUND 8
00267 #define HIS_ERROR_VXDNOTOPEN 9
00268 #define HIS_ERROR_VXDUNKNOWNERROR 10
00269 #define HIS_ERROR_VXDGETDMAADR 11
00270 #define HIS_ERROR_ACQABORT 12
00271 #define HIS_ERROR_ACQUISITION 13
00272 #define HIS_ERROR_VXD_REGISTER_IRQ 14
00273 #define HIS_ERROR_VXD_REGISTER_STATADR 15
00274 #define HIS_ERROR_GETOSVERSION 16
00275 #define HIS_ERROR_SETFRMSYNC 17
00276 #define HIS_ERROR_SETFRMSYNCMODE 18
00277 #define HIS_ERROR_SETTIMERSYNC 19
00278 #define HIS_ERROR_INVALID_FUNC_CALL 20
00279 #define HIS_ERROR_ABORTCURRFRAME 21
00280 #define HIS_ERROR_GETHWHEADERINFO 22
00281 #define HIS_ERROR_HWHEADER_INV 23
00282 #define HIS_ERROR_SETLINETRIG_MODE 24
00283 #define HIS_ERROR_WRITE_DATA 25
00284 #define HIS_ERROR_READ_DATA 26
00285 #define HIS_ERROR_SETBAUDRATE 27
00286 #define HIS_ERROR_NODESC_AVAILABLE 28
00287 #define HIS_ERROR_BUFFERSPACE_NOT_SUFF 29
00288 #define HIS_ERROR_SETCAMERAMODE 30
00289 #define HIS_ERROR_FRAME_INV 31
00290 #define HIS_ERROR_SLOW_SYSTEM 32
00291 #define HIS_ERROR_GET_NUM_BOARDS 33
00292 #define HIS_ERROR_HW_ALREADY_OPEN_BY_ANOTHER_PROCESS 34
00293 #define HIS_ERROR_CREATE_MEMORYMAPPING 35
00294 #define HIS_ERROR_VXD_REGISTER_DMA_ADDRESS 36
00295 #define HIS_ERROR_VXD_REGISTER_STAT_ADDR 37
00296 #define HIS_ERROR_VXD_UNMASK_IRQ 38
00297 #define HIS_ERROR_LOADDRIVER 39
00298 #define HIS_ERROR_FUNC_NOTIMPL 40
00299 #define HIS_ERROR_MEMORY_MAPPING 41
00300 #define HIS_ERROR_CREATE_MUTEX 42
00301 #define HIS_ERROR_ACQ 43
00302 #define HIS_ERROR_DESC_NOT_LOCAL 44
00303 #define HIS_ERROR_INVALID_PARAM 45
00304 #define HIS_ERROR_ABORT 46
00305 #define HIS_ERROR_WRONGBOARDSELECT 47
00306 #define HIS_ERROR_WRONG_CAMERA_MODE 48
00307 #define HIS_ERROR_AVERAGED_LOST 49
00308
00309
00310
00311 #define HIS_SORT_NOSORT 0
00312 #define HIS_SORT_QUAD 1
00313 #define HIS_SORT_COLUMN 2
00314 #define HIS_SORT_COLUMNQUAD 3
00315 #define HIS_SORT_QUAD_INVERSE 4
00316 #define HIS_SORT_QUAD_TILE 5
00317 #define HIS_SORT_QUAD_TILE_INVERSE 6
00318 #define HIS_SORT_QUAD_TILE_INVERSE_SCRAMBLE 7
00319 #define HIS_SORT_OCT_TILE_INVERSE 8 // 1640 and 1620
00320 #define HIS_SORT_OCT_TILE_INVERSE_BINDING 9 // 1680
00321 #define HIS_SORT_OCT_TILE_INVERSE_DOUBLE 10 // 1620 reverse
00322 #define HIS_SORT_HEX_TILE_INVERSE 11 // 1621 ADIC
00323 #define HIS_SORT_HEX_CS 12 // 1620/1640 continous scan
00324 #define HIS_SORT_12x1 13 // 12X1 Combo
00325
00326
00327
00328 #define HIS_SEQ_TWO_BUFFERS 0x1
00329 #define HIS_SEQ_ONE_BUFFER 0x2
00330 #define HIS_SEQ_AVERAGE 0x4
00331 #define HIS_SEQ_DEST_ONE_FRAME 0x8
00332 #define HIS_SEQ_COLLATE 0x10
00333 #define HIS_SEQ_CONTINUOUS 0x100
00334 #define HIS_SEQ_LEAKAGE 0x1000
00335 #define HIS_SEQ_NONLINEAR 0x2000
00336 #define HIS_SEQ_AVERAGESEQ 0x4000 // sequence of averaged frames
00337
00338
00339 #define HIS_SYNCMODE_SOFT_TRIGGER 1
00340 #define HIS_SYNCMODE_INTERNAL_TIMER 2
00341 #define HIS_SYNCMODE_EXTERNAL_TRIGGER 3
00342 #define HIS_SYNCMODE_FREE_RUNNING 4
00343
00344 #define HIS_CAMMODE_SETSYNC 0x8
00345 #define HIS_CAMMODE_TIMEMASK 0x7
00346 #define HIS_CAMMODE_FPGA 0x7F
00347
00348 #define HIS_BOARD_TYPE_NOONE 0x0
00349 #define HIS_BOARD_TYPE_ELTEC 0x1
00350 #define HIS_BOARD_TYPE_DIPIX 0x2
00351 #define HIS_BOARD_TYPE_RS232 0x3
00352 #define HIS_BOARD_TYPE_USB 0x4
00353
00354 #define HIS_BOARD_TYPE_ELTEC_XRD_FGX 0x8
00355 #define HIS_BOARD_TYPE_ELTEC_XRD_FGE_Opto 0x10
00356
00357 #define HIS_MAX_TIMINGS 0x8
00358
00359 #endif //_ACQUISITION_H