#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; PVOID m_pFPDDevice; LogicDevice *m_pAcqFPD; //LogicDevice *m_pCaliFPD; //LogicDevice *m_pSyncFPD; // LogicDevice *m_pTemperFPD; //温度单元 HANDLE m_AcqReqEvt; HANDLE m_StopReqEvt; HANDLE m_DeviceStopedEvt; DWORD m_AcqLoopCount;//当前模式下的采集张数 DWORD m_AcquiredCount;//当前模式下的已采集张数 DWORD m_CalibrationRoundCount; DWORD m_CalibrationExpCount;//当前校正模式下的已采集张数 SeqImages *m_pSeqList;//for multiple acq mode ResDataObject m_ConfigAll; //addbyys20200618存储所有配置信息 ResDataObject m_Configurations; //addbyys20200618存储配置信息CONFIGURATION部分 bool m_bRadMode; //true:rad模式 bool m_bPreviewEnable; bool m_bFor750MT; enum Mode750MT { modePreview, modeFULL, } m_mode750MT; DETECTOR_WORK_STATUS m_eWorkStatus; //存储DPC的workstatus,该值自己判断 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); //用SetAcqMode()替代以下两个接口 //RET_STATUS DATA_ACTION SetExamInfo(ResDataObject& PARAM_IN pParam); //virtual RET_STATUS DATA_ACTION SelectExamMode(const char *pExamKey); RET_STATUS SYSTEM_CALL SetAcqMode(int AcqMode); 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 PrepareCalibration(); RET_STATUS OEM_IF StartCalibration(); RET_STATUS OEM_IF PauseCalibration();//internal call RET_STATUS OEM_IF StopCalibration(); 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 SetSyncMode(SYNC_MODE nSyncMode, HARDWARE_TRIGGER_MODE TriggerMode); RET_STATUS DATA_ACTION SetDemoImage(const char *pPath); RET_STATUS DATA_ACTION ResetError(); void SendEcomFPDState(int state); void SendInfoLog(string strLogKey, float fValue); void SendInfoLog(string strLogKey, int nValue); void SendInfoLog(string strLogKey, bool bRealSN); void SendInfoLog(string strLogKey, string strValue = ""); void SendLog(string strLogKey, string strLogLevel, bool bRealSN, string strValue = ""); };