123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201 |
- #pragma once
- #include "CCOS.Dev.FPDDeviceMould.hpp"
- #include "OemAcq.h"
- #include "OemSync.h"
- #include "OemCtrl.h"
- #include "OemCalib.h"
- #include "DetectorConfiguration.h"
- #define CCOSDEVFPDAPI __declspec(dllexport)
- namespace CCOS::Dev::Detail::Detector
- {
- class CCOSDEVFPDAPI UltrasonicProbeDriver : public FPDDriverMould
- {
- FPDDeviceUltrasonicProbe* m_pObjDev;
- bool m_bDriverConnect; //driver是否连接的标记位
- ResDataObject m_DeviceConfig;
- ResDataObject m_ConfigAll; //存储当前的配置,用于修改配置时写回文件
- ResDataObject m_Configurations; //存储当前配置中“CONFIGURATION”节点的内容
- std::unique_ptr <ResDataObject> m_pAttribute;
- std::unique_ptr <ResDataObject> m_pDescription;
- public:
- UltrasonicProbeDriver();
- virtual ~UltrasonicProbeDriver();
- 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 CCOSDEVFPDAPI FPDDeviceUltrasonicProbe : 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 <DetectorConfiguration> m_DetectorConfiguration;
- std::unique_ptr <DeviceTemperatureMould> m_Temperature;
- std::unique_ptr <DeviceBatteryMould> m_Battery;
- std::unique_ptr <DeviceWifiMould> m_Wifi;
- PVOID m_pDetectors;
- DeviceIndexStruct m_stDeviceConfig;
- std::string m_strWorkPath;
- int m_nHavePreview;//是否由预览图
- int m_nPreImgWidth; //预览图图像的宽
- int m_nPreImgHeight; //预览图图像的高
- int m_nPreImageBits; //预览图图像位数
- int m_nImageWidth;//向上推图的图像的高
- int m_nImageHeight; //向上推图的图像的宽
- int m_nImageBits;//向上推图的图像位数
- int m_nPixelSpacing;
- int m_nSensitivity;
- APP_STATUS m_eAppStatus;
- bool m_bConnect;
- unsigned char* m_pwRawImageData; //保存Ctrl回调的图像内存
- unsigned char* m_pwPreviewImg; //保存Ctrl回调的preview内存
- SYSTEMTIME m_stImgCreateTime; //记录图像生成时间(软同步使用开窗时间),用于填写dicom
- SYNC_MODE m_eSyncMode;
- //HANDLE m_PauseCalibrationEvt;
- //HANDLE m_WaitCalibDoseEvt;
- //ResDataObject m_CalibDoseList; //加载平板自己的校正剂量配置
- //int m_nCalibTotalExposureNum; //校正曝光总次数
- //int m_nCalibCurrentCalibrationRound; //校正曝光第几轮
- //int m_nCalibCurrentExposureIndex; //校正曝光第几次
- //int m_nCalibCurrentExposureNum; //已校正曝光总次数
- //int m_nXrayCalibNum;
- ResDataObject* m_pFullImageHead;
- ResDataObject* m_pPreviewImageHead;
- float m_fFactorEXI2UGY; //探测器EXI -> UGY 转换系数
- bool m_bForceGridSuppress;
- bool m_bAttached;
- //float m_fDoseParam;// 校正用的曝光计量,发送到UI 且本地记录
- int m_nBatteryCapacity;
- int m_nBatteryCharges;
- float m_fBatteryTemperature;
- //HANDLE m_UploadCalibMapOver;
- bool m_bResetDetector; //是否reset探测器,暂时不用
- int m_nShockCounts;
- bool m_bOnlyHaveFpd;//当前系统是否只配置了一个真实的探测器并且处于AED同步模式,其他设备没有或者是demo的 1-是 0-否 默认否
- public:
- FPDDeviceUltrasonicProbe(std::shared_ptr<IOEventCenter> center, std::string strConfigPath);
- ~FPDDeviceUltrasonicProbe();
- virtual std::string GetGUID() const override;
- virtual bool Prepare() override;
- bool CreateDevice();
- void Register();
- RET_STATUS Connect();
- RET_STATUS EnterExam(int nExamMode);
- RET_STATUS ActiveDetector(int nDetectorIndex, bool bActive);
- RET_STATUS SetAcqMode(int nMode);
- RET_STATUS PrepareAcquisition();
- RET_STATUS StartAcquisition(string in = "");
- RET_STATUS StopAcquisition();
- //RET_STATUS ActiveCalibration(CCOS_CALIBRATION_TYPE eType);
- //RET_STATUS PrepareCalibration();
- //RET_STATUS GetRequestedDose(std::string& strDose);
- //RET_STATUS SetRequestedDose(std::string strDose);
- //RET_STATUS StartCalibration();
- //RET_STATUS StopCalibration();
- //RET_STATUS AcceptCalibration();
- //RET_STATUS RejectCalibration();
- //RET_STATUS SaveCalibrationFile(bool bSaveFlag);
- //RET_STATUS GetCalibrationStep(int nDetectorID, string& strCalibrationStepInfo);
- //RET_STATUS PauseCalibration();
- RET_STATUS Reset();//重置探测器
- RET_STATUS GetDetectorInfo(string& strFDI);
- RET_STATUS ResetConnect();
- //bool CompleteCalibration();
- //void AbortCalibration();
- //超声相关
- RET_STATUS SetFreeze(int nFreeze);
- RET_STATUS SwitchProbe(int nProbeType);//切换探头
- RET_STATUS SwitchProbeMode(int nProbeMode);//切换模式
- RET_STATUS SetBGain(int nGain);
- RET_STATUS SetBDepth(int nDepth);
- RET_STATUS SetBFrequency(float fFrequency);
- RET_STATUS SetBFocus(int nFocus);
- RET_STATUS SetBHarmonic(int nHarmonic);
- RET_STATUS SetBPower(int nPower);
- RET_STATUS SetBDynamicRange(int nRange);
- RET_STATUS GetBDepth(int& nDepth, float& fDepthCm);
- RET_STATUS GetBFrequency(float& fFrequency);
- RET_STATUS GetBGain(int& nGain);
- RET_STATUS GetBFocus(int& nFocus, float& fFocusCm);
- RET_STATUS GetBDynamicRange(int& nRange);
- RET_STATUS SetCRoi(int x1, int x2, int y1, int y2);
- RET_STATUS SetCGain(int nGain);
- RET_STATUS SetPostLevel(int nLevel);
- RET_STATUS SetMirror(int nMirror);
- RET_STATUS SetCFrequency(float fFrequency);
- RET_STATUS SetCSpeedWallFilter(int nSpeedWallFilter);
- RET_STATUS SetCRangeWallFilter(int nRangeWallFilter);
- RET_STATUS SetCPersistence(int nPersistence);
- RET_STATUS SetCLinearAngle(int nAngle);
- RET_STATUS SetCPrf(int nPrf);
- RET_STATUS GetCFrequency(float& fFrequency);
- RET_STATUS GetCGain(int& nGain);
- RET_STATUS GetCPrf(int& nPrf);
- RET_STATUS GetCLinearAngle(int& nAngle);
- //调节图像亮暗的
- RET_STATUS SetTgc1(int nTgc);
- RET_STATUS SetTgc2(int nTgc);
- RET_STATUS SetTgc3(int nTgc);
- RET_STATUS SetTgc4(int nTgc);
- RET_STATUS SetTgc5(int nTgc);
- RET_STATUS SetTgc6(int nTgc);
- RET_STATUS SetTgc7(int nTgc);
- RET_STATUS SetTgc8(int nTgc);
- void OnFPDCallback(int nDetectorID, int nEventID, int nEventLevel, const char* pszMsg, int nParam1, float fParam2, int nPtrParamLen, void* pParam);
- void NotifyXWindowOn();
- void NotifyXWindowOff();
- bool GetOnlyHaveFpd();//获取环境中是否只有平板这一个真实设备的配置项
- //int GetGainExposureNum();//获取gain校正曝光总次数
-
- private:
- bool LoadConfig();
- void SendTemperatureValue(float fValue);
- void SendWifiValue(int nValue);
- void SendBatteryValue(int nValue);
- string MakeImageHead(IMAGE_VIEW_TYPE Type);
- RET_STATUS AddFrameWithRawHead(IMAGE_VIEW_TYPE Type, unsigned char* pFrameBuff, DWORD FrameSize);
- bool OnProcessPreviewImage(unsigned char* pRawImage, DWORD FrameSize);
- bool OnProcessImage(unsigned char* pImage, DWORD FrameSize);
- void OnProcessTemperature(int nID, float fTemperature);
- 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);
- void RegisterAutonumous(nsDetail::Dispatch* Dispatch);
- };
- } //end namespace CCOS::Dev::Detail::Detector
|