PZMedical2121ZCtrl.h 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462
  1. /* -------------------------------------------------------------------------
  2. // 文件名 : PZMedical2121ZCtrl.h
  3. // 创建者 : Wangyuedong
  4. // 创建时间 : 2022-08-08
  5. // 功能描述 : PZMedical2121Z动态探测器功能实现
  6. // -----------------------------------------------------------------------*/
  7. #pragma once
  8. #include <map>
  9. #include "acqctrl.h"
  10. #include "rfmodeconfigures.h"
  11. #include "PZModeConfigures.h"
  12. #include "AppSettings.h"
  13. #include "include\\NetCom.h"
  14. using namespace std;
  15. class CShareMem;
  16. //4.1.16版本SDK的API接口
  17. #define _PZMEDICALAPI typedef __declspec(dllimport)
  18. _PZMEDICALAPI BOOL(__stdcall * PZ_COM_Init)();
  19. _PZMEDICALAPI BOOL(__stdcall * PZ_COM_List)(TComFpList*);
  20. _PZMEDICALAPI BOOL(__stdcall * PZ_COM_Open)(CHAR*);
  21. _PZMEDICALAPI BOOL(__stdcall * PZ_COM_Close)();
  22. _PZMEDICALAPI BOOL(__stdcall * PZ_COM_SetCfgFilePath)(CHAR*);
  23. _PZMEDICALAPI BOOL(__stdcall * PZ_COM_LogPathGet)(CHAR*);
  24. _PZMEDICALAPI BOOL(__stdcall * PZ_COM_LogPathSet)(CHAR*);
  25. _PZMEDICALAPI BOOL(__stdcall * PZ_COM_HstAcq)();
  26. _PZMEDICALAPI BOOL(__stdcall * PZ_COM_Trigger)();
  27. _PZMEDICALAPI BOOL(__stdcall * PZ_COM_Stop)();
  28. _PZMEDICALAPI BOOL(__stdcall * PZ_COM_Dacq)();
  29. _PZMEDICALAPI BOOL(__stdcall * PZ_COM_Cbct)();
  30. _PZMEDICALAPI BOOL(__stdcall * PZ_COM_GetImage)(CHAR*);
  31. _PZMEDICALAPI BOOL(__stdcall * PZ_COM_GetImageMode)(TImageMode*);
  32. _PZMEDICALAPI BOOL(__stdcall * PZ_COM_GetFPConf)(TFPUserCfg*);
  33. _PZMEDICALAPI BOOL(__stdcall * PZ_COM_SetFPConf)(TFPUserCfg*);
  34. _PZMEDICALAPI BOOL(__stdcall * PZ_COM_GetFPsn)(CHAR*);
  35. _PZMEDICALAPI BOOL(__stdcall * PZ_COM_GetFPsnEx)(CHAR, CHAR*);
  36. _PZMEDICALAPI BOOL(__stdcall * PZ_COM_GetDllVer)(CHAR*); //获取SDK版本
  37. _PZMEDICALAPI CHAR(__stdcall * PZ_COM_GetFPCompatibleVer)(); //获取平板版本
  38. _PZMEDICALAPI CHAR(__stdcall * PZ_COM_GetBinningMode)(CHAR*); //获取Binning模式
  39. _PZMEDICALAPI BOOL(__stdcall * PZ_COM_SetBinningMode)(CHAR); //设置Binning模式
  40. _PZMEDICALAPI BOOL(__stdcall * PZ_COM_GetPreCalibMode)();
  41. _PZMEDICALAPI BOOL(__stdcall * PZ_COM_SetPreCalibMode)(CHAR);
  42. _PZMEDICALAPI BOOL(__stdcall * PZ_COM_GetCalibMode)();
  43. _PZMEDICALAPI BOOL(__stdcall * PZ_COM_SetCalibMode)(CHAR);
  44. _PZMEDICALAPI BOOL(__stdcall * PZ_COM_GenOffsetTpl)(); //生成偏移模板
  45. _PZMEDICALAPI BOOL(__stdcall * PZ_COM_GenGainTpl)(); //生成增益模板
  46. _PZMEDICALAPI BOOL(__stdcall * PZ_COM_GenDefectTpl)(); //生成坏点模板
  47. _PZMEDICALAPI BOOL(__stdcall * PZ_COM_RegisterEvCallBack)(CHAR, FP_EVENT_CALLBACK);
  48. _PZMEDICALAPI BOOL(__stdcall * PZ_COM_UploadFPZMTpl)(CHAR, CHAR*); //上传模板到探测器
  49. _PZMEDICALAPI BOOL(__stdcall * PZ_COM_Dst)(); //设置探测器为DST模式
  50. _PZMEDICALAPI BOOL(__stdcall * PZ_COM_Prep)(); //刷新模板
  51. _PZMEDICALAPI BOOL(__stdcall * PZ_COM_SetDynamicPara)(UINT32, UINT16, CHAR); //设置采集参数
  52. _PZMEDICALAPI BOOL(__stdcall * PZ_COM_Dexit)(); //退出图像采集
  53. _PZMEDICALAPI CHAR(__stdcall * PZ_COM_GetFPCurStatus)(); //获取探测器当前的状态
  54. _PZMEDICALAPI BOOL(__stdcall * PZ_COM_GetFPStatus)(TFPStat*); //获取探测器wifi信号、温度、电池状态
  55. _PZMEDICALAPI CHAR(__stdcall * PZ_COM_GetFPType)();
  56. _PZMEDICALAPI BOOL(_stdcall * PZ_COM_SetFPType)(CHAR);
  57. #define PZ_EVENT_COUNT 4 //辅助线程中事件个数
  58. #define INIT_TIMEOUT 6000 //从调用COM_Init()到SDK给回回调的超时
  59. #define IMG_COUNT 20 //存到磁盘上的图像张数
  60. #define PZ_OFFSET_COUNT 16 //根据校正流程手册,取16张offset
  61. #define PZ_GAIN_COUNT 8 //根据校正流程手册,取8张gain
  62. enum PZ_CALMODE //校正模式
  63. {
  64. PZ_RAW = 0,
  65. PZ_OFFSET,
  66. PZ_GAIN,
  67. PZ_OFFSET_GAIN,
  68. PZ_DEFECT,
  69. PZ_OFFSET_GAIN_DEFECT = 7
  70. };
  71. enum PZ_BINNINGMODE //SDK支持的Binning模式
  72. {
  73. PZ_ONExONE,
  74. PZ_TWOxTWO,
  75. PZ_THRxTHR,
  76. PZ_FOURxFOUR,
  77. PZ_SIXxSIX
  78. };
  79. //enum PZ_LOGICMODE //4343D支持的几种曝光模式
  80. //{
  81. // PZ_MODE_RAD4343H,
  82. // PZ_MODE_RAD4343M,
  83. // //PZ_MODE_RAD4343HTOMO,
  84. // PZ_MODE_PF4343M,
  85. // PZ_MODE_CF4343M,
  86. // PZ_MODE_CF4343MCAL
  87. //}; //缺少灵活、可扩充性,不用了
  88. class PZMedical2121ZCtrl :
  89. public CAcqCtrl
  90. {
  91. public:
  92. PZMedical2121ZCtrl(void);
  93. ~PZMedical2121ZCtrl(void);
  94. enum eStatus
  95. {
  96. NotInit = -1,
  97. Init,
  98. Standby,
  99. Acquire,
  100. Offset,
  101. XrayCalibration
  102. };
  103. enum eSubStatus
  104. {
  105. SubStatus_Unknown = -1,
  106. SubStatus_IDLE,
  107. SubStatus_HST,
  108. SubStatus_DST,
  109. SubStatus_AED,
  110. SubStatus_Recover
  111. };
  112. bool m_bCalStart; //探测器校正是否开始的标志位:true-开始,false-未开始
  113. bool m_bFPDConnected; //探测器是否连接的标志位。true-连接,false-未连接
  114. ZSKK_CAL_SYN_PARAM m_CalSynParam;
  115. CString m_strConXMLName;
  116. typedef struct tagXmode
  117. {
  118. int nLogicMode;
  119. int nOffIndex;
  120. bool bOffsetAuto;
  121. } XMODE;
  122. typedef struct tagABCmode
  123. {
  124. int nLogicMode;
  125. int nABCIndex;
  126. } XROI;
  127. typedef struct tagABCParam
  128. {
  129. int nVmin;
  130. int nVmax;
  131. int nTargetDV;
  132. int nStep;
  133. } XABCParam;
  134. //! structure of reference status
  135. typedef struct
  136. {
  137. int state;
  138. unsigned int expiration_duration;
  139. } ReferenceInfos;
  140. typedef struct tagCalStatus
  141. {
  142. ReferenceInfos OffsetreferenceInfos;
  143. ReferenceInfos GainreferenceInfos;
  144. ReferenceInfos DMreferenceInfos;
  145. } CalStatus;
  146. static PZMedical2121ZCtrl* g_pPZMedicalInstance;
  147. private:
  148. PZ_COM_Init API_COM_Init;
  149. PZ_COM_List API_COM_List;
  150. PZ_COM_Open API_COM_Open;
  151. PZ_COM_Close API_COM_Close;
  152. PZ_COM_SetCfgFilePath API_COM_SetCfgFilePath;
  153. PZ_COM_LogPathGet API_COM_LogPathGet;
  154. PZ_COM_LogPathSet API_COM_LogPathSet;
  155. PZ_COM_HstAcq API_COM_HstAcq;
  156. PZ_COM_Trigger API_COM_Trigger;
  157. PZ_COM_Dacq API_COM_Dacq;
  158. PZ_COM_Cbct API_COM_Cbct;
  159. PZ_COM_Stop API_COM_Stop;
  160. PZ_COM_GetImage API_COM_GetImage;
  161. PZ_COM_GetImageMode API_COM_GetImageMode;
  162. PZ_COM_SetFPConf API_COM_SetFPConf;
  163. PZ_COM_GetFPConf API_COM_GetFPConf;
  164. PZ_COM_GetFPsn API_COM_GetFPsn;
  165. PZ_COM_GetFPsnEx API_COM_GetFPsnEx;
  166. PZ_COM_GetFPCompatibleVer API_COM_GetFPCompatibleVer;
  167. PZ_COM_GetDllVer API_COM_GetDllVer;
  168. PZ_COM_GetBinningMode API_COM_GetBinningMode;
  169. PZ_COM_SetBinningMode API_COM_SetBinningMode;
  170. PZ_COM_GetPreCalibMode API_COM_GetPreCalibMode;
  171. PZ_COM_SetPreCalibMode API_COM_SetPreCalibMode;
  172. PZ_COM_GetCalibMode API_COM_GetCalibMode;
  173. PZ_COM_SetCalibMode API_COM_SetCalibMode;
  174. PZ_COM_GenOffsetTpl API_COM_GenOffsetTpl;
  175. PZ_COM_GenGainTpl API_COM_GenGainTpl;
  176. PZ_COM_GenDefectTpl API_COM_GenDefectTpl;
  177. PZ_COM_RegisterEvCallBack API_COM_RegisterEvCallBack;
  178. PZ_COM_UploadFPZMTpl API_COM_UploadFPZMTpl;
  179. PZ_COM_Dst API_COM_Dst;
  180. PZ_COM_Prep API_COM_Prep;
  181. PZ_COM_SetDynamicPara API_COM_SetDynamicPara;
  182. PZ_COM_Dexit API_COM_Dexit;
  183. PZ_COM_GetFPCurStatus API_COM_GetFPCurStatus;
  184. PZ_COM_GetFPStatus API_COM_GetFPStatus;
  185. PZ_COM_GetFPType API_COM_GetFPType;
  186. PZ_COM_SetFPType API_COM_SetFPType;
  187. HANDLE m_hInitEvent;
  188. HANDLE m_hExitEvent;
  189. HANDLE m_hGenTplEvent; //生成校正文件并上传
  190. HANDLE m_hImgEvent; //处理图像
  191. HANDLE m_hEventArray[PZ_EVENT_COUNT];
  192. HANDLE m_hCallbackEvent;
  193. CWinThread* m_pScanThreadProc;
  194. CString m_SubConfigPath;
  195. eStatus m_eStatus;
  196. eSubStatus m_eSubStatus;
  197. HWND m_hWnd;
  198. CString m_strFPSN; //探测器序列号
  199. int m_nImgID; //存图时的序号,避免存储太多图像导致磁盘空间不足
  200. int m_nOffsetImgID; //存offset图时的序号
  201. int m_nGainImgID; //存gain图时的序号
  202. CHAR m_cEventNum; //记录探测器的事件号,避免在日志中重复记录同一事件
  203. UCHAR m_ucState; //记录探测器的校正文件上传状态,避免在日志中重复记录同一状态
  204. UCHAR m_ucPerCent; //记录探测器的校正文件上传百分比,避免在日志中重复记录同一百分比
  205. CHAR* m_cImgBuff; //用于从SDK拿图的buffer
  206. bool m_bGetImage; //在校正过程中是否存储图像;true-存 false-不存
  207. bool m_bSendRadImage; //在点片模式下,是否已经发送图像到共享内存中;
  208. bool m_bExiChecked; //true-EXI已经检查通过,不再检查
  209. bool m_bTimeChecked; //true-时间间隔检查通过,不再检查
  210. int m_nExiStdWork; //检查模式下的EXI标准,小于这个值的图像被丢弃
  211. int m_nExiStdCali; //校正模式下的EXI标准,小于这个值的图像被丢弃
  212. CString strCalMode; //从配置工具读到的校正模式 0:None;1:Offset;2:All
  213. bool m_bSaveRaw; //从配置工具读到的是否存图到本地磁盘 true:存;false:不存
  214. //SDK相关参数
  215. CHAR m_nFPCurStatus; //FP当前的状态,0:STATUS_NULL, 1: STATUS_IDLE, 2: STATUS_HST, 9: STATUS_DST,
  216. CHAR m_nTriggerMode; //触发模式,0: 内部触发, 1: 外部触发
  217. bool m_bOffsetDone; //offset模板刷新完成标志位,true表示刷新完成,false表示未刷新完成
  218. CHAR m_cFPDCalibMode; //记录探测器的校正模式,用于判重。
  219. CHAR m_cCalibMode; //探测器检查界面的校正模式,与CalibrationType配置项相关。
  220. bool m_bTriggered; //true-已经调用了trigger请求图像,即采集状态
  221. int m_nBinningMode; //记录探测器的binning模式
  222. int m_nWinTime; //记录SDK的采图周期
  223. int m_nStartLine; //开窗模式起始行
  224. int m_nEndLine; //开窗模式终止行
  225. int m_nStartColumn; //开窗模式起始列
  226. int m_nEndColumn; //开窗模式终止列
  227. int m_nRawWidth;
  228. int m_nRawHeight;
  229. DWORD m_dwBeginT; //点片模式下,上层调用startgrab的时机
  230. DWORD m_dwEndT; //点片模式下,收到图像的时机,用来判断是否是合适的图像
  231. DWORD m_nDelayT; //点片模式下,收到startgrab之后多久才应该取图,单位:毫秒
  232. bool m_bTimerSwitch; //两次图像回调的间隔计时功能开关;true-开
  233. DWORD m_dwLastT; //上一次得到图像回调的时间
  234. DWORD m_dwGetImageT; //得到图像回调的时间
  235. int m_nSaturation; //图像的饱和值
  236. int m_nRADSpeed; //上层传下来的点片帧频
  237. int m_nFLUSpeed; //上层传下来的透视帧频
  238. int m_nCINSpeed;
  239. int m_nStandbyRate; //停止采集后的帧率。停止采集后探测器需要设置到这个帧率刷offset
  240. int m_nRadImgCount; //单帧点片时不合格图像张数,超过这个张数就停止采集,避免不能停止当前状态;默认为3
  241. vector <int> m_vecCycleTime;
  242. vector <int> m_vecDelayTime;
  243. /**Workflow**/
  244. public:
  245. bool InitDETECTOR(HWND hWnd, bool bState) override;
  246. bool ExitDETECTOR();
  247. bool BeginWorkMode(void); // 进入检查模式
  248. bool EndWorkMode(void); // 退出检查模式
  249. static UINT ACQThread(LPVOID pParam);
  250. bool StartGrab(); // 开始采集
  251. bool StopGrab(int nXRayOnNum); // 停止采集
  252. bool SetGrabMode(int nMode); //nMode: SINGLE_SHOT_RAD_MODE 1 / SEQUENCE_RAD_MODE 2 / PULSE_FLU_MODE 3 / CONTINUE_FLU_MODE 4
  253. bool ExpEnable();
  254. bool ExpDisable();
  255. bool FluEnable();
  256. bool FluDisable();
  257. bool CheckImageExi(WORD dwExiThrethold);
  258. bool CalculateEXI(WORD* pImgData, int nImgWidth, int nImgHeight, int nImageBit, int nThreshold);
  259. int AEDCalcu(WORD* pImage, int nWidth, int nHeight, int nImageBit, int nThreshold, float fArea);
  260. private:
  261. vector <XMODE> m_vecCALMode;
  262. XMODE m_RadMode;
  263. XMODE m_FluMode;
  264. XMODE m_CINEMode;
  265. XMODE m_ActiveMode;
  266. XROI m_CurROI;
  267. bool InitHW(HWND hWnd); // 初始化设备
  268. bool LoadPZMedicalDLL();
  269. void FreePZMedicalDLL();
  270. static UINT ScanThread(LPVOID pParam);
  271. bool StartScanThread();
  272. bool StopScanThread();
  273. bool WaitRespond(int nTimeOut);
  274. void LoadROIParams(); //加载ROI参数
  275. bool ActiveROI(int nLogicMode, int nROIIndex); //激活ROI(未使用)
  276. bool StopDetector(); //结束工作流
  277. bool CloseDetector(); //关闭探测器
  278. /**Calibration**/
  279. public:
  280. bool BeginCalibration(int nLogicMode, int nOffsetIndex, int nCalMode);
  281. bool EnterCalibration();
  282. bool CalibrateAllModes();
  283. bool ExitCalibration();
  284. bool AbortCalibration();
  285. bool GetCalibrationStatus(int nLogicMode, int nOffsetIndex, ZSKK_CAL_STATUS& modeStatus); //获取设置模式的状态
  286. bool StartOffsetCalibration(int nMode);
  287. bool OffsetByUser(int nOffsetType = 2);
  288. private:
  289. bool RefreshOffset();
  290. int GetOffsetMode(int nLogicMode, int nOffsetIndex, int nSpeed); //获取与采集速度匹配的Offset模式,nSpeed为真实速度乘100
  291. bool StartGainCalibration(int nLogicmode, int nRefNum, int CalMode);
  292. bool CalibNextStep();
  293. bool GenTpl();
  294. bool SetAcquisitionParam(int nFrameRate, int nRepeatNum, char cBinningMode); //设置采集参数
  295. bool SetBinningMode(int nMode); //调用SDK接口,设置binning模式
  296. bool GetSetCalibMode(CHAR cCalibMode, int nMode = 1); //先获取再设置校正模式
  297. bool SetROIMode(int nStartLine, int nEndLine, int nStartColumn, int nEndColumn); //调用SDK接口,设置开窗(ROI)
  298. /**Command**/
  299. public:
  300. bool SelectRADMode(int nLogicMode, int nOffsetIndex); //选择点片模式
  301. bool SelectFLUMode(int nLogicMode, int nOffsetIndex); //选择透视模式
  302. bool SelectCINEMode(int nLogicMode, int nOffsetIndex); //选择CINE模式
  303. bool SetRadOffsetMode(int nLogicMode, int nOffsetIndex, int nSpeed);
  304. bool SetFluOffsetMode(int nLogicMode, int nOffsetIndex, float fSpeed);
  305. bool SetCinOffsetMode(int nLogicMode, int nOffsetIndex, float fSpeed);
  306. void setNextStepEvent();
  307. bool DownloadCorrectionFile2Device();
  308. bool ActiveRADMode(); //激活点片模式
  309. bool ActiveFLUMode(); //激活透视模式
  310. bool ActiveCINEMode(); //激活CINE模式
  311. bool SetSpotFrameRate(float fps); //设置点片模式速度
  312. bool SetFLUFrameRate(float fps); //设置透视模式速度
  313. bool SetCINEFrameRate(float fps); //设置CINE模式速度
  314. bool GetActiveMode(int &nLogicMode, int &nOffsetIndex); //获取当前模式
  315. bool GetOffsetInfo(int nLogicMode, vector <ZSKK_PROTOCOL_OFFSET_INFO> &vecOffsetInfo); // 获取设置模式的offset状态
  316. bool GetLogicModeList(vector <ZSKK_DETECTOR_MODE_INFO> &vecDetectorMode); // 获取模式配置表信息
  317. bool ActiveHSTMode(); //激活HST模式
  318. bool ActiveDSTMode(); //激活DST模式
  319. private:
  320. bool StartAcquisition(int nMode);
  321. bool StopAcquisition(int nMode = 0);
  322. bool ActiveLogicMode(int nmode, int nOffRef); //激活逻辑模式
  323. void OnImageEvt(/*UINT32 uiImageNo, VOID* uiImgBuffAddr, UINT32 uiImgValidSize*/);
  324. int CropImageMargin(LPVOID pDstData, int& nDstWidth, int& nDstHeight,
  325. LPVOID pScrData, int nSrcWidth, int nSrcHeight, int nBits,
  326. int nLeftMargin, int nTopMargin, int nRightMargin, int nBottomMargin);
  327. bool WriteFrame(WORD* pImgData, int nWidth, int nHeight);
  328. bool SaveImage(WORD* pImage, int nImgSize);
  329. bool SaveImage(const char* szFileName, WORD* pImage, int nImgSize);
  330. bool ApplyImgSaturation(WORD* pImgData, int nWidth, int nHeight, int nSaturation);
  331. /**Message processing**/
  332. public:
  333. bool OnCOPYDATA_MSG_Process(WPARAM wParam, LPARAM lParam);
  334. bool OnMSGWORKFLOW_Process(WPARAM wParam, LPARAM lParam);
  335. bool OnMSGCALIBRATION_Process(WPARAM wParam, LPARAM lParam);
  336. bool OnMSGPARAMETER_Process(WPARAM wParam, LPARAM lParam);
  337. bool ResetConnection();
  338. protected:
  339. virtual bool OnXrayGenStart();
  340. virtual bool OnXrayGenStop();
  341. virtual bool OnXrayGenSetDose();
  342. virtual bool OnXrayCalSuccess();
  343. virtual bool OnXrayCalFail();
  344. virtual bool OnSYNC();
  345. virtual bool OnTimeOut();
  346. virtual bool OnWarning();
  347. virtual bool OnStatus();
  348. virtual bool OnModeActive();
  349. DECLARE_MESSAGE_MAP()
  350. private:
  351. static BOOL WINAPI FuncLinkEXCallBack(CHAR cEvent);
  352. static BOOL WINAPI FuncLinkCallBack(CHAR cEvent);
  353. static BOOL WINAPI FuncBreakCallBack(CHAR cEvent);
  354. static BOOL WINAPI FuncImageCallBack(CHAR cEvent);
  355. static BOOL WINAPI FuncHeartBeatCallBack(CHAR cEvent);
  356. static BOOL WINAPI FuncOffsetDoneCallBack(CHAR cEvent);
  357. static BOOL WINAPI FuncReadyCallBack(CHAR cEvent);
  358. static BOOL WINAPI FuncExposeCallBack(CHAR cEvent);
  359. static BOOL WINAPI FuncImageStartCallBack(CHAR cEvent);
  360. static BOOL WINAPI FuncImageEndCallBack(CHAR cEvent);
  361. bool LogInfo(LPCSTR strLog);
  362. bool LogError(LPCSTR strLog);
  363. bool LogWarn(LPCSTR strLog);
  364. bool TestError(int nErrorStatus);
  365. bool GetFPInfo();
  366. bool GetFPCurStatus();
  367. bool GetFPWifiTempBat();
  368. bool GetImageInfo();
  369. bool ChangeActiveMode(CString ExamType, int nPUMode, int nSizeX, int nSizeY, int nCropLeft, int nCropTop, int nCropRight, int nCropBottom);
  370. public:
  371. CString m_strCalWarning;
  372. bool m_bGainDefectFlag;
  373. bool m_bDownloadFileFlag;
  374. private:
  375. map<CString, DWORD> m_ProcessChainMap;
  376. map<int, ZSKK_ROI_PARAM*> m_ROImap;
  377. bool m_EnableProcessChain;
  378. bool m_EnableDrvLog;
  379. CWnd *m_pWnd;
  380. bool m_bIsWorkingMode;
  381. ZSKK_CAL_SYN_PARAM m_CurSynParam;
  382. ZSKK_CAL_SYN_PARAM m_PreSynParam;
  383. bool m_bAbortOffset;
  384. bool m_bOffsetAll;
  385. //用于标记在是否发送过offset提示,true则发过
  386. //m_bIsWorkingMode为true时,m_bOffsetPromptSended置为false
  387. bool m_bOffsetPromptSended;
  388. CAppSettings m_appRealModeConf; //RealModeMatch.xml
  389. int m_nTOMOMode;
  390. bool m_bExit;
  391. private:
  392. HMODULE m_hModule;
  393. int m_nGrabMode;
  394. int m_nCurGainGroupIndex;
  395. int m_nOffsetTotalFrames;
  396. int m_nDefectTotalFrames;
  397. int m_nTotalGainGroup;
  398. int m_nDetectorID;
  399. int m_nEachGroupFrames;
  400. int m_nGainStartFrames;
  401. HANDLE m_hScanThreadEnd;
  402. int m_nOffsetCheckCounts;
  403. int m_nOffsetInterval;
  404. bool m_bInitOffset;
  405. int m_nOffsetConf;
  406. int m_nGainConf;
  407. int m_nDefectConf;
  408. public:
  409. CFile* g_TestSavingImage;
  410. bool g_bTestTrue;
  411. protected:
  412. ZSKK_IMAGE_INFO m_ImgInfo; //save image data
  413. ZSKK_ACQ_INFO m_ACQInfo; //Save image information
  414. DWORD m_pImgBufferSize;
  415. int m_nCropLeft, m_nCropTop, m_nCropRight, m_nCropBottom;
  416. int m_nPixelSpacing;
  417. CShareMem* m_pDataBuffer;
  418. int m_nCurrentFrame;
  419. int m_nTotalFrameGrab; //序列点片一共获得的图像帧数
  420. int m_nXrayOnNum; //HW传下来的序列点片曝光次数
  421. bool m_bWaitLastImg; //序列点片下,需要等最后一张图的标志位;true-需要等
  422. PZModeConfigures PZModeConf;
  423. };