123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152 |
- #pragma once
- #include "CCOS.Dev.FPDDeviceMould.hpp"
- #include "OemAcq.h"
- #include "OemSync.h"
- #include "OemCtrl.h"
- #include "OemCalib.h"
- #include "DetectorConfiguration.h"
- #pragma warning(disable:26812) //枚举类型“ENUM_PANEL_EVENT_STATE”未设定范围。相比于 "enum",首选 "enum class" (Enum.3)
- #pragma warning(disable:26451) //算术溢出 : 使用 4 字节值上的运算符 * ,然后将结果转换到 8 字节值。在调用运算符 * 之前将值强制转换为宽类型可避免溢出(io.2)。
- #pragma warning(disable:6258) //允许线程清理
- #pragma warning(disable:28159) //无需考虑使用“GetTickCount64”而不是“GetTickCount”。
- #ifdef CCOSDEVFPD_EXPORTS
- #define CCOSDEVFPD_API __declspec(dllexport)
- #else
- #define CCOSDEVFPD_API __declspec(dllimport)
- #endif
- class PZMedicalCtrl;
- namespace CCOS::Dev::Detail::Detector
- {
- class CCOSDEVFPD_API PZMedicalDriver : public FPDDriverMould
- {
- FPDDevicePZMedical* pObjDev;
- bool m_bConnect; //driver是否连接的标记位
- //*** 配置文件相关成员变量begin ***
- ResDataObject m_DeviceConfig;
- ResDataObject m_ConfigAll; //存储当前的配置,用于修改配置时写回文件
- ResDataObject m_Configurations; //存储当前配置中“CONFIGURATION”节点的内容
- std::unique_ptr <ResDataObject> m_pAttribute;
- std::unique_ptr <ResDataObject> m_pDescription;
- //*** 配置文件相关成员变量end ***
- public:
- PZMedicalDriver();
- virtual ~PZMedicalDriver();
- virtual void Prepare() override;
- virtual bool Connect() override;
- virtual void Disconnect() override;
- virtual bool isConnected() const override;
- virtual auto CreateDevice(int index)->std::unique_ptr <IODevice> override;
- virtual std::string DriverProbe() override;
- virtual std::string GetResource() override;
- virtual std::string DeviceProbe() override;
- virtual bool GetDeviceConfig(std::string& Cfg) override;
- virtual bool SetDeviceConfig(std::string Cfg) override;
- bool SaveConfigFile(bool bSendNotify);
- bool GetDeviceConfigValue(ResDataObject config, const char* pInnerKey, int nPathID, string& strValue);
- bool SetDeviceConfigValue(ResDataObject config, const char* pInnerKey, int nPathID, const char* szValue);
- };
- namespace nsDetail = CCOS::Dev::Detail;
- class CCOSDEVFPD_API FPDDevicePZMedical : public FPDDeviceMould
- {
- using super = IODeviceDetail; //IODeviceDetail类的别名声明
- std::unique_ptr <DetectorCtrlUnit> m_DetectorCtrlUnit;
- std::unique_ptr <AcqUnit> m_AcqUnit;
- std::unique_ptr <SyncUnit> m_SyncUnit;
- std::unique_ptr <CalibUnit> m_CalibUnit;
- std::unique_ptr <DeviceTemperatureMould> m_Temperature;
- std::unique_ptr <DeviceBatteryMould> m_Battery;
- std::unique_ptr <DeviceWifiMould> m_Wifi;
- std::unique_ptr <DetectorConfiguration> m_DetectorConfiguration;
- //std::unique_ptr <FPDErrorWarning> m_WarnAndError;
- PZMedicalCtrl* m_pDetector;
- DeviceIndexStruct m_stDeviceConfig;
- std::string m_strWorkPath; //进程路径
- //int m_nImageHeight;
- //int m_nImageWidth;
- /*int m_nCropLeft;
- int m_nCropRight;
- int m_nCropTop;
- int m_nCropBottom;
- int m_nRawImgHeight;
- int m_nRawImgWidth;*/
- //int m_nImgBits;
- //int m_nAngle;
- //int m_nPixelSpacing;
- //int m_nSensitivity;
- //float m_fDose;
- WORD* m_pImgBuffer;
- APP_STATUS m_eAppStatus;
- bool m_bConnect; //设备是否连接
- SYSTEMTIME m_stImgCreateTime; //记录图像生成时间(软同步使用开窗时间),用于填写dicom
- SYNC_MODE m_eSyncMode; //同步模式
- float m_fFactorEXI2UGY; //探测器EXI -> UGY 转换系数
- int m_nCurrentMode; //已选择的模式
- float m_fCurrentDetectorTemperature; //当前探测器的温度
- DetModeInfo m_stModeInfo;
- DetCalibInfo m_stCalibInfo;
- float m_fCurrentPPS; //上层设置的帧率
- public:
- FPDDevicePZMedical(std::shared_ptr<IOEventCenter> center, std::string strConfigPath);
- ~FPDDevicePZMedical();
- virtual std::string GetGUID() const override;
- virtual bool Prepare() override;
- bool CreateDevice();
- void Register();
- void OnFPDCallback(int nDetectorID, int nEventID, int nEventLevel, const char* pszMsg, int nParam1, float fParam2, int nPtrParamLen, void* pParam);
- RET_STATUS Connect();
- RET_STATUS EnterExam(int nExamMode);
- RET_STATUS SetAcqMode(std::string strAcqMode);
- //RET_STATUS SetSyncMode(SYNC_MODE eSyncMode, HARDWARE_TRIGGER_MODE eTriggerMode);
- //RET_STATUS SetXwindow(float fXwindowSize);
- RET_STATUS ActiveDetector(bool bActive);
- RET_STATUS GetSyncMode(SYNC_MODE &eSyncMode);
- RET_STATUS PrepareAcquisition();
- RET_STATUS StartAcquisition(string in);
- RET_STATUS StopAcquisition();
- RET_STATUS ActiveCalibration(CCOS_CALIBRATION_TYPE eType);
- RET_STATUS PrepareCalibration();
- RET_STATUS GetRequestedDose(string& strDose);
- RET_STATUS StartCalibration();
- RET_STATUS StopCalibration();
- RET_STATUS SetFluPPS(float fFluPPS);
- RET_STATUS GetFluPPS(float& fFluPPS);
- bool Support_DarkCalib();
- bool Support_XrayCalib();
- bool Support_HaveImageCalib();
- RET_STATUS GetCalibrationStep(int nDetectorID, std::string& strCalibrationStepInfo);
- RET_STATUS AcceptCalibration();
- RET_STATUS RejectCalibration();
- RET_STATUS SaveCalibrationFile(bool bSaveFlag);
- RET_STATUS StartOffset(bool isAll);
- RET_STATUS AbortOffset();
- RET_STATUS UpdateModeInRunning(std::vector<AcqModeInfo>& vAcqModeList);
- private:
- void SendTemperatureValue(float fValue);
- void SendWifiValue(int nValue);
- void SendBatteryValue(int nValue);
- bool LoadConfig();
- void OnEventProcessConf(int nDetectorID, int nEventID, int nEventLevel, const char* pszMsg, int nParam1, float fParam2, int nPtrParamLen, void* pParam);
- void OnEventProcessInfo(int nDetectorID, int nEventID, int nEventLevel, const char* pszMsg, int nParam1, float fParam2, int nPtrParamLen, void* pParam);
- void OnEventProcessStatus(int nDetectorID, int nEventID, int nEventLevel, const char* pszMsg, int nParam1, float fParam2, int nPtrParamLen, void* pParam);
- void OnEventProcessData(int nDetectorID, int nEventID, int nEventLevel, const char* pszMsg, int nParam1, float fParam2, int nPtrParamLen, void* pParam);
- void OnEventProcessError(int nDetectorID, int nEventID, int nEventLevel, const char* pszMsg, int nParam1, float fParam2, int nPtrParamLen, void* pParam);
- void OnEventProcessWarning(int nDetectorID, int nEventID, int nEventLevel, const char* pszMsg, int nParam1, float fParam2, int nPtrParamLen, void* pParam);
- protected:
- void RegisterCtrl(nsDetail::Dispatch* Dispatch);
- void RegisterAcq(nsDetail::Dispatch* Dispatch);
- void RegisterSync(nsDetail::Dispatch* Dispatch);
- void RegisterCalib(nsDetail::Dispatch* Dispatch);
- void RegisterOthers(nsDetail::Dispatch* Dispatch);
- };
- } //end namespace CCOS::Dev::Detail::Detector
|