VADAVIntf.h 30 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575
  1. #include <WinDNS.h>
  2. #ifndef VADAVINTF_H_INCLUDED
  3. #define VADAVINTF_H_INCLUDED
  4. ////// acquisition //////
  5. #ifdef NUM_UNSIGNED // use unsigned tVD_Nums
  6. #define tVD_Num unsigned short
  7. #else // use signed tVCA_Nums
  8. #define tVD_Num short
  9. #endif
  10. #pragma pack (4)
  11. // acquisition flags tVDACQ_CallBackRec.rFlags
  12. #define cVDACQ_FDark 0 // acquire dark frame
  13. #define cVDACQ_FBright 1 // acquire bright frame (dark otherwise)
  14. #define cVDACQ_FTestPat 2 // acquire test pattern (TFT only)
  15. #define cVDACQ_FRecentFrame 4 // retrieve recent frame (TFT only)
  16. #define cVDACQ_FBrightIgn (1<<31) // ignore state of the bit 'Bright' for machine control (affects some TFT only)
  17. // acquisition event types tVDACQ_CallBackRec.rType
  18. #define cVDACQ_ETTrace 0 // various information messages (mainly from acquistion thread<s>)
  19. #define cVDACQ_ETTraceT 1 // time-stamp and the information message
  20. #define cVDACQ_ETErr 2 // an error from the library's acquisition code
  21. #define cVDACQ_ETLastErr 3 // an error from Windows API, described by 'GetLastError'
  22. #define cVDACQ_ETWSAErr 4 // an error from Windows socket
  23. // acquisition events tVDACQ_CallBackRec.rEvent
  24. #define cVDACQ_EAbort 1 // application invokes VDACQ_Abort
  25. #define cVDACQ_EClose 2 // application invokes VDACQ_Close
  26. #define cVDACQ_ECapture 20 // a message from the library's acquisition thread<s>
  27. #define cVDACQ_ECapturePerc 21 // acquisition thread<s> tells percentage of completeness
  28. #define cVDACQ_ECaptureRecv 22 // acquisition thread<s> informs about new received data
  29. #define cVDACQ_EIdle 23 // acquisition thread tells that it have had idle time-slice
  30. #define cVDACQ_EReadoutDone 24
  31. #define cVDACQ_EExposureDone 25
  32. #define cVDACQ_EAT_Ready 14
  33. #define cVDACQ_EAT_Wait 26
  34. #define cVDACQ_ECaptureFrame 30
  35. #define cVDACQ_EStandardMode_Change 31 // Standard mode change start, using with cVDACQ_ETTraceT or cVDACQ_ETErr
  36. #define cVDACQ_EStandardMode_Done 32 // Standard mode change done
  37. #define cVDACQ_ERecordStop 41 // VDACQ_Record(FALSE)
  38. #define cVDACQ_ERecordStart 42 // VDACQ_Record(TRUE)
  39. #define cVDACQ_EReplay 45 // VDACQ_Replay
  40. #define cVDACQ_ELostFrameIndex 49 // VDACQ_GetLostFrameIndex
  41. #define cVDACQ_EMultiCalHandler_Init 51 // cVDACQ_FGC_MultiCalHandler
  42. #define cVDACQ_EMultiCalHandler_Change 52 // cVDACQ_FGC_MultiCalHandler
  43. #define cVDACQ_ECapture2_CalHandlerInit 61 // cVDACQ_FGC_CaptureCalHandler
  44. #define cVDACQ_ECapture2_Expose 62 // VDACQ_Capture2
  45. #define cVDACQ_ECapture2_Receive 63 // acquisition thread informs about "capture(one-shot) on dynamic"
  46. // acquisition events tVDACQ_CallBackRec.rStatus (=rSocket)
  47. #define cVDACQ_ESStart 1
  48. #define cVDACQ_ESGeneral 2
  49. #define cVDACQ_ESDone 3
  50. #define cVDACQ_ESWarning 4
  51. #define cVDACQ_ESError 5
  52. #define cVDACQ_ESException 6
  53. #define cVDACQ_ESStop 7
  54. // framegrabber acquisition control flags tVDACQ_CallBackRec.rFGControl
  55. #define cVDACQ_FFGCStop (1<<0) // FG control: stop acquisition
  56. #define cVDACQ_FFGCXOn (1<<1) // FG control: XRay is 'On'
  57. // keep this frame or add it to result when FGC_NoAve is OFF
  58. //information feedback record
  59. typedef struct CallBackRec{
  60. int rCode,
  61. rAborted;
  62. void *rUserCallBackProc,
  63. *rUserParam;
  64. HANDLE rThread = INVALID_HANDLE_VALUE;
  65. TCHAR rMsg[256];
  66. } tVD_CallBackRec;
  67. //information callback procedure
  68. typedef void(_stdcall *tVD_CallBackProc)(int, TCHAR *);
  69. // acquisition feedback record
  70. typedef struct {
  71. int rFlags, // combination of cVDACQ_Fxxxx
  72. rType, // cVDACQ_ETxxx
  73. rEvent; // cVDACQ_Exxx
  74. union {
  75. int rSocket; // 0:no relation to a 'socket'; otherwise socket's ID>0 (event's source ID)
  76. int rStatus; // cVDACQ_ESxxx; detailed status for each event
  77. };
  78. TCHAR rMsg[256]; // message (trace, wrn, err)
  79. int rFrameWidth, // full frame width
  80. rFrameHeight; // full frame height
  81. tVD_Num *rFrameBuffer; // user supplied frame buffer "AFrameBuffer"
  82. union {
  83. int rCaptureRows; // # of received rows (for single frame acquisition)
  84. int rCaptureFrames; // # of received full frames (for framegrabber)
  85. };
  86. int rCapturePercent; // received data in percents
  87. void *rUserCallBackProc, // user supplied "ACallBackProc"
  88. *rUserParam; // user supplied "AUserParam"
  89. int rAborted; // 0:none, 1:VDACQ_Abort, -1:internally
  90. void *rPacketData; // pointer to received packet; usually it is nil
  91. int rFGControl; // frame-grabber's control flags
  92. int rStandardMode; // Standard mode, defined depending on each model
  93. } tVDACQ_CallBackRec;
  94. // 'socket' ID #1: control-send (respective thread or real socket for Ethernet)
  95. // #2: control-receive
  96. // #3: data-receive
  97. // When callback is triggered by received message from detector it has non-nil field
  98. // PacketData. Normally an OEM application does not check received packets directly.
  99. // callback procedure
  100. typedef void (_stdcall *tVDACQ_CallBackProc)( tVDACQ_CallBackRec* );
  101. // framegrabber parameters for 'VDACQ_SetFGRec', 'VDACQ_GetFGRec'
  102. #define cVDACQ_FG_None 0 // use default acquisition (via Ethernet)
  103. #define cVDACQ_FG_NIIMAQ 1 // Nat Instr IMAQ
  104. #define cVDACQ_FG_AnyGrab 2 // VATech AnyGrabber
  105. #define cVDACQ_FG_FRM 3 // FRM11, FRM10 or FRM24 of DAQ systems
  106. #define cVDACQ_FG_FRM11 3 // for legacy SW compatibility
  107. #define cVDACQ_GigE_Vision 4 // GigE Vision
  108. #define cVDACQ_FG_CTT 4 // Contact-Us
  109. #define cVDACQ_FG_Et 5 // Ethernet 'default'
  110. #define cVDACQ_FG_OPT 6 // OPT01 of DAQ systems
  111. #define cVDACQ_Ethernet 7 // Ethernet
  112. #define cVDACQ_FG_FX3 8
  113. #define cVDACQ_FGC_NoUIXOn (1<<0) // disable UI XOn controls (when UI is used)
  114. #define cVDACQ_FGC_NoAve (1<<1) // disable calculation of the average frame
  115. #define cVDACQ_FGC_NoDesp (1<<2) // use simple median 3x3 when VDC_FDespeckle is set
  116. #define cVDACQ_FGC_StandardMode (1<<3) // use standard mode
  117. #define cVDACQ_FGC_MultiCalHandler (1<<4) // use standard mode
  118. #define cVDACQ_FGC_CaptureCalHandler (1<<5) // use capture (one-shot on dynamic)
  119. typedef struct {
  120. int rType, // one of VDACQ_FG_xxx
  121. rFG_Control, // combination of the flags 'VDACQ_FGC_xxx'
  122. rCalFlags, // combination of the flags 'VDC_Fxxxx'
  123. rRingBufs; // number of ring-buffers (0:continuous memory queue)
  124. TCHAR rInterfaceName[60];
  125. } tVDACQ_FGRec;
  126. ////// calibration //////
  127. // calibration flags
  128. #define cVDC_FCalOffs 1 // apply offset/dark calibration
  129. #define cVDC_FCalGain 2 // apply gain/bright calibration
  130. #define cVDC_FBadPixMap 4 // request application of bad pixels map
  131. #define cVDC_FDespeckle 8 // apply despeckle
  132. #define cVDC_FOptDist 16 // apply optical distortion correction
  133. #define cVDC_FAuxLnRecal 32 // apply auxiliary lines re-calibration
  134. #define cVDACQ_FCaptureCal (1<<8) // capture or oneshot calibration
  135. #define cVDC_FTempDirIP (1<<31) // save temporary images in default image direcotory
  136. // calibration event types
  137. #define cVDC_ETTrace 0 // information message from calibration code
  138. #define cVDC_ETTraceT 1 // time-stamp and information message
  139. #define cVDC_ETErr 2 // an error from the library's calibration code
  140. // calibration events
  141. #define cVDC_EAbort 1 // application invokes VDC_Abort
  142. #define cVDC_EClose 2 // application invokes VDC_Close
  143. #define cVDC_ECalib 20 // a message from the library's calibration code
  144. #define cVDC_ECalibPerc 21 // calibration code tells percentage of completeness
  145. // calibration feedback record
  146. typedef struct {
  147. int rFlags, // combination of cVDC_Fxxxx
  148. rType, // cVDC_ETxxx
  149. rEvent; // cVDC_Exxx
  150. TCHAR rMsg[256]; // message (trace, wrn, err)
  151. int rFrameWidth, // full frame width
  152. rFrameHeight, // full frame height
  153. rStoredWidth, // stored image width
  154. rStoredHeight, // stored image height
  155. rCalibPercent; // amount of processed data in %
  156. tVD_Num *rFrameBuffer, // received frame data
  157. *rImageBuffer; // cropped image
  158. void *rUserCallBackProc, // user supplied "ACallBackProc"
  159. *rUserParam; // user supplied "AUserParam"
  160. int rAborted; // 1: set by VDC_Abort; -1:internally
  161. } tVDC_CallBackRec;
  162. // callback procedure
  163. typedef void (_stdcall *tVDC_CallBackProc)( tVDC_CallBackRec* );
  164. typedef struct {
  165. int rImgCutLeft, // cut left after rotation & flip
  166. rImgCutTop, // cut top after rotation & flip
  167. rImgCutRight, // cut right after rotation & flip
  168. rImgCutBottom, // cut bottom after rotation & flip
  169. rRotation, // 0:none, 1:90 deg CCW, 2:90 deg CW
  170. rFlip; // bit #0: flip horz, bit #1: flip vert
  171. } tVDC_ImgCut;
  172. ///// image process /////
  173. // img process flags
  174. #define cVDIP_FDespeckle 1 // apply despeckle
  175. #define cVDIP_F3PCurve 2 // apply 3-points curve or simple inversion
  176. #define cVDIP_FUSMask 4 // apply all unsharpen filters
  177. // img process event types
  178. #define cVDIP_ETTrace 0 // information message from 'enhancement' code
  179. #define cVDIP_ETTraceT 1 // time-stamp and information message
  180. #define cVDIP_ETErr 2 // an error from the library's 'enhancement' code
  181. // img process events
  182. #define cVDIP_EAbort 1 // application invokes VDIP_Abort
  183. #define cVDIP_EClose 2 // application invokes VDIP_Close
  184. #define cVDIP_EEnh 20 // information message from 'enhancement' code
  185. #define cVDIP_EEnhPerc 21 // 'enhancement' code tells percentage of completeness
  186. // img process feedback record
  187. typedef struct {
  188. int rFlags, // combination of cVDC_Fxxxx
  189. rType, // cVDC_ETxxx
  190. rEvent; // cVDC_Exxx
  191. TCHAR rMsg[256]; // message (trace, wrn, err)
  192. int rStoredWidth, // stored image width
  193. rStoredHeight, // stored image height
  194. rEnhPercent, // processed data in %
  195. rModeNumber; // img process mode
  196. tVD_Num *rImageBuffer; // image buffer
  197. void *rUserCallBackProc, // user supplied "ACallBackProc"
  198. *rUserParam; // user supplied "AUserParam"
  199. int rAborted; // 1: set by VDIP_Abort; -1:internally
  200. } tVDIP_CallBackRec;
  201. // callback procedure
  202. typedef void (_stdcall *tVDIP_CallBackProc)( tVDIP_CallBackRec* );
  203. #pragma pack ()
  204. #define DWORD_FLAG_MODE_COMMON (DWORD)0x00
  205. #define DWORD_FLAG_MODE_BINNING (DWORD)0x01
  206. #define DWORD_FLAG_MODE_PARTIALVALUE (DWORD)0x02
  207. #define DWORD_FLAG_MODE_FRAMERATE (DWORD)0x04
  208. #define DWORD_FLAG_MODE_SENSITIVITY (DWORD)0x08
  209. #define DWORD_FLAG_MODE_DYNAMICTRIGGER (DWORD)0x10
  210. #define DWORD_FLAG_MODE_ONESHOTTRIGGER (DWORD)0x20
  211. #define DWORD_FLAG_MODE_CAPTUREEXPOSURETIME (DWORD)0x40
  212. #define DWORD_FLAG_MODE_CAPTUREWAITTIME (DWORD)0x80
  213. #define DWORD_FLAG_CLOSING_NORMAL (DWORD)0x00
  214. #define DWORD_FLAG_CLOSING_TIMEOUT (DWORD)0x01
  215. #define DWORD_FLAG_CLOSING_INIT_FAULT (DWORD)0x02
  216. typedef void(_stdcall* GetDetectorModeCallback)(DWORD, DWORD, const TCHAR*);
  217. #define cVD_IntParamNone 0x80000000 // for VD_IntParam
  218. #ifdef INTERNAL_VATECH_DAVINCI_LIBRARY // procedures' declarations ('as is' in the DLL)
  219. // general UI and logs //
  220. // returns TRUE if UNICODE version
  221. BOOL _stdcall VD_IsUnicode();
  222. // invokes general property sheet
  223. BOOL _stdcall VD_Dialog();
  224. // open log-file
  225. void _stdcall VD_LogOpen( const TCHAR *AHomeDir, int ANumLogFiles, const TCHAR *AFPrefix );
  226. // record string to log-file
  227. void _stdcall VD_LogMsg( const TCHAR *AMsg );
  228. // close log-file
  229. void _stdcall VD_LogClose();
  230. // flush log-file
  231. void _stdcall VD_LogFlush();
  232. // returns home directory
  233. void _stdcall VD_GetHomeDirectory( TCHAR *ADir );
  234. // set section name in library's initialization profile file
  235. void _stdcall VD_IniProfSetSection( const TCHAR *ASectName );
  236. // get string key from library's initialization profile
  237. const TCHAR* _stdcall VD_IniProfGetStr( const TCHAR *AKeyName, const TCHAR *ADefault );
  238. // set/get "data segment" (static) parameter
  239. int _stdcall VD_IntParam( const TCHAR *AParamName, int AParamValue );
  240. const TCHAR* _stdcall VD_StrParam( const TCHAR *AParamName, const TCHAR *AParamValue );
  241. ////// acquisition //////
  242. // sets full frame dimension (should not be called for real acquisitin case)
  243. void _stdcall VDACQ_SetFrameDim( int AWidth, int AHeight );
  244. // returns full frame dimension
  245. void _stdcall VDACQ_GetFrameDim( int *AWidth, int *AHeight );
  246. // connects to detector
  247. tVDACQ_CallBackRec* _stdcall VDACQ_Connect( int AFlags,
  248. tVDACQ_CallBackProc AUserCallBackProc, void *AUserParam, tVD_Num *AFrameBuffer, int AMode );
  249. void _stdcall rVDACQ_SetCaptureBuf(tVD_Num *AFrameBuffer);
  250. // send simple auxiliary command (TFT only)
  251. BOOL _stdcall VDACQ_SendCommand( tVDACQ_CallBackRec *ACallBackRec, DWORD ACommand );
  252. BOOL _stdcall VDACQ_SendCommandParam( tVDACQ_CallBackRec *ACallBackRec, DWORD ACommand, const void *AData, int ADataSize );
  253. // vendor comand (USB only)
  254. BOOL _stdcall VDACQ_VendorCommand( tVDACQ_CallBackRec *ACallBackRec, int ARequest, int AValue, int AIndex );
  255. // starts acquisition
  256. BOOL _stdcall VDACQ_StartFrame( tVDACQ_CallBackRec *ACallBackRec );
  257. // aborts acquisition
  258. BOOL _stdcall VDACQ_Abort( tVDACQ_CallBackRec *ACallBackRec );
  259. // releases resources associated with ACallBackRec
  260. void _stdcall VDACQ_Close( tVDACQ_CallBackRec *ACallBackRec );
  261. void _stdcall VDACQ_Resume();
  262. void _stdcall VDACQ_Stop();
  263. void _stdcall VDACQ_Capture(int nMode);
  264. void _stdcall VDACQ_Capture2(tVDACQ_CallBackRec *ACallBackRec);
  265. void _stdcall VDC_CalDir(int nNum);
  266. // returns current detector's IP or PID
  267. void _stdcall VDACQ_GetDetectorAddr( TCHAR *AIPAddr );
  268. // sets detector's IP or PID
  269. void _stdcall VDACQ_SetDetectorAddr( const TCHAR *AAddr );
  270. // sets framegrabber's parameters
  271. void _stdcall VDACQ_SetFGRec( const tVDACQ_FGRec *AFGRec );
  272. // returns framegrabber's parameters
  273. void _stdcall VDACQ_GetFGRec( tVDACQ_FGRec *AFGRec );
  274. // returns current number of acquired frames at low-level
  275. int _stdcall VDACQ_GetFGFrameNum();
  276. // sets freeze state for framegrabber; AFreezeState<0 just returns current state
  277. int _stdcall VDACQ_FGFreeze( int AFreezeState );
  278. // set detector's information to flash memory (as ASCII)
  279. BOOL _stdcall VDACQ_GetDetectorInfo( TCHAR *AStr );
  280. // retrieve detector's information from flash memory (as ASCII)
  281. BOOL _stdcall VDACQ_SetDetectorInfo( const TCHAR *AStr );
  282. // returns Detector FPGA version
  283. bool _stdcall VDACQ_GetVersionFPGA(TCHAR* Aversion);
  284. // returns Detector MCU version
  285. bool _stdcall VDACQ_GetVersionMCU(TCHAR* Aversion);
  286. // returns Detector Serial number
  287. bool _stdcall VDACQ_GetSerialNumber(TCHAR* Aserialnum);
  288. // returns Detector Model name
  289. bool _stdcall VDACQ_GetModelName(TCHAR* Amodelname);
  290. // returns Detector current state
  291. bool _stdcall VDACQ_GetDetectorState(int* Aresult);
  292. ////// calibration //////
  293. // returns image dimension; returns FALSE if all cut margins are zero
  294. BOOL _stdcall VDC_GetImageDim( int *AWidth, int *AHeight );
  295. // cuts (also rotates and flips optionally) frame buffer to image's dimension.
  296. tVD_Num *_stdcall VDC_CutImage( const tVD_Num *AFrameBuffer, tVD_Num *AImageBuffer );
  297. tVD_Num *_stdcall VDC_ROIImage( const tVD_Num *AFrameBuffer, tVD_Num *AImageBuffer, int ATargetX, int ATargetY, int ATargetWidth, int ATargetHeight );
  298. // starts calibration
  299. tVDC_CallBackRec* _stdcall VDC_Process( int AFlags,
  300. tVDC_CallBackProc AUserCallBackProc, void *AUserParam, tVD_Num *AFrameBuffer );
  301. tVDC_CallBackRec* _stdcall VDC_Process_OneShot( int AFlags,
  302. tVDC_CallBackProc AUserCallBackProc, void *AUserParam, tVD_Num *AFrameBuffer );
  303. // aborts calibration
  304. BOOL _stdcall VDC_Abort( tVDC_CallBackRec *ACallBackRec );
  305. // releases resources associated with ACallBackRec
  306. void _stdcall VDC_Close( tVDC_CallBackRec *ACallBackRec );
  307. // service: returns current calibration directory
  308. void _stdcall VDC_GetCalibrationDirectory( TCHAR *ADir );
  309. // service: set temporary calibration directory
  310. BOOL _stdcall VDC_SetCalibrationDirectory( const TCHAR *ADir );
  311. // service: returns image cut params
  312. void _stdcall VDC_GetImgCutParams( tVDC_ImgCut *ACutParams );
  313. // service: sets image cut params
  314. void _stdcall VDC_SetImgCutParams( const tVDC_ImgCut *ACutParams );
  315. void _stdcall VDC_SetDigitalGain( double nGain );
  316. double _stdcall VDC_GetDigitalGain();
  317. ///// image process /////
  318. // starts img process
  319. tVDIP_CallBackRec* _stdcall VDIP_Process( int AFlags,
  320. tVDIP_CallBackProc AUserCallBackProc, void *AUserParam, tVD_Num *AImageBuffer, int AModeNumber );
  321. // aborts img process
  322. BOOL _stdcall VDIP_Abort( tVDIP_CallBackRec *ACallBackRec );
  323. // releases resources associated with ACallBackRec
  324. void _stdcall VDIP_Close( tVDIP_CallBackRec *ACallBackRec );
  325. //// user interface /////
  326. void _stdcall VD_Set_Acquisition( int AFlags, tVD_Num *AFrameData, int AMode, tVDACQ_CallBackProc AUserCallBackProc, void *AUserParam );
  327. void _stdcall VD_Set_Calibration( int AFlags, tVD_Num *AFrameData, tVD_Num *AImgData, tVDC_CallBackProc AUserCallBackProc, void *AUserParam );
  328. void _stdcall VD_Set_ImgProcess( int AFlags, tVD_Num *AImgData, int AModeNumber, tVDIP_CallBackProc AUserCallBackProc, void *AUserParam );
  329. // default modal dialog with preview
  330. int _stdcall VD_GetImage( HWND AOwner );
  331. // modal dialog with preview in specified rectangle
  332. int _stdcall VD_GetImageSP( HWND AOwner, int AWndLeft, int AWndTop, int AWndWidth, int AWndHeight );
  333. // modal dialog withoiut preview
  334. int _stdcall VD_GetImageA( HWND AOwner, int AWndLeft, int AWndTop );
  335. // cancel modal dialog
  336. void _stdcall VD_GetImageCancel();
  337. BOOL _stdcall VD_GetDark(int nFrameNum, int nSkip, int nTimeout, BOOL bDataSeires);
  338. BOOL _stdcall VD_GetDark_Forced(int nFrameNum, int nSkip, int nTimeout, BOOL bDataSeires);
  339. BOOL _stdcall VD_GetBright(int nFrameNum, int nSkip, int nTimeout, BOOL bDataSeires);
  340. int _stdcall VD_GetBright2(int nFrameNum, int nSkip, int nTimeout, BOOL bDataSeires);
  341. BOOL _stdcall VD_Grab(tVD_Num *pImage, int nCalFlag, int nFrameNum, int nSkip, int nTimeout, BOOL bDataSeires);
  342. BOOL _stdcall VD_CheckInterface(int nTimeout);
  343. void _stdcall VD_GigE_Init();
  344. BOOL _stdcall VDC_GenerateBright();
  345. BOOL _stdcall VDC_GenerateBPM();
  346. void _stdcall VDC_NoiseReduction(unsigned short *pInputData, int nWidth, int nHeight, float nPara1, int nPara2);
  347. int CalGO_GetIntFromStr( const TCHAR *AStr, int APos, int ALen );
  348. BOOL _stdcall VDACQ_SetBinning( int nBinning );
  349. BOOL _stdcall VDACQ_SetFrameRate( float nFrameRate );
  350. BOOL _stdcall VDACQ_SetSensitivity( int nSensitivity );
  351. BOOL _stdcall VDACQ_SetPartialValue(int nValue);
  352. BOOL _stdcall VDACQ_SetRFMode(int nValue);
  353. BOOL _stdcall VDACQ_SetOneShot( int nOneShotMode );
  354. BOOL _stdcall VDACQ_SetDynamic_Trigger( int nDynamicTriggerMode );
  355. BOOL _stdcall VDACQ_SetOneShot_Trigger(int nOneShotTriggerMode);
  356. void _stdcall VDC_SetRecursiveFilter( int bEnable );
  357. int _stdcall VDACQ_GetBinning();
  358. double _stdcall VDACQ_GetFrameRate();
  359. int _stdcall VDACQ_GetSensitivity();
  360. int _stdcall VDACQ_GetPartialValue();
  361. int _stdcall VDACQ_GetRFMode();
  362. BOOL _stdcall VDACQ_GetOneShot();
  363. int _stdcall VDACQ_GetDynamic_Trigger();
  364. int _stdcall VDACQ_GetOneShot_Trigger();
  365. BOOL _stdcall VDC_GetRecursiveFilter();
  366. BOOL _stdcall VD_FreeResource();
  367. BOOL _stdcall VDC_GenerateBright();
  368. void _stdcall VD_IniSave();
  369. BOOL _stdcall VDACQ_SecondCtrl();
  370. BOOL _stdcall VDACQ_ModeLock(BOOL bLock);
  371. BOOL _stdcall VD_GetDetectorMode(DWORD dwFlags, GetDetectorModeCallback pCallbackproc);
  372. DWORD _stdcall VD_GetLastError();
  373. int _stdcall VDACQ_GetCaptureExposureTime();
  374. BOOL _stdcall VDACQ_SetCaptureExposureTime(int);
  375. int _stdcall VDACQ_GetCaptureWaitTime();
  376. BOOL _stdcall VDACQ_SetCaptureWaitTime(int);
  377. tVD_CallBackRec* _stdcall VD_IntgTimeCalibration(tVD_CallBackProc AUserCallBackProc);
  378. BOOL _stdcall VD_GenerateBPM(tVD_CallBackProc);
  379. BOOL _stdcall VDACQ_DarkReloadInAcquisition(tVDACQ_CallBackRec*);
  380. QWORD _stdcall VD_GetVersionVADAV();
  381. QWORD _stdcall VD_GetVersionVACAL();
  382. QWORD _stdcall VD_GetVersionView16();
  383. BOOL _stdcall VDACQ_SetDynExposureTime(float);
  384. BOOL _stdcall VDAUX_IsAbleStretch();
  385. BOOL _stdcall VDAUX_SetStretch(int srcW, int srcH, float dstPX, float dstPY);
  386. BOOL _stdcall VDAUX_GetStretchDim(int* dstW, int* dstH);
  387. BOOL _stdcall VDAUX_DoStretch(const unsigned short* src, unsigned short* dst);
  388. BOOL _stdcall VDACQ_IsAbleStandardMode();
  389. BOOL _stdcall VDACQ_InitStandardMode(int nFlag);
  390. BOOL _stdcall VDACQ_SetStandardMode(int nMode, tVDACQ_CallBackRec *ACallBackRec);
  391. BOOL _stdcall VDACQ_IsAbleReplay();
  392. BOOL _stdcall VDACQ_Record(BOOL bStart);
  393. BOOL _stdcall VDACQ_Replay(int nStartIndex, int nFrameCount);
  394. int _stdcall VDACQ_GetLostFrameIndex(int nCount, unsigned short *pIndex);
  395. BOOL _stdcall VDACQ_SetMultiCalHandler(int nHandlerNum);
  396. #else // for use in applications
  397. // table of exported methods
  398. typedef struct {
  399. HINSTANCE rHDLL; // the library's handle
  400. // general UI and logs //
  401. BOOL (_stdcall *rVD_IsUnicode)(void);
  402. BOOL (_stdcall *rVD_Dialog)( HWND ); // it has additional parameter: owner's window
  403. void (_stdcall *rVD_LogOpen)( const TCHAR*, int, const TCHAR* );
  404. void (_stdcall *rVD_LogMsg)( const TCHAR* );
  405. void (_stdcall *rVD_LogClose)(void);
  406. void (_stdcall *rVD_LogFlush)(void);
  407. void (_stdcall *rVD_GetHomeDirectory)( TCHAR* );
  408. void (_stdcall *rVD_IniProfSetSection)( const TCHAR* );
  409. const TCHAR* (_stdcall *rVD_IniProfGetStr)( const TCHAR*, const TCHAR* );
  410. int (_stdcall *rVD_IntParam)( const TCHAR*, int );
  411. const TCHAR* (_stdcall *rVD_StrParam)( const TCHAR*, const TCHAR* );
  412. ////// acquisition //////
  413. void (_stdcall *rVDACQ_SetFrameDim)( int, int );
  414. void (_stdcall *rVDACQ_GetFrameDim)( int*, int* );
  415. tVDACQ_CallBackRec* (_stdcall *rVDACQ_Connect)(int, tVDACQ_CallBackProc, void*, tVD_Num*, int);
  416. void(_stdcall *rVDACQ_SetCaptureBuf)(tVD_Num *);
  417. BOOL (_stdcall *rVDACQ_SendCommand)( tVDACQ_CallBackRec*, DWORD );
  418. BOOL (_stdcall *rVDACQ_SendCommandParam)( tVDACQ_CallBackRec*, DWORD, const void*, int );
  419. BOOL (_stdcall *rVDACQ_StartFrame)( tVDACQ_CallBackRec* );
  420. BOOL (_stdcall *rVDACQ_VendorCommand)( tVDACQ_CallBackRec*, int, int, int );
  421. BOOL (_stdcall *rVDACQ_Abort)( tVDACQ_CallBackRec* );
  422. void (_stdcall *rVDACQ_Close)( tVDACQ_CallBackRec* );
  423. void (_stdcall *rVDACQ_Stop)( );
  424. void (_stdcall *rVDACQ_Resume)( );
  425. void (_stdcall *rVDACQ_Capture)(int nMode );
  426. void (_stdcall *rVDACQ_Capture2)(tVDACQ_CallBackRec *ACallBackRec);
  427. void (_stdcall *rVDACQ_GetDetectorAddr)( TCHAR* );
  428. void (_stdcall *rVDACQ_SetDetectorAddr)( const TCHAR* );
  429. void (_stdcall *rVDACQ_SetFGRec)( const tVDACQ_FGRec*);
  430. void (_stdcall *rVDACQ_GetFGRec)( tVDACQ_FGRec* );
  431. int (_stdcall *rVDACQ_GetFGFrameNum)(void);
  432. int (_stdcall *rVDACQ_FGFreeze)( int );
  433. BOOL (_stdcall *rVDACQ_GetDetectorInfo)( TCHAR* );
  434. BOOL (_stdcall *rVDACQ_SetDetectorInfo)( const TCHAR* );
  435. bool(_stdcall *rVDACQ_GetVersionFPGA)(TCHAR*);
  436. bool(_stdcall *rVDACQ_GetVersionMCU)(TCHAR*);
  437. bool(_stdcall *rVDACQ_GetSerialNumber)(TCHAR*);
  438. bool(_stdcall *rVDACQ_GetModelName)(TCHAR*);
  439. bool(_stdcall *rVDACQ_GetDetectorState)(int*);
  440. ////// calibration //////
  441. BOOL (_stdcall *rVDC_GetImageDim)( int*, int* );
  442. tVD_Num* (_stdcall *rVDC_CutImage)(const tVD_Num*, tVD_Num*);
  443. tVD_Num* (_stdcall *rVDC_ROIImage)(const tVD_Num*, tVD_Num*, int, int, int, int);
  444. tVDC_CallBackRec* (_stdcall *rVDC_Process)(int, tVDC_CallBackProc, void*, tVD_Num*);
  445. BOOL (_stdcall *rVDC_Abort)( tVDC_CallBackRec* );
  446. void (_stdcall *rVDC_Close)( tVDC_CallBackRec* );
  447. void (_stdcall *rVDC_GetCalibrationDirectory)( TCHAR* );
  448. BOOL (_stdcall *rVDC_SetCalibrationDirectory)( const TCHAR* );
  449. void (_stdcall *rVDC_GetImgCutParams)( tVDC_ImgCut* );
  450. void (_stdcall *rVDC_SetImgCutParams)( const tVDC_ImgCut* );
  451. void (_stdcall *rVDC_SetDigitalGain)( double );
  452. double (_stdcall *rVDC_GetDigitalGain)( );
  453. ///// image process /////
  454. tVDIP_CallBackRec* (_stdcall *rVDIP_Process)(int, tVDIP_CallBackProc, void*, tVD_Num*, int);
  455. BOOL (_stdcall *rVDIP_Abort)( tVDIP_CallBackRec* );
  456. void (_stdcall *rVDIP_Close)( tVDIP_CallBackRec* );
  457. //// user interface /////
  458. void(_stdcall *rVD_Set_Acquisition)(int, tVD_Num*, int, tVDACQ_CallBackProc, void*);
  459. void(_stdcall *rVD_Set_Calibration)(int, tVD_Num*, tVD_Num*, tVDC_CallBackProc, void*);
  460. void(_stdcall *rVD_Set_ImgProcess)(int, tVD_Num*, int, tVDIP_CallBackProc, void*);
  461. int (_stdcall *rVD_GetImage)( HWND );
  462. int (_stdcall *rVD_GetImageSP)( HWND, int, int, int, int );
  463. int (_stdcall *rVD_GetImageA)( HWND, int, int );
  464. void (_stdcall *rVD_GetImageCancel)(void);
  465. BOOL (_stdcall *rVD_GetDark)(int, int, int, BOOL);
  466. BOOL (_stdcall *rVD_GetDark_Forced)(int, int, int, BOOL);
  467. BOOL (_stdcall *rVD_GetBright)(int, int, int, BOOL);
  468. int (_stdcall *rVD_GetBright2)(int, int, int, BOOL);
  469. BOOL(_stdcall *rVD_Grab)(tVD_Num *, int, int, int, int, BOOL);
  470. BOOL (_stdcall *rVD_CheckInterface) (int );
  471. void (_stdcall *rVD_GigE_Init)( void );
  472. BOOL (_stdcall *rVDC_GenerateBright)( );
  473. BOOL (_stdcall *rVDC_GenerateBPM)( );
  474. void (_stdcall *rVDC_NoiseReduction)(unsigned short *, int, int, float, int);
  475. BOOL (_stdcall *rVDACQ_SetRFMode)( int nValue );
  476. BOOL (_stdcall *rVDACQ_SetBinning)( int nBinning );
  477. BOOL (_stdcall *rVDACQ_SetPartialValue)( int nValue );
  478. BOOL (_stdcall *rVDACQ_SetFrameRate)( float nFrameRate );
  479. BOOL (_stdcall *rVDACQ_SetSensitivity)( int nSensitivity );
  480. BOOL (_stdcall *rVDACQ_SetOneShot)( int nOneShotMode );
  481. BOOL (_stdcall *rVDACQ_SetDynamic_Trigger)( int nDynamicTriggerMode );
  482. BOOL (_stdcall *rVDACQ_SetOneShot_Trigger)( int nOneShotTriggerMode );
  483. void (_stdcall *rVDC_SetRecursiveFilter)( int bEnable );
  484. int (_stdcall *rVDACQ_GetBinning)();
  485. double (_stdcall *rVDACQ_GetFrameRate)();
  486. int (_stdcall *rVDACQ_GetSensitivity)();
  487. int (_stdcall *rVDACQ_GetPartialValue)();
  488. int (_stdcall *rVDACQ_GetRFMode)();
  489. BOOL (_stdcall *rVDACQ_GetOneShot)();
  490. int (_stdcall *rVDACQ_GetDynamic_Trigger)();
  491. int (_stdcall *rVDACQ_GetOneShot_Trigger)();
  492. BOOL (_stdcall *rVDC_GetRecursiveFilter)();
  493. BOOL (_stdcall *rVD_FreeResource)( );
  494. void (_stdcall *rVD_RegisterCallbackInfo)(tVD_CallBackProc );
  495. void (_stdcall *rVDC_CalDir)( int nNum );
  496. void (_stdcall *rVD_IniSave)();
  497. BOOL (_stdcall *rVDACQ_SecondCtrl)();
  498. BOOL (_stdcall *rVDACQ_ModeLock)(BOOL);
  499. BOOL (_stdcall *rVD_GetDetectorMode)(DWORD, GetDetectorModeCallback);
  500. DWORD (_stdcall *rVD_GetLastError)();
  501. int (_stdcall *rVDACQ_GetCaptureExposureTime)();
  502. BOOL (_stdcall *rVDACQ_SetCaptureExposureTime)(int);
  503. int (_stdcall *rVDACQ_GetCaptureWaitTime)();
  504. BOOL (_stdcall *rVDACQ_SetCaptureWaitTime)(int);
  505. tVD_CallBackRec* (_stdcall *rVD_IntgTimeCalibration)(tVD_CallBackProc);
  506. BOOL (_stdcall* rVD_GenerateBPM)(tVD_CallBackProc);
  507. BOOL(_stdcall* rVDACQ_DarkReloadInAcquisition)(tVDACQ_CallBackRec*);
  508. QWORD(_stdcall* rVD_GetVersionVADAV)();
  509. QWORD(_stdcall* rVD_GetVersionVACAL)();
  510. QWORD(_stdcall* rVD_GetVersionView16)();
  511. BOOL(_stdcall* rVDACQ_SetDynExposureTime)(float);
  512. BOOL (_stdcall* rVDAUX_IsAbleStretch)();
  513. BOOL (_stdcall* rVDAUX_SetStretch)(int srcW, int srcH, float dstPX, float dstPY);
  514. BOOL (_stdcall* rVDAUX_GetStretchDim)(int* dstW, int* dstH);
  515. BOOL (_stdcall* rVDAUX_DoStretch)(const unsigned short* src, unsigned short* dst);
  516. BOOL(_stdcall* rVDACQ_IsAbleStandardMode)();
  517. BOOL(_stdcall* rVDACQ_InitStandardMode)(int nFlag);
  518. BOOL (_stdcall* rVDACQ_SetStandardMode)(int nMode, tVDACQ_CallBackRec *ACallBackRec);
  519. BOOL (_stdcall* rVDACQ_IsAbleReplay)();
  520. BOOL (_stdcall* rVDACQ_Record)(int nStart, tVDACQ_CallBackRec *ACallBackRec);
  521. BOOL (_stdcall* rVDACQ_Replay)(int nStartIndex, int nFrameCount, tVDACQ_CallBackRec *ACallBackRec);
  522. int (_stdcall* rVDACQ_GetLostFrameIndex)(int nCount, unsigned short *pIndex);
  523. BOOL (_stdcall* rVDACQ_SetMultiCalHandler)(int nHandlerNum);
  524. } tVADAV_InterfaceRec;
  525. BOOL VADAV_MapDLL( const TCHAR *ADllFName, tVADAV_InterfaceRec *AIntfRec );
  526. // calls LoadLibrary and fills "AIntfRec"
  527. void VADAV_ReleaseDLL( tVADAV_InterfaceRec *AIntfRec );
  528. // calls FreeLibrary
  529. #endif // for use in applications
  530. #endif // ifdef VADAVINTF_H_INCLUDED