#pragma once // 下列 ifdef 块是创建使从 DLL 导出更简单的 // 宏的标准方法。此 DLL 中的所有文件都是用命令行上定义的 RFFPD_EXPORTS // 符号编译的。在使用此 DLL 的 // 任何其他项目上不应定义此符号。这样,源文件中包含此文件的任何其他项目都会将 // RFFPD_API 函数视为是从 DLL 导入的,而此 DLL 则将用此宏定义的 // 符号视为是被导出的。 #ifndef RFFPD_EXPORTS #ifdef _WIN64 #ifdef _DEBUG #pragma comment(lib, "RfFPDX64D.lib") #else #pragma comment(lib, "RfFPDX64.lib") #endif #else #ifdef _DEBUG #pragma comment(lib, "RfFPDD.lib") #else #pragma comment(lib, "RfFPD.lib") #endif #endif #endif #ifdef RFFPD_EXPORTS #define RFFPD_API __declspec(dllexport) #define RFFPD_C_API extern "C" __declspec(dllexport) #else #define RFFPD_API __declspec(dllimport) #define RFFPD_C_API extern "C" __declspec(dllimport) #endif #include "DetctorDriver.h" #include "SeqImages.h" RFFPD_C_API DriverDPC* GetDriverDPC(); RFFPD_C_API void ReleaseDriverDPC(DriverDPC *p); class RFFPD_API RfFPDDDPC : public DetctorDriver { std::string *m_pWorkpath; //LogicDevice *m_pSynFPD; LogicDevice *m_pAcqFPD; LogicDevice *m_pCaliFPD; LogicDevice *m_pTemperFPD; //温度单元 HANDLE m_AcqReqEvt; HANDLE m_StopReqEvt; HANDLE m_DeviceStopedEvt; DWORD m_AcqLoopCount;//当前模式下的采集张数 DWORD m_AcquiredCount;//当前模式下的已采集张数 DWORD m_CalibrationRoundCount; SeqImages *m_pSeqList;//for multiple acq mode ResDataObject m_ConfigAll; //addbyys20200618存储所有配置信息 ResDataObject m_Configurations; //addbyys20200618存储配置信息CONFIGURATION部分 bool m_bRadMode; //true:rad模式 bool m_bFor750MT; enum Mode750MT { modePreview, modeFULL, } m_mode750MT; public: RfFPDDDPC(void); virtual ~RfFPDDDPC(void); virtual bool DriverEntry(ResDataObject &Configuration); virtual bool Driver_Probe(ResDataObject &HardwareInfo); virtual bool SYSTEM_CALL SetDriverWorkPath(const char * PARAM_IN pWorkPath); virtual PVOID SYSTEM_CALL LoadDriver();//无根节点 virtual void SYSTEM_CALL UnloadDriver(); virtual bool Connect(); virtual void DisConnect(); //给硬件驱动设置Unique工作路径 //如果是同一设备同一连接情况下,硬件多次接入,系统会保证工作路径是一样的. //连接后,单一硬件相关的数据要保存在此. virtual bool SYSTEM_CALL SetDeviceWorkPath(const char * PARAM_IN pWorkPath); //逻辑设备树的加载和卸载 virtual PVOID SYSTEM_CALL LoadLogicDevices(); virtual void SYSTEM_CALL UnloadLogicDevices(); virtual bool Device_Probe(ResDataObject &HardwareInfo); virtual DWORD SYSTEM_CALL OnNotify(HANDLE evtList[], DWORD count); RET_STATUS DATA_ACTION SetExamInfo(ResDataObject& PARAM_IN pParam); virtual RET_STATUS DATA_ACTION SelectExamMode(const char *pExamKey); bool SYSTEM_CALL Acq_Proc(); //继承类必须实现的功能 RET_STATUS OEM_IF StartAcquisition(); RET_STATUS OEM_IF StopAcquisition(); RET_STATUS OEM_IF StopAcquisition_Inside(); RET_STATUS OEM_IF ActiveCalibration(); RET_STATUS OEM_IF StartCalibration(); RET_STATUS OEM_IF PauseCalibration();//internal call RET_STATUS OEM_IF StopCalibration(); virtual RET_STATUS OEM_IF SetDetectorStatus(DETECTOR_STATUS status); RET_STATUS SYSTEM_CALL GetDriverDictionary(ResDataObject& PARAM_OUT DriverInfo); ResDataObject ExamList; //20200611 ys add 增加配置工具获取、设置配置的功能 ResDataObject* m_pAttribute; ResDataObject* m_pDescription; std::string *m_strConfigPath; //配置文件路径 int m_nImgSizeX; int m_nImgSizeY; int m_nBits; int m_nPixelSpacing; RET_STATUS DATA_ACTION GetDeviceConfig(ResDataObject PARAM_OUT *pDeviceConfig); RET_STATUS DATA_ACTION SetDeviceConfig(ResDataObject PARAM_IN *DeviceConfig); bool GetDeviceConfigValue(const char *pInnerKey, int nPathID, string &strValue); bool SetDeviceConfigValue(const char *pInnerKey, int nPathID, const char *szValue); //20200611 add end RET_STATUS DATA_ACTION SetFrameRate(FLOAT frameRate); RET_STATUS DATA_ACTION SetDemoImage(const char *pPath); void SendEcomFPDState(int state); };