#pragma once #include "CCOS.Dev.MouldDefine.hpp" //#include "Definitions.h" namespace nsDetail = CCOS::Dev::Detail; namespace CCOS::Dev::Detail::Generator { class _CCOS_GEN_IDETEC_Almax_API CGEN_DEV_IDETEC_Almax { public: CGEN_DEV_IDETEC_Almax(string configfile); ~CGEN_DEV_IDETEC_Almax(); //������ģ��ͨ�� std::string GetGUID(); //�ṩGUID std::string GetResource(); //�ṩDevice����Ľӿڡ����� void GetUnitHWValueFromCFG(); //��ȡ�����ļ��趨ֵ RET_STATUS SetWS(const std::string value); //���ù���λ RET_STATUS SetExpSYN(EnSYNMode value); //�����ع�ͬ�� RET_STATUS SetExpEnable(); //�ع�ʹ�� RET_STATUS SetExpDisable(); RET_STATUS Reset(); //���÷��������� RET_STATUS RefreshData(); //ˢ�²������� RET_STATUS SetGenSynState(int value); //���÷������ع�״̬ RET_STATUS SetGenState(int value); //���÷������豸״̬ RET_STATUS Clear_DAP(); //���DAP RET_STATUS GetValue_DAP(float& value); //��ȡDAP RET_STATUS SetDetectorWindow(bool value); //����TIC RET_STATUS SetExposurePermit(bool value); //����EXO //ָ��ͽӿ� RET_STATUS HWSend(const char* strCommand, int lengh, bool reSend = false, int nTimeOut = TIMEOUTVALUE); void SetNotifyCallBack(callBackFun fun); //������Ϣ�ϱ��ص� //������֧�ֵ�ͨ�õ�Ƭ���� RET_STATUS IncRadKV(); //��ƬKV���� RET_STATUS DecRadKV(); RET_STATUS SetRadKV(float value); RET_STATUS IncRadMA(); //��ƬMA���� RET_STATUS DecRadMA(); RET_STATUS SetRadMA(float value); RET_STATUS IncRadMS(); //��ƬMS���� RET_STATUS DecRadMS(); RET_STATUS SetRadMS(float value); RET_STATUS IncRadMAS(); //��ƬMAS���� RET_STATUS DecRadMAS(); RET_STATUS SetRadMAS(float value); RET_STATUS SetFocus(int value); //���ý��� RET_STATUS SetTechmode(int value); //���ü���ģʽ:1point,2point,3point RET_STATUS SetAECDensity(int value); //����AECŨ�� RET_STATUS SetAECField(int value); //����AECȡ������ RET_STATUS SetAECFilm(int value); //����AEC��Ƭ RET_STATUS SetAPR(const _tAPRArgs& t); //һ�������õ�Ƭ���� RET_STATUS QueryPostKV(float& value); //��ѯ�ع�����ʵ���� RET_STATUS QueryPostMA(float& value); RET_STATUS QueryPostMS(float& value); RET_STATUS QueryPostMAS(float& value); RET_STATUS SetRadFrameRate(float frameRate); //�������е�Ƭ֡�� RET_STATUS SetExpMode(std::string value); //�����ع�ģʽ:��֡�����С�˫�� RET_STATUS SetEXAMMode(std::string value); //���ü��ģʽ:�ֶ����Զ� //������֧�ֵ�ͨ��͸������ RET_STATUS IncFluKV(); //͸��KV���� RET_STATUS DecFluKV(); RET_STATUS SetFluKV(float value); RET_STATUS IncFluMA(); //͸��MA���� RET_STATUS DecFluMA(); RET_STATUS SetFluMA(float value); RET_STATUS IncFluMS(); //͸��MS���� RET_STATUS DecFluMS(); RET_STATUS SetFluMS(float value); RET_STATUS IncFluMAS(); //͸��MAS���� RET_STATUS DecFluMAS(); RET_STATUS SetFluMAS(float value); RET_STATUS SetPPS(float frameRate); //����͸��֡�ʵ��� RET_STATUS GetPPS(); RET_STATUS INCPPS(); RET_STATUS DECPPS(); RET_STATUS SetPluseWidth(float fplusewidth); //�������� RET_STATUS SetABSMode(int nMode); //�����Զ����ȵ��ڣ�ABS��ģʽ RET_STATUS SetABSCurve(); //ABS���ߵ��� RET_STATUS IncABSCurve(); RET_STATUS DecABSCurve(); RET_STATUS SetABSValue(float fABSValue); RET_STATUS SetABSTargetEXI(float fEXIValue); RET_STATUS SetAPF(const _tAPFArgs& t); //һ��������͸�Ӳ��� RET_STATUS GetFluIntTimer(); //��ȡ͸������ʱ�� RET_STATUS GetFluAccTimer(); //��ȡ͸���ع��ۼ�ʱ�� RET_STATUS ResetFluTimer(int ntype); //���͸���ع��ۼ�ʱ�� RET_STATUS SetFluPre(int bPrepare); //����͸��Ԥ���׶�ʹ�� RET_STATUS SetFluEXP(int bPrepare); //����͸���ع�׶�ʹ�� RET_STATUS SetFluMode(std::string value); //����͸��ģʽ RET_STATUS SetFluMAG(int nsize); //����MG:0 to 3 - sets Mag size, ASCII character for 255 - Mag selection disabled RET_STATUS DisableMAG(); RET_STATUS SetFluDoseLever(int nlever); //����͸�Ӽ����ȼ�( 0,1,2 ) RET_STATUS SetHalfDose(int nlever); //����͸�Ӱ�ۼ��� RET_STATUS TransferRadCurve(int ncurve); //��ƬKV����͸��,0-3 Set curve 0:disable //Almax����ָ�� RET_STATUS SetPanelField(int value); //������ͻ��������ƽ���������ѡ���ܵĶ�Ӧ RET_STATUS SetShutDown(int value); //�ڿͻ�����̨���¹ػ���ť��DFOC�յ���SSD1�����˳����� RET_STATUS SetExamView(int value); //ʹ�ø����DFOC Profile ��ͻ���������ϵļ�鲿λ��Ӧ���� RET_STATUS SetDSA(int value); //����Ѫ�ܡ��������Ӱģʽ RET_STATUS SetRoadMap(int value); //����Road Map RET_STATUS EnterExam(int value); //��ʶ������ public: ResDataObject m_GenConfig; //�����ļ� string m_pDevicePath; //Container��Ҫ���豸·�� static CcosAttrKey::UNIT_CTRL_TYPE m_nNotifyType; //��Ϣ�ϱ���ʽ //�̱߳��������� static atomic m_iLoopTime; //ѭ�����ʱ�䣨���룩��ѯ�߳�ʹ�� atomic m_iHeartBeats; //����ͳ�� atomic m_bConnectFlag; //���ӱ�� //Ӳ������ std::unique_ptr m_TubeInfo; //�����������Ϊ�ͺ� std::unique_ptr m_TubeTargetMaterial; //�����в� std::unique_ptr m_TubeAngle; //��ܽǶȣ��еķ���������ʱ���� std::unique_ptr m_TubeHE; //����¶� std::unique_ptr m_GenHE; //���������ѹװ�ã��¶� std::unique_ptr m_BatteryChargeState; //���״̬����硢δ��硢δ��װ std::unique_ptr m_BatteryPowerState; //��ص��� std::unique_ptr m_GenSynState; //�������ع�״̬��������ת������������ѹ�����ߡ�ֹͣ��ת��ѹ std::unique_ptr m_GenState; //�������豸״̬���ϵ硢���ߡ���ʼ�����������ع��С���ȴ���д��� std::unique_ptr m_Handswitch; //��բ״̬��һ�����¡��������¡�һ���ɿ��������ɿ� std::unique_ptr m_Footswitch; //��բ״̬�����¡�̧�� map m_arrWSMap; //����λ�������ұ� cfgWorkStationKey m_strCurrentWSName; //��ǰ����λ����; //����λ��վλ����λ float m_fAirKerm{ 0 }; // float AirKermRate{ 0 }; // //��Ƭ���� std::unique_ptr m_RadKV; //������ѹ std::unique_ptr m_RadMA; //�������� std::unique_ptr m_RadMS; //��ѹʱ�� std::unique_ptr m_RadMAS; //����ʱ��� std::unique_ptr m_RadTechmode; //��������ģʽ��һ�㡢���㡢���� std::unique_ptr m_RadFocus; //�������� std::unique_ptr m_RadAECField; //AECȡ������ std::unique_ptr m_RadAECFilm; //AEC��Ƭ std::unique_ptr m_RadAECDensity; //AECŨ�� std::unique_ptr m_RadFrameRate; //���е�Ƭ֡�� std::unique_ptr m_PostKV; //�ع�ʵ�ʵ�ѹ std::unique_ptr m_PostMA; //�ع�ʵ�ʵ��� std::unique_ptr m_PostMS; //�ع�ʵ��ʱ�� std::unique_ptr m_PostMAS; //�ع�ʵ�ʵ���ʱ��� std::unique_ptr m_ExpMode; //�ع�ģʽ����Ƭ�����е�Ƭ��˫�� std::unique_ptr m_EXAMMode; //���ģʽ���ֶ����Զ� float m_FocusSmall{ 0 }; //С��˿�ߴ磨�����ļ���ȡ�� float m_FocusLarge{ 1 }; //���˿�ߴ磨�����ļ���ȡ�� //͸�Ӳ��� std::unique_ptr m_FluKV; //������ѹ(��̬��������Ƭ��͸�ӵ�KVҪ�ֱ�����) std::unique_ptr m_FluMA; //��������(��̬��������Ƭ��͸�ӵ�MAҪ�ֱ�����) std::unique_ptr m_FluMS; //��ѹʱ�䣨͸�ӹ����еĵ������ڡ������� std::unique_ptr m_FluMAS; //����ʱ���(��̬��������Ƭ��͸�ӵ�MASҪ�ֱ�����) std::unique_ptr m_FluPPS; //֡�ʣ�����Ƶ��,�����е�Ƭ��һ���� std::unique_ptr m_FluABSStatus; //�Զ����ȵ��ڿ��� std::unique_ptr m_FluDoseLever; //�����ȼ� std::unique_ptr m_FluFMode; //͸��ģʽ�����������塢�߼����������߼������� std::unique_ptr m_FluIntTime; //͸������ʱ��:�����ع�ʱ��+������һ���ع�ļ��ʱ�� std::unique_ptr m_FluAccTime; //͸���ۼ�ʱ��:����͸�ӹ����У�����X-ray���ۼ�ʱ�� private: RET_STATUS HWSendWaittimeCMD(char* strCommand, int lengh, int headLengh = 3); //����"ָ������1"ָ�� RET_STATUS HWSendHBCMD(char* strCommand, int lengh, int headLengh = 3); //����"ָ������2"ָ�� RET_STATUS HWSendWaitACKCMD(char* strCommand, int lengh, int headLengh = 3); //����"ָ������3"ָ�� void OnCallBack(); //����ָ��ص����� bool StartHardwareStatusThread(); //������ѯ�߳� static void HardwareStatusThread(CGEN_DEV_IDETEC_Almax* pParam); //��ʱ��ѯ״̬��Ϣ void FireNotify(std::string key, const int context); //���ϲ��ϱ�������Ϣ void FireNotify(std::string key, const float context); //���ϲ��ϱ���������Ϣ void FireNotify(std::string key, const std::string context); //���ϲ��ϱ��ַ�������Ϣ void FireErrorMessage(const bool Act, const int Code, const char* ResInfo = ""); //�ϱ�������Ϣ void FireWarnMessage(const bool Act, const int Code, const char* ResInfo = ""); //�ϱ��澯��Ϣ private: callBackFun m_funV2DynamicCallBackFun{ nullptr };//V2��̬��Ϣ�����ص� std::thread m_pHardwareStatusThread; //��ѯ�߳̾�� atomic m_bExpEnable; //�ع�ʹ�� EnSYNMode m_bExpSYN{ EnSYNMode::EXPOSURE_SYNMODE_HARDWARE_SYNBOX }; //�ع�ͬ��:����Ӳ atomic m_bSoftExpPermit{ 0 }; //���ع�ȷ�� std::unique_ptr m_MSGUnit; //������Ϣ������ std::unique_ptr m_EventCenter; //������Ϣ�ϱ�Center int m_IPM{ 0 }; int m_IPF{ 0 }; int m_IPL{ 0 }; }; }