123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235 |
- #pragma once
- #include <string>
- #include "DriverConfigInfo.hpp"
- #include "Generator.BasicMoulds.hpp"
- #include "CCOS.Dev.IODevice.Detail.hpp"
- //#include "Logger.temp.h"
- namespace nsDetail = CCOS::Dev::Detail;
- #define _CCOSDEVGENDEVICEMOULD_API
- namespace CCOS::Dev::Detail::Generator
- {
- //获取日志配置路径
- _CCOSDEVGENDEVICEMOULD_API string GetProcessDirectory();
- std::string GetElfNoteVersion(const std::string& filename);
- //获取配置文件中指定模块的版本号
- _CCOSDEVGENDEVICEMOULD_API bool GetVersion(string& version, void* hMyModule);
- _CCOSDEVGENDEVICEMOULD_API bool GetVersion(string& version, ResDataObject& config);
- _CCOSDEVGENDEVICEMOULD_API bool GetVersion(string& version);
- _CCOSDEVGENDEVICEMOULD_API void TransJsonText(ResDataObject& config);
- //-----------------------------------------------------------------------------
- // DoseUnit
- //-----------------------------------------------------------------------------
- class _CCOSDEVGENDEVICEMOULD_API DoseUnit : public IOLogicUnit
- {
- public:
- DoseUnit() {};
- virtual ~DoseUnit() {};
- public:
- //设备参数
- std::unique_ptr<WORKSTATIONMould> m_WS;
- std::unique_ptr<GENHANDSWITCHMould> m_Handswitch;
- std::unique_ptr<TUBEINFOMould> m_TubeInfo;//add by wxx for demand574
- std::unique_ptr<TUBETARGETMATERIALMould> m_TubeTargetMaterial;
- std::unique_ptr<TUBEANGLEMould> m_TubeAngle;
- std::unique_ptr<TUBEHEATMould> m_HE;
- std::unique_ptr<GENSYNSTATEMould> m_GenSynState;
- std::unique_ptr<GENSTATEMould> m_GenState;
- std::unique_ptr<BATTERYCHARGSTATEMould> m_BatteryChargeState;
- std::unique_ptr<BATTERYPOWERSTATEMould> m_BatteryPowerState; //add by wxx for DEL项目补充V2del上的属性
- std::unique_ptr<REFERENCEAIRKERMAMould> m_ReferenceAirKerma;
- //静态参数
- std::unique_ptr<KVMould> m_KV;
- std::unique_ptr<MAMould> m_MA;
- std::unique_ptr<MSMould> m_MS;
- std::unique_ptr<MASMould> m_MAS;
- std::unique_ptr<TECHMODEMould> m_Techmode;
- std::unique_ptr<FOCUSMould> m_Focus;
- std::unique_ptr<AECFIELDMould> m_AECField;
- std::unique_ptr<AECFILMMould> m_AECFilm;
- std::unique_ptr<AECDENSITYMould> m_AECDensity;
- std::unique_ptr<GENHEATMould> m_GenHE;
- std::unique_ptr<POSTKVMould> m_PostKV;
- std::unique_ptr<POSTMAMould> m_PostMA;
- std::unique_ptr<POSTMSMould> m_PostMS;
- std::unique_ptr<POSTMASMould> m_PostMAS;
- std::unique_ptr<TOTALEXPNUMMould> m_GenTotalExpNumber;
- std::unique_ptr<TOTALACQTIMESMould> m_GenTotalAcqTimes;
- std::unique_ptr<TUBECOOLTIMEMould> m_GenTubeCoolWaitTimes;
- std::unique_ptr<TUBEOVERLOADNUMMould> m_GenTubeOverLoadNumber;
- std::unique_ptr<CUREXPNUMMould> m_GenCurrentExpNumber;
- std::unique_ptr<EXPMODEMould> m_ExpMode;
- std::unique_ptr<EXAMMODEMould> m_EXAMMode;
- std::unique_ptr<FRAMERATEMould> m_FrameRate;
- std::unique_ptr<MODALITYMould> m_Modality;
- std::unique_ptr<KVLISTMould> m_KVList;
- std::unique_ptr<MASLISTMould> m_mAsList;
- float m_FocusSmall{ 0 };
- float m_FocusLarge{ 1 };
- //动态参数
- std::unique_ptr<FLUKVMould> m_FLKV;
- std::unique_ptr<FLUMAMould> m_FLMA;
- std::unique_ptr<FLUMSMould> m_FLMS;
- std::unique_ptr<FLAccTimeMould> m_FLAccTime;//透视累计时间
- std::string m_FLAccTimeUnit;//透视累计时间单位
- std::unique_ptr<FLUIntTimeMould> m_FLIntTime;//脉冲周期时间
- std::unique_ptr<PPSMould> m_PPS;//帧率
- std::unique_ptr<FLUModeMould> m_FLMode;//透视模式: 0-非透视, 1-连续,2-脉冲,3-高剂量连续,4-高剂量脉冲
- std::unique_ptr<FLUABSStatusMould> m_ABSStatus;//ABS状态: 0-ABS关闭, 1-ABS启用(KV only), 2 - ABS启用(KV/mA)
- std::unique_ptr<FLUMagMould> m_MagSize;//fluoro mag 0 to 3 - sets Mag size, ASCII character for 255 - Mag selection disabled
- std::unique_ptr<FLUDoseLevelMould> m_DoseLevel;//剂量模式,DOSE_LEVEL_LOW = 0, DOSE_LEVEL_NORMAL = 1, DOSE_LEVEL_HIGH = 2 ,后来由于需要分开cine的dose level和 透视的dose level 互不影响,所以约定 10以后的值 给cine 使用。
- std::unique_ptr<FLUCurveMould> m_Curve;//ABS曲线 0 = OFF, 1-3 = curve enabled
- //cine
- std::unique_ptr<FLUCineKVMould> m_CineFLKV;//
- std::unique_ptr<FLUCineMAMould> m_CineFLMA;//
- std::unique_ptr<FLUCineMSMould> m_CineFLMS;//
- };
- //-----------------------------------------------------------------------------
- // GeneratorMould
- //-----------------------------------------------------------------------------
- namespace nDev = CCOS::Dev;
- class _CCOSDEVGENDEVICEMOULD_API GeneratorMould
- {
- public:
- GeneratorMould ();
- ~GeneratorMould ();
- protected:
- virtual void Register(Dispatch* Dispatch);
- virtual void RegisterOther (Dispatch* Dispatch); // 子类可能希望注册更多的
- virtual void RegisterAEC(Dispatch* Dispatch);
- virtual void RegisterExpEnable(Dispatch* Dispatch);
- virtual void RegisterGeneratortoSyncStatus(Dispatch* Dispatch);
- virtual void RegisterRAD(Dispatch* Dispatch);
- virtual void RegisterFluoro(Dispatch* Dispatch);
- protected:
- //设备方法
- virtual RET_STATUS Reset() = 0;
- virtual RET_STATUS SetWS(const std::string value) = 0;
- virtual RET_STATUS SetGenSynState(int value) = 0;
-
- virtual RET_STATUS SetGenState(int value) = 0;
- virtual RET_STATUS SetExpEnable() = 0;
- virtual RET_STATUS SetExpDisable() = 0;
- virtual RET_STATUS QueryHE(int& value) = 0;
- virtual RET_STATUS SetExpMode(std::string value) = 0;
- virtual RET_STATUS SetFrameRate(float frameRate) = 0;
- virtual RET_STATUS SetEXAMMode(std::string value) = 0;
- virtual RET_STATUS SetCollimatorLight(unsigned short value) { return RET_STATUS::RET_SUCCEED; };//不要设置为纯虚,否则所有子类都得改
- virtual RET_STATUS ActiveSyncMode(_tSyncModeArgs value) { return RET_STATUS::RET_SUCCEED; };
- virtual RET_STATUS SetGenCurrentSMState(const std::string value);
- virtual RET_STATUS SimulateError(const std::string value) { return RET_STATUS::RET_SUCCEED; };
- //点片
- virtual RET_STATUS IncKV () = 0;
- virtual RET_STATUS DecKV () = 0;
- virtual RET_STATUS IncKVL();//add by wxx for task226:减少现有模块改造所以不写成纯虚
- virtual RET_STATUS DecKVL();
- virtual RET_STATUS SetKV (float value) = 0;
- virtual RET_STATUS IncMA () = 0;
- virtual RET_STATUS DecMA () = 0;
- virtual RET_STATUS IncMAL();//add by wxx for task226
- virtual RET_STATUS DecMAL();
- virtual RET_STATUS SetMA (float value) = 0;
- virtual RET_STATUS IncMS () = 0;
- virtual RET_STATUS DecMS () = 0;
- virtual RET_STATUS IncMSL();//add by wxx for task226
- virtual RET_STATUS DecMSL();
- virtual RET_STATUS SetMS (float value) = 0;
- virtual RET_STATUS IncMAS () = 0;
- virtual RET_STATUS DecMAS () = 0;
- virtual RET_STATUS IncMASL();//add by wxx for task226
- virtual RET_STATUS DecMASL();
- virtual RET_STATUS SetMAS (float value) = 0;
- virtual RET_STATUS SetTechmode (int value) = 0;
- virtual RET_STATUS SetFocus (int value) = 0;
- virtual RET_STATUS SetAECDensity (int value) = 0;
- virtual RET_STATUS IncAECDensity();//add by wxx for bug5681
- virtual RET_STATUS DecAECDensity();
- virtual RET_STATUS SetAECField (int value) = 0;
- virtual RET_STATUS SetAECFilm (int value) = 0;
- virtual RET_STATUS QueryPostKV(float& value) = 0;
- virtual RET_STATUS QueryPostMA(float& value) = 0;
- virtual RET_STATUS QueryPostMS(float& value) = 0;
- virtual RET_STATUS QueryPostMAS(float& value) = 0;
- virtual RET_STATUS SetAPR (const _tAPRArgs & t) = 0;
- virtual RET_STATUS SetAPRArray(vector<_tAPRArgs>& APRarray);
-
- //透视
- virtual RET_STATUS IncFluKV(); //透视KV调节
- virtual RET_STATUS DecFluKV();
- virtual RET_STATUS SetFluKV(float value);
- virtual RET_STATUS IncFluMA(); //透视MA调节
- virtual RET_STATUS DecFluMA();
- virtual RET_STATUS SetFluMA(float value);
- virtual RET_STATUS IncFluMS(); //透视MS调节
- virtual RET_STATUS DecFluMS();
- virtual RET_STATUS SetFluMS(float value);
- virtual RET_STATUS SetPPS(float frameRate); //脉冲透视帧率调节
- virtual RET_STATUS INCPPS();
- virtual RET_STATUS DECPPS();
- virtual RET_STATUS SetPluseWidth(float fplusewidth); //设置脉宽
- virtual RET_STATUS SetABSMode(int nMode); //设置自动亮度调节(ABS)模式
- virtual RET_STATUS SetABSCurve(int curveNum); //ABS曲线调节
- virtual RET_STATUS IncABSCurve();
- virtual RET_STATUS DecABSCurve();
- virtual RET_STATUS SetABSValue(float fABSValue);
- virtual RET_STATUS SetABSTargetEXI(float fEXIValue);
- virtual RET_STATUS SetAPF(const _tAPFArgs& t); //一次性设置透视参数
- virtual float GetFluIntTimer(); //获取透视周期时间
- virtual float GetFluAccTimer(); //获取透视曝光累计时间
- virtual RET_STATUS ResetFluTimer(int ntype); //清空透视曝光累计时间
- virtual RET_STATUS SetFluPre(int bPrepare); //设置透视预备阶段使能
- virtual RET_STATUS SetFluEXP(int bPrepare); //设置透视曝光阶段使能
- virtual RET_STATUS SetFLFMode(std::string value); //设置透视模式
- virtual RET_STATUS SetFluMAG(int nsize); //设置MG:0 to 3 - sets Mag size, ASCII character for 255 - Mag selection disabled
- virtual RET_STATUS DisableMAG();
- virtual RET_STATUS SetFluDoseLever(int nlever); //设置透视剂量等级( 0,1,2 )
- virtual RET_STATUS SetHalfDose(int nlever); //设置透视半价剂量
- virtual RET_STATUS TransferRadCurve(int ncurve); //点片KV跟随透视,0-3 Set curve 0:disable
- protected:
- DoseUnit m_DoseUnit;
- };
- }
- namespace CCOS::Dev::Detail::Generator
- {
- class _CCOSDEVGENDEVICEMOULD_API DriverMould : public CCOS::Dev::IODriver
- {
- public:
- DriverMould ();
- ~DriverMould ();
- virtual std::string GetGUID () const;
- virtual string GetConnectDLL(string& ConfigFileName);
- virtual ResDataObject GetConnectParam(string& ConfigFileName);
- protected:
- std::list <ConfigInfo> m_ConfigInfo;
- };
- }
|