GEN.DEV.IDETEC_Almax.h 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185
  1. #pragma once
  2. #include "CCOS.Dev.MouldDefine.hpp"
  3. //#include "Definitions.h"
  4. namespace nsDetail = CCOS::Dev::Detail;
  5. namespace CCOS::Dev::Detail::Generator
  6. {
  7. class _CCOS_GEN_IDETEC_Almax_API CGEN_DEV_IDETEC_Almax
  8. {
  9. public:
  10. CGEN_DEV_IDETEC_Almax(string configfile);
  11. ~CGEN_DEV_IDETEC_Almax();
  12. //������ģ��ͨ��
  13. std::string GetGUID(); //�ṩGUID
  14. std::string GetResource(); //�ṩDevice����Ľӿڡ�����
  15. void GetUnitHWValueFromCFG(); //��ȡ�����ļ��趨ֵ
  16. RET_STATUS SetWS(const std::string value); //���ù���λ
  17. RET_STATUS SetExpSYN(EnSYNMode value); //�����ع�ͬ��
  18. RET_STATUS SetExpEnable(); //�ع�ʹ��
  19. RET_STATUS SetExpDisable();
  20. RET_STATUS Reset(); //���÷���������
  21. RET_STATUS RefreshData(); //ˢ�²�������
  22. RET_STATUS SetGenSynState(int value); //���÷������ع�״̬
  23. RET_STATUS SetGenState(int value); //���÷������豸״̬
  24. RET_STATUS Clear_DAP(); //���DAP
  25. RET_STATUS GetValue_DAP(float& value); //��ȡDAP
  26. RET_STATUS SetDetectorWindow(bool value); //����TIC
  27. RET_STATUS SetExposurePermit(bool value); //����EXO
  28. //ָ��ͽӿ�
  29. RET_STATUS HWSend(const char* strCommand, int lengh, bool reSend = false, int nTimeOut = TIMEOUTVALUE);
  30. void SetNotifyCallBack(callBackFun fun); //������Ϣ�ϱ��ص�
  31. //������֧�ֵ�ͨ�õ�Ƭ����
  32. RET_STATUS IncRadKV(); //��ƬKV����
  33. RET_STATUS DecRadKV();
  34. RET_STATUS SetRadKV(float value);
  35. RET_STATUS IncRadMA(); //��ƬMA����
  36. RET_STATUS DecRadMA();
  37. RET_STATUS SetRadMA(float value);
  38. RET_STATUS IncRadMS(); //��ƬMS����
  39. RET_STATUS DecRadMS();
  40. RET_STATUS SetRadMS(float value);
  41. RET_STATUS IncRadMAS(); //��ƬMAS����
  42. RET_STATUS DecRadMAS();
  43. RET_STATUS SetRadMAS(float value);
  44. RET_STATUS SetFocus(int value); //���ý���
  45. RET_STATUS SetTechmode(int value); //���ü���ģʽ:1point,2point,3point
  46. RET_STATUS SetAECDensity(int value); //����AECŨ��
  47. RET_STATUS SetAECField(int value); //����AECȡ������
  48. RET_STATUS SetAECFilm(int value); //����AEC��Ƭ
  49. RET_STATUS SetAPR(const _tAPRArgs& t); //һ�������õ�Ƭ����
  50. RET_STATUS QueryPostKV(float& value); //��ѯ�ع�����ʵ����
  51. RET_STATUS QueryPostMA(float& value);
  52. RET_STATUS QueryPostMS(float& value);
  53. RET_STATUS QueryPostMAS(float& value);
  54. RET_STATUS SetRadFrameRate(float frameRate); //�������е�Ƭ֡��
  55. RET_STATUS SetExpMode(std::string value); //�����ع�ģʽ:��֡�����С�˫��
  56. RET_STATUS SetEXAMMode(std::string value); //���ü��ģʽ:�ֶ����Զ�
  57. //������֧�ֵ�ͨ��͸������
  58. RET_STATUS IncFluKV(); //͸��KV����
  59. RET_STATUS DecFluKV();
  60. RET_STATUS SetFluKV(float value);
  61. RET_STATUS IncFluMA(); //͸��MA����
  62. RET_STATUS DecFluMA();
  63. RET_STATUS SetFluMA(float value);
  64. RET_STATUS IncFluMS(); //͸��MS����
  65. RET_STATUS DecFluMS();
  66. RET_STATUS SetFluMS(float value);
  67. RET_STATUS IncFluMAS(); //͸��MAS����
  68. RET_STATUS DecFluMAS();
  69. RET_STATUS SetFluMAS(float value);
  70. RET_STATUS SetPPS(float frameRate); //����͸��֡�ʵ���
  71. RET_STATUS GetPPS();
  72. RET_STATUS INCPPS();
  73. RET_STATUS DECPPS();
  74. RET_STATUS SetPluseWidth(float fplusewidth); //��������
  75. RET_STATUS SetABSMode(int nMode); //�����Զ����ȵ��ڣ�ABS��ģʽ
  76. RET_STATUS SetABSCurve(); //ABS���ߵ���
  77. RET_STATUS IncABSCurve();
  78. RET_STATUS DecABSCurve();
  79. RET_STATUS SetABSValue(float fABSValue);
  80. RET_STATUS SetABSTargetEXI(float fEXIValue);
  81. RET_STATUS SetAPF(const _tAPFArgs& t); //һ��������͸�Ӳ���
  82. RET_STATUS GetFluIntTimer(); //��ȡ͸������ʱ��
  83. RET_STATUS GetFluAccTimer(); //��ȡ͸���ع��ۼ�ʱ��
  84. RET_STATUS ResetFluTimer(int ntype); //���͸���ع��ۼ�ʱ��
  85. RET_STATUS SetFluPre(int bPrepare); //����͸��Ԥ���׶�ʹ��
  86. RET_STATUS SetFluEXP(int bPrepare); //����͸���ع�׶�ʹ��
  87. RET_STATUS SetFluMode(std::string value); //����͸��ģʽ
  88. RET_STATUS SetFluMAG(int nsize); //����MG:0 to 3 - sets Mag size, ASCII character for 255 - Mag selection disabled
  89. RET_STATUS DisableMAG();
  90. RET_STATUS SetFluDoseLever(int nlever); //����͸�Ӽ����ȼ�( 0,1,2 )
  91. RET_STATUS SetHalfDose(int nlever); //����͸�Ӱ�ۼ���
  92. RET_STATUS TransferRadCurve(int ncurve); //��ƬKV����͸��,0-3 Set curve 0:disable
  93. //Almax����ָ��
  94. RET_STATUS SetPanelField(int value); //������ͻ��������ƽ���������ѡ���ܵĶ�Ӧ
  95. RET_STATUS SetShutDown(int value); //�ڿͻ�����̨���¹ػ���ť��DFOC�յ���SSD1�����˳�����
  96. RET_STATUS SetExamView(int value); //ʹ�ø����DFOC Profile ��ͻ���������ϵļ�鲿λ��Ӧ����
  97. RET_STATUS SetDSA(int value); //����Ѫ�ܡ��������Ӱģʽ
  98. RET_STATUS SetRoadMap(int value); //����Road Map
  99. RET_STATUS EnterExam(int value); //��ʶ������
  100. public:
  101. ResDataObject m_GenConfig; //�����ļ�
  102. string m_pDevicePath; //Container��Ҫ���豸·��
  103. static CcosAttrKey::UNIT_CTRL_TYPE m_nNotifyType; //��Ϣ�ϱ���ʽ
  104. //�̱߳���������
  105. static atomic<int> m_iLoopTime; //ѭ�����ʱ�䣨���룩��ѯ�߳�ʹ��
  106. atomic<int> m_iHeartBeats; //����ͳ��
  107. atomic<bool> m_bConnectFlag; //���ӱ��
  108. //Ӳ������
  109. std::unique_ptr<StringMould> m_TubeInfo; //�����������Ϊ�ͺ�
  110. std::unique_ptr<StringMould> m_TubeTargetMaterial; //�����в�
  111. std::unique_ptr<IntMould> m_TubeAngle; //��ܽǶȣ��еķ���������ʱ����
  112. std::unique_ptr<FloatMould> m_TubeHE; //����¶�
  113. std::unique_ptr<FloatMould> m_GenHE; //���������ѹװ�ã��¶�
  114. std::unique_ptr<IntMould> m_BatteryChargeState; //���״̬����硢δ��硢δ��װ
  115. std::unique_ptr<IntMould> m_BatteryPowerState; //��ص���
  116. std::unique_ptr<IntMould> m_GenSynState; //�������ع�״̬��������ת������������ѹ�����ߡ�ֹͣ��ת��ѹ
  117. std::unique_ptr<IntMould> m_GenState; //�������豸״̬���ϵ硢���ߡ���ʼ�����������ع��С���ȴ���д���
  118. std::unique_ptr<IntMould> m_Handswitch; //��բ״̬��һ�����¡��������¡�һ���ɿ��������ɿ�
  119. std::unique_ptr<IntMould> m_Footswitch; //��բ״̬�����¡�̧��
  120. map<cfgWorkStationKey, cfgWorkStationData> m_arrWSMap; //����λ�������ұ�
  121. cfgWorkStationKey m_strCurrentWSName; //��ǰ����λ����; //����λ��վλ����λ
  122. float m_fAirKerm{ 0 }; //
  123. float AirKermRate{ 0 }; //
  124. //��Ƭ����
  125. std::unique_ptr<FloatMould> m_RadKV; //������ѹ
  126. std::unique_ptr<FloatMould> m_RadMA; //��������
  127. std::unique_ptr<FloatMould> m_RadMS; //��ѹʱ��
  128. std::unique_ptr<FloatMould> m_RadMAS; //����ʱ���
  129. std::unique_ptr<IntMould> m_RadTechmode; //��������ģʽ��һ�㡢���㡢����
  130. std::unique_ptr<IntMould> m_RadFocus; //��������
  131. std::unique_ptr<IntMould> m_RadAECField; //AECȡ������
  132. std::unique_ptr<IntMould> m_RadAECFilm; //AEC��Ƭ
  133. std::unique_ptr<FloatMould> m_RadAECDensity; //AECŨ��
  134. std::unique_ptr<IntMould> m_RadFrameRate; //���е�Ƭ֡��
  135. std::unique_ptr<FloatMould> m_PostKV; //�ع�ʵ�ʵ�ѹ
  136. std::unique_ptr<FloatMould> m_PostMA; //�ع�ʵ�ʵ���
  137. std::unique_ptr<FloatMould> m_PostMS; //�ع�ʵ��ʱ��
  138. std::unique_ptr<FloatMould> m_PostMAS; //�ع�ʵ�ʵ���ʱ���
  139. std::unique_ptr<StringMould> m_ExpMode; //�ع�ģʽ����Ƭ�����е�Ƭ��˫��
  140. std::unique_ptr<StringMould> m_EXAMMode; //���ģʽ���ֶ����Զ�
  141. float m_FocusSmall{ 0 }; //С��˿�ߴ磨�����ļ���ȡ��
  142. float m_FocusLarge{ 1 }; //���˿�ߴ磨�����ļ���ȡ��
  143. //͸�Ӳ���
  144. std::unique_ptr<FloatMould> m_FluKV; //������ѹ(��̬��������Ƭ��͸�ӵ�KVҪ�ֱ�����)
  145. std::unique_ptr<FloatMould> m_FluMA; //��������(��̬��������Ƭ��͸�ӵ�MAҪ�ֱ�����)
  146. std::unique_ptr<FloatMould> m_FluMS; //��ѹʱ�䣨͸�ӹ����еĵ������ڡ�������
  147. std::unique_ptr<FloatMould> m_FluMAS; //����ʱ���(��̬��������Ƭ��͸�ӵ�MASҪ�ֱ�����)
  148. std::unique_ptr<IntMould> m_FluPPS; //֡�ʣ�����Ƶ��,�����е�Ƭ��һ����
  149. std::unique_ptr<IntMould> m_FluABSStatus; //�Զ����ȵ��ڿ���
  150. std::unique_ptr<IntMould> m_FluDoseLever; //�����ȼ�
  151. std::unique_ptr<IntMould> m_FluFMode; //͸��ģʽ�����������塢�߼����������߼�������
  152. std::unique_ptr<FloatMould> m_FluIntTime; //͸������ʱ��:�����ع�ʱ��+������һ���ع�ļ��ʱ��
  153. std::unique_ptr<FloatMould> m_FluAccTime; //͸���ۼ�ʱ��:����͸�ӹ����У�����X-ray���ۼ�ʱ��
  154. private:
  155. RET_STATUS HWSendWaittimeCMD(char* strCommand, int lengh, int headLengh = 3); //����"ָ������1"ָ��
  156. RET_STATUS HWSendHBCMD(char* strCommand, int lengh, int headLengh = 3); //����"ָ������2"ָ��
  157. RET_STATUS HWSendWaitACKCMD(char* strCommand, int lengh, int headLengh = 3); //����"ָ������3"ָ��
  158. void OnCallBack(); //����ָ��ص�����
  159. bool StartHardwareStatusThread(); //������ѯ�߳�
  160. static void HardwareStatusThread(CGEN_DEV_IDETEC_Almax* pParam); //��ʱ��ѯ״̬��Ϣ
  161. void FireNotify(std::string key, const int context); //���ϲ��ϱ�������Ϣ
  162. void FireNotify(std::string key, const float context); //���ϲ��ϱ���������Ϣ
  163. void FireNotify(std::string key, const std::string context); //���ϲ��ϱ��ַ�������Ϣ
  164. void FireErrorMessage(const bool Act, const int Code, const char* ResInfo = ""); //�ϱ�������Ϣ
  165. void FireWarnMessage(const bool Act, const int Code, const char* ResInfo = ""); //�ϱ��澯��Ϣ
  166. private:
  167. callBackFun m_funV2DynamicCallBackFun{ nullptr };//V2��̬��Ϣ�����ص�
  168. std::thread m_pHardwareStatusThread; //��ѯ�߳̾��
  169. atomic<bool> m_bExpEnable; //�ع�ʹ��
  170. EnSYNMode m_bExpSYN{ EnSYNMode::EXPOSURE_SYNMODE_HARDWARE_SYNBOX }; //�ع�ͬ��:����Ӳ
  171. atomic<bool> m_bSoftExpPermit{ 0 }; //���ع�ȷ��
  172. std::unique_ptr<nsDetail::MSGUnit> m_MSGUnit; //������Ϣ������
  173. std::unique_ptr <IOEventCenter> m_EventCenter; //������Ϣ�ϱ�Center
  174. int m_IPM{ 0 };
  175. int m_IPF{ 0 };
  176. int m_IPL{ 0 };
  177. };
  178. }