// CCOS.Dev.FPD.PZMedicalDF.cpp: 定义 DLL 的初始化例程。 // #include "pch.h" #include "framework.h" #include "CCOS.Dev.FPD.PZMedicalDF.h" #ifdef _DEBUG #define new DEBUG_NEW #endif // //TODO: 如果此 DLL 相对于 MFC DLL 是动态链接的, // 则从此 DLL 导出的任何调入 // MFC 的函数必须将 AFX_MANAGE_STATE 宏添加到 // 该函数的最前面。 // // 例如: // // extern "C" BOOL PASCAL EXPORT ExportedFunction() // { // AFX_MANAGE_STATE(AfxGetStaticModuleState()); // // 此处为普通函数体 // } // // 此宏先于任何 MFC 调用 // 出现在每个函数中十分重要。 这意味着 // 它必须作为以下项中的第一个语句: // 出现,甚至先于所有对象变量声明, // 这是因为它们的构造函数可能生成 MFC // DLL 调用。 // // 有关其他详细信息, // 请参阅 MFC 技术说明 33 和 58。 // // CCCOSDevFPDPZMedicalDFApp BEGIN_MESSAGE_MAP(CCCOSDevFPDPZMedicalDFApp, CWinApp) END_MESSAGE_MAP() // CCCOSDevFPDPZMedicalDFApp 构造 CCCOSDevFPDPZMedicalDFApp::CCCOSDevFPDPZMedicalDFApp() { // TODO: 在此处添加构造代码, // 将所有重要的初始化放置在 InitInstance 中 } // 唯一的 CCCOSDevFPDPZMedicalDFApp 对象 CCCOSDevFPDPZMedicalDFApp theApp; class CAppSettings; CString strAppPath; CAppSettings* g_pAcqParam; extern CString g_strConfFilePath; extern CString g_strHWConfFilePath; // CCCOSDevFPDPZMedicalDFApp 初始化 CString strAppDYNHandleName; CString strAppMechCompHandleName; CString strAppRFDTHandleName; CString strAppDRDTHandleName; CString strAppHardwareHandleName; CString strAppRFOCHandleName; CString g_strLogFilePath; CString g_strHWConfFilePath; CString g_strConfFilePath; BOOL CCCOSDevFPDPZMedicalDFApp::InitInstance() { CWinApp::InitInstance(); if (!AfxSocketInit()) { AfxMessageBox(IDP_SOCKETS_INIT_FAILED); return FALSE; } return TRUE; } ////////////////////////////////////////////////////////////////// /// /// 驱动接口,必须实现 /// ////////////////////////////////////////////////////////////////// void DRV_Prepare() { } bool DRV_DriverEntry(std::string CfgFileName) { return true; } //返回驱动静态资源,如厂商/序列号/等不会变化的常量信息,包括不限于字典等 std::string DRV_DriverProbe() { return ""; } //为了保持的一定的兼容性,GUID保留,每个公开的值 参考相关文档 std::string DRV_GetGUID() { return ""; } //返回驱动资源,包括各种可能变更的属性、方法等等 std::string DRV_GetResource() { return ""; } //返回该驱动下所有设备的静态资源,如序列号、字典等信息 std::string DRV_DeviceProbe() { return ""; } bool DRV_OnHeartBeat() { return true; } bool DRV_ReLoadConfig() { return true; } DEVICE_HANDLE DRV_CreateDevice(int index) { return nullptr; } void DRV_FreeDevice(DEVICE_HANDLE) { } bool DRV_GetDeviceConfig(std::string& Cfg) { return true; } bool DRV_SetDeviceConfig(std::string Cfg) { return true; } int DRV_Get(const std::string attrName, std::string& Out) { return 2; } int DRV_Set(const std::string attrName, std::string& Out) { return 2; } /// XXX 为属性名,可以定义任意多个,每次取一个属性值,等同 DRV_GET(XXX,Out) int DRV_Get_XXX(std::string& Out) { return 2; } /// XXX 为属性名,可以定义任意多个,每次取一个属性值,等同 DRV_GET(XXX,Out) int DRV_Set_XXX(std::string& InOut) { return 2; } ////////////////////////////////////////////////////////////////// /// /// 通用设备接口 Part1,必须实现 /// ////////////////////////////////////////////////////////////////// std::string DEV_GetGUID(DEVICE_HANDLE hDev) { return ""; } std::string DEV_GetPath(DEVICE_HANDLE hDev) { return ""; } //这里定义了该设备的模型资源,含属性、方法 std::string DEV_GetResource(DEVICE_HANDLE hDev) { return ""; } void DEV_CompleteInit(DEVICE_HANDLE hDev) { } bool DEV_Prepare(DEVICE_HANDLE hDev) { return true; } void DEV_CompleteUnInit(DEVICE_HANDLE hDev) { } void DEV_GetSubscribeTopicList(DEVICE_HANDLE hDev, std::vector& TopicList) { } ////////////////////////////////////////////////////////////////// /// /// 通用设备接口 Part2,通用模型化原始接口实现,ADD/DELETE/UPDATE/ACTION/GET/SET /// 参考 HTTP RESTFULL, /// 驱动可以直接实现此接口,无需额外创建接口,适用任意设备 /// DEVPath 为设备路径访问接口,直接访问对应设备路径的方法 /// 各驱动可以根据自己特点,实现一套或者2套,不实现的方法需要返回-2 ////////////////////////////////////////////////////////////////// //int DEV_Add(DEVICE_HANDLE hDev, const std::string funcName, std::string In, std::string& Out); //int DEV_Delete(DEVICE_HANDLE hDev, const std::string funcName, std::string In, std::string& Out); //int DEV_Update(DEVICE_HANDLE hDev, const std::string funcName, std::string In, std::string& Out); //int DEV_Action(DEVICE_HANDLE hDev, const std::string funcName, std::string In, std::string& Out); //int DEV_Get(DEVICE_HANDLE hDev, const std::string funcName, std::string& Out); //int DEV_Set(DEVICE_HANDLE hDev, const std::string funcName, std::string In); // //int DEVPath_Add(const std::string devPath, const std::string funcName, std::string In, std::string& Out); //int DEVPath_Delete(const std::string devPath, const std::string funcName, std::string In, std::string& Out); //int DEVPath_Update(const std::string devPath, const std::string funcName, std::string In, std::string& Out); //int DEVPath_Action(const std::string devPath, const std::string funcName, std::string In, std::string& Out); //int DEVPath_Get(const std::string devPath, const std::string funcName, std::string& Out); //int DEVPath_Set(const std::string devPath, const std::string funcName, std::string In); ////////////////////////////////////////////////////////////////// /// /// 设备模型接口 Part3,各中设备的标准方法 /// XXX为属性名或者方法名,用于区分行为的Key /// 各驱动可以根据自己特点,定义标准方法集合 ////////////////////////////////////////////////////////////////// //实现者需要为每一个创建的设备对象定义模型实现,入口参数为设备时创建的对象句柄,需要自行区分对象与方法的对应 //int DEV_Add_XXX(DEVICE_HANDLE hDev, std::string In, std::string& Out); //int DEV_Delete_XXX(DEVICE_HANDLE hDev, std::string In, std::string& Out); //int DEV_Update_XXX(DEVICE_HANDLE hDev, std::string In, std::string& Out); //int DEV_Action_XXX(DEVICE_HANDLE hDev, std::string In, std::string& Out); //int DEV_Get_XXX(DEVICE_HANDLE hDev, std::string& Out); //int DEV_Set_XXX(DEVICE_HANDLE hDev, std::string In); //实现者需要为每一个逻辑对象的设备路径 定义模型实现,需要自行根据设备路径和 方法进行区分 //int DEVPath_Add_XXX(const std::string devPath, std::string In, std::string& Out); //int DEVPath_Delete_XXX(const std::string devPath, std::string In, std::string& Out); //int DEVPath_Update_XXX(const std::string devPath, std::string In, std::string& Out); //int DEVPath_Action_XXX(const std::string devPath, std::string In, std::string& Out); //int DEVPath_Get_XXX(const std::string devPath, std::string& Out); //int DEVPath_Set_XXX(const std::string devPath, std::string In); //设备树的模型实现 //根设备的模型方法一套 //只有一套接口,就是根设备路径的方法 int DEVPath_Add_XXX_(std::string In, std::string& Out) { return 2; } int DEVPath_Delete_XXX_(std::string In, std::string& Out) { return 2; } int DEVPath_Update_XXX_(std::string In, std::string& Out) { return 2; } int DEVPath_Action_XXX_(std::string In, std::string& Out) { return 2; } int DEVPath_Get_XXX_(std::string& Out) { return 2; } int DEVPath_Set_XXX_(std::string& InOut) { return 2; } int DEVPath_Get_CalibrateAllModes_(std::string& Out) { return 2; } // //(int& nLogicMode, int& nOffsetIndex); int DEVPath_Get_ActiveMode_(std::string& Out) { return 2; } //(vector & vecDetectorMode); int DEVPath_Get_LogicModeList_(std::string& Out) { return 2; } //Set sequence shot fps int DEVPath_Set_SpotFrameRate_(std::string& InOut) { return 2; } //Set FLU fps (float fps); int DEVPath_Set_FLUFrameRate_(std::string& InOut) { return 2; } //Set CINE fps (float fps); int DEVPath_Set_CINEFrameRate_(std::string& InOut) { return 2; } //(int nmode); (float fps); int DEVPath_Set_SetGrabMode_(std::string& InOut) { return 2; } //(int nLogicMode, vector & vecOffsetInfo); int DEVPath_Action_GetOffsetInfo_(std::string& Out) { return 2; } //(int nLogicMode, int nOffsetIndex, ZSKK_CAL_STATUS& modeStatus); int DEVPath_Action_GetCalibrationStatus_(std::string& Out) { return 2; } //(int nLogicMode, int nOffsetIndex, int nSpeed); int DEVPath_Action_SetRadOffsetMode_(std::string In, std::string& InOut) { return 2; } //(int nLogicMode, int nOffsetIndex, float fSpeed); int DEVPath_Action_SetFluOffsetMode_(std::string In, std::string& InOut) { return 2; } //(int nLogicMode, int nOffsetIndex, float fSpeed); int DEVPath_Action_SetCinOffsetMode_(std::string In, std::string& InOut) { return 2; } int DEVPath_Action_BeginWorkMode_(std::string In, std::string& Out) { return 2; } int DEVPath_Action_EndWorkMode_(std::string In, std::string& Out) { return 2; } int DEVPath_Action_StartGrab_(std::string In, std::string& Out) { return 2; } //(int nXRayOnNum = 0); int DEVPath_Action_StopGrab_(std::string In, std::string& Out) { return 2; } int DEVPath_Action_ExpEnable_(std::string In, std::string& Out) { return 2; } int DEVPath_Action_ExpDisable_(std::string In, std::string& Out) { return 2; } int DEVPath_Action_FluEnable_(std::string In, std::string& Out) { return 2; } int DEVPath_Action_FluDisable_(std::string In, std::string& Out) { return 2; } //(int nLogicMode, int nOffsetIndex, int nCalMode); int DEVPath_Action_BeginCalibration_(std::string In, std::string& Out) { return 2; } int DEVPath_Action_EnterCalibration_(std::string In, std::string& Out) { return 2; } int DEVPath_Action_ExitCalibration_(std::string In, std::string& Out) { return 2; } int DEVPath_Action_AbortCalibration_(std::string In, std::string& Out) { return 2; } //(bool bEn); int DEVPath_Action_EnableAutoOffset_(std::string In, std::string& Out) { return 2; } int DEVPath_Action_StartOffsetRefresh_(std::string In, std::string& Out) { return 2; } int DEVPath_Action_StartOffsetCalibration_(std::string In, std::string& Out) { return 2; } int DEVPath_Action_OffsetByUser_(std::string In, std::string& Out) { return 2; } //(int nLogicMode, int nOffsetIndex); int DEVPath_Action_SelectRADMode_(std::string In, std::string& Out) { return 2; } //(int nLogicMode, int nOffsetIndex); int DEVPath_Action_SelectFLUMode_(std::string In, std::string& Out) { return 2; } //(int nLogicMode, int nOffsetIndex); int DEVPath_Action_SelectCINEMode_(std::string In, std::string& Out) { return 2; } int DEVPath_Action_DownloadCorrectionFile2Device_(std::string In, std::string& Out) { return 2; } // int DEVPath_Action_ActiveRADMode_(std::string In, std::string& Out) { return 2; } // int DEVPath_Action_ActiveFLUMode_(std::string In, std::string& Out) { return 2; } // int DEVPath_Action_ActiveCINEMode_(std::string In, std::string& Out) { return 2; } // int DEVPath_Action_SetNextStepEvent_(std::string In, std::string& Out) { return 2; } //