/************************************************************************************************** 版本所有(C), 2020-2022, 北京普达迪泰 *************************************************************************************************** 文 件 名: IDPMSManager.h 功能描述: IDPMS管理员,采用单例模式 版 本 号: 1.00初版 作 者: HYF 生成日期; 2021-12-20 最近修改: 函数列表: 修改历史: 1.日 期 :2021-12-20 作 者 : HYF 修改内容 : 创建文件 **************************************************************************************************/ #pragma once #include class IDPMSComm; class StaticTaskThread; class StaticData; class DynamicTaskThread; class DynamicData; class CameraTaskThread; class IDPMSDeamon; class IDPMSManager : public CObject { public: IDPMSManager(); virtual ~IDPMSManager(); public: // IDPMS进程运行状态 BOOL m_bIDPMSRunning; // 零位测量交互数据 StaticData *m_pStaticData; // 位姿动态测量数据 DynamicData *m_pDynamicData; // 动态测量时间间隔 int m_iDynamicSpan; // 设置窗口为外层窗口 BOOL SetTopWindow(HWND hWnd); public: // 动态任务处理线程 DynamicTaskThread *m_pDynamicTask; public: // 启动IDPMS BOOL StartIDPMS1(); BOOL StartIDPMS2(); BOOL StartIDPMS21(); BOOL StartIDPMS3(); // 判断IDPMS是否已经启动 BOOL FindIDPMS(); // 附加IDPMS到窗口中 BOOL AttachIDPMS(CWnd *pWnd); // 分离IDPMS BOOL DetachIDPMS(CWnd *pWnd); // CloseIDPMS(); void CloseIDPMS(); // 设置动态测量间隔时间 void SetDynamicTaskTimeSpan(int iSpan); // 强制中止动态测量线程 void PauseDynamicTask(); // 强制中止动态测量线程 void ResumeDynamicTask(); // 强制中止动态测量线程 void StopDynamicTask(); // 强制中止动态测量线程 void TerminateDynamicTask(); // 同步 :单相机标定处理: BOOL SingleCameraConfigProc(int iCam, DMSResponse *&pRes); // 同步 :双相机标定处理: 同步建立工程 BOOL DoubleCameraConfig1Proc(LPCTSTR szEquipTypeCode, LPCTSTR szEquipCode, DMSResponse *&pMSG); // 同步 :双相机标定处理: 外参标定 BOOL DoubleCameraConfig2Proc(LPCTSTR szEquipTypeCode, LPCTSTR szEquipCode, DMSResponse *&pMSG); // 同步 :静态任务处理 BOOL StaticTaskProc(DWORD taskId, LPCTSTR szEquipTypeCode, LPCTSTR szEquipCode, DMSResponse *&pMSG); // 同步 :动态任务处理 BOOL DynamicTaskProc(DWORD taskId, LPCTSTR szEquipTypeCode, LPCTSTR szEquipCode, LPCTSTR szEquipPlace, DMSResponse *&pMSG); // 异步:单相机标定 BOOL SingleCameraConfigProcThread(CWnd* pOwner, int iCam); // 异步:双相机标定:建立工程 BOOL DoubleCameraConfigStep1ProcThread(CWnd* pOwner, LPCTSTR szEquipTypeCode, LPCTSTR szEquipCode); // 异步:双相机标定:外参标定 BOOL DoubleCameraConfigStep2ProcThread(CWnd* pOwner, LPCTSTR szEquipTypeCode, LPCTSTR szEquipCode); // 异步:静态任务处理 BOOL StartStaticProcThread(CWnd* pOwner, DWORD taskId, LPCTSTR szEquipTypeCode, LPCTSTR szEquipCode); // 异步:重新获取静态任务数据 BOOL StartStaticDataProcThread(CWnd* pOwner, DWORD taskId, LPCTSTR szEquipTypeCode, LPCTSTR szEquipCode); // 异步:动态任务处理 BOOL StartDynamicProcThread(CWnd* pOwner, DWORD taskId, LPCTSTR szEquipTypeCode, LPCTSTR szEquipCode, LPCTSTR szEquipPlace); // Close IDPMS Project BOOL CloseIDPMSProject(); public: // 通过内部类的对象生命周期管理数据库静态对象,如果取掉,会造成内存泄露 class CGarbo { public: CGarbo() { } ~CGarbo() { if (IDPMSManager::m_pManager) { delete IDPMSManager::m_pManager; IDPMSManager::m_pManager = NULL; } } }; public: // 获取数据库连接 static IDPMSManager* GetManager(); public: static IDPMSManager *m_pManager; };