DIOS.Dev.Generator.V2Adapter.h 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203
  1. #pragma once
  2. // 下列 ifdef 块是创建使从 DLL 导出更简单的
  3. // 宏的标准方法。此 DLL 中的所有文件都是用命令行上定义的 CCOSDEVGENERATORV2ADAPTER_EXPORTS
  4. // 符号编译的。在使用此 DLL 的
  5. // 任何其他项目上不应定义此符号。这样,源文件中包含此文件的任何其他项目都会将
  6. // CCOSDEVGENERATORV2ADAPTER_API 函数视为是从 DLL 导入的,而此 DLL 则将用此宏定义的
  7. // 符号视为是被导出的。
  8. #ifndef CCOSDEVGENERATORV2ADAPTER_EXPORTS
  9. #ifdef _WIN64
  10. #ifdef _DEBUG
  11. #pragma comment(lib, "Ccos.Dev.Gen.V2AdapterX64D.lib")
  12. #else
  13. #pragma comment(lib, "Ccos.Dev.Gen.V2AdapterX64.lib")
  14. #endif
  15. #else
  16. #ifdef _DEBUG
  17. #pragma comment(lib, "Ccos.Dev.Gen.V2AdapterD.lib")
  18. #else
  19. #pragma comment(lib, "Ccos.Dev.Gen.V2Adapter.lib")
  20. #endif
  21. #endif
  22. #endif
  23. #ifdef CCOSDEVGENERATORV2ADAPTER_EXPORTS
  24. #define CCOSDEVGENERATORV2ADAPTER_API __declspec(dllexport)
  25. #define CCOSDEVGENERATORV2ADAPTER_C_API extern "C" __declspec(dllexport)
  26. #else
  27. #define CCOSDEVGENERATORV2ADAPTER_API __declspec(dllimport)
  28. #define CCOSDEVGENERATORV2ADAPTER_C_API extern "C" __declspec(dllimport)
  29. #endif
  30. #include "CCOS.Dev.Generator.Mould.hpp"
  31. #include "DAP.BasicMoulds.hpp"
  32. #include "CCOS.Dev.MSGMould.hpp"
  33. #include "UIObject.h"
  34. namespace CCOS::Dev::Detail::Generator
  35. {
  36. static const int TIMEOUTVALUE = 100;
  37. //using JSONString = std::string;
  38. //namespace DevDAP = CCOS::Dev::Detail::DAP;
  39. //-----------------------------------------------------------------------------
  40. // SDCDevice
  41. //-----------------------------------------------------------------------------
  42. namespace nDev = CCOS::Dev;
  43. namespace DevDAP = CCOS::Dev::Detail::DAP;
  44. class CCOSDEVGENERATORV2ADAPTER_API V2AdapterDevice : public IODeviceDetail, public GeneratorMould,public CcosLock
  45. {
  46. using super = IODeviceDetail;
  47. using superGen = GeneratorMould;
  48. public:
  49. V2AdapterDevice(std::shared_ptr <IOEventCenter> center,UIObject* UIobj);
  50. ~V2AdapterDevice();
  51. virtual std::string GetGUID() const override;
  52. private:
  53. void OnRegister();
  54. void FireNotify(std::string key, std::string context);
  55. std::shared_ptr<DevDAP::DOSEMould> m_DAP;
  56. std::shared_ptr<nsDetail::MSGUnit> m_MSGUnit;
  57. public:
  58. //map<string, map<INT, bool>>* m_pEnableMap;//[key][inc,set,dec]
  59. virtual RET_STATUS IncKV() override;
  60. virtual RET_STATUS DecKV() override;
  61. virtual RET_STATUS SetKV(float value) override;
  62. virtual RET_STATUS IncMA() override;
  63. virtual RET_STATUS DecMA() override;
  64. virtual RET_STATUS SetMA(float value) override;
  65. virtual RET_STATUS IncMS() override;
  66. virtual RET_STATUS DecMS() override;
  67. virtual RET_STATUS SetMS(float value) override;
  68. virtual RET_STATUS IncMAS() override;
  69. virtual RET_STATUS DecMAS() override;
  70. virtual RET_STATUS SetMAS(float value) override;
  71. virtual RET_STATUS SetTechmode(int techmode) override;
  72. virtual RET_STATUS SetFocus(int value) override;
  73. virtual RET_STATUS SetAECDensity(int value) override;
  74. virtual RET_STATUS SetAECField(int value) override;
  75. virtual RET_STATUS SetAECFilm(int value) override;
  76. virtual RET_STATUS SetWS(const std::string value) override;
  77. virtual RET_STATUS SetAPR(const _tAPRArgs& t) override;
  78. virtual RET_STATUS QueryHE(int& value) override;
  79. virtual RET_STATUS QueryPostKV(float& value) override;
  80. virtual RET_STATUS QueryPostMA(float& value) override;
  81. virtual RET_STATUS QueryPostMS(float& value) override;
  82. virtual RET_STATUS QueryPostMAS(float& value) override;
  83. virtual RET_STATUS SetGenSynState(int value) override;
  84. virtual RET_STATUS SetGenState(int value) override;
  85. virtual RET_STATUS SetExpEnable() override;
  86. virtual RET_STATUS SetExpDisable()override;
  87. virtual RET_STATUS Reset()override;
  88. RET_STATUS Clear_DAP();
  89. RET_STATUS GetValue_DAP(float& value);
  90. virtual RET_STATUS SetExpMode(std::string value);
  91. virtual RET_STATUS SetFrameRate(FLOAT frameRate);
  92. RET_STATUS SetModality(std::string value);
  93. virtual RET_STATUS SetFLFMode(std::string value);
  94. virtual RET_STATUS SetEXAMMode(std::string value);
  95. static LRESULT CALLBACK OnCallBack(void *obj, UINT, WPARAM, LPARAM);
  96. LRESULT ONSyncCollimatorParam(WPARAM wParam, LPARAM lParam);
  97. LRESULT ONSyncStatusParam(WPARAM wParam, LPARAM lParam);
  98. LRESULT ONSyncSid(WPARAM wParam, LPARAM lParam);
  99. LRESULT ONSyncParam(WPARAM wParam, LPARAM lParam);
  100. LRESULT CALLBACK ONGenParam(WPARAM wParam, LPARAM lParam);
  101. LRESULT CALLBACK ONGenExp(WPARAM wParam, LPARAM lParam);
  102. LRESULT CALLBACK ONGenError(WPARAM wParam, LPARAM lParam);
  103. LRESULT CALLBACK ONGenWarn(WPARAM wParam, LPARAM lParam);
  104. LRESULT ONGenExpDisable(WPARAM wParam, LPARAM lParam);
  105. LRESULT ONGridStatusParam(WPARAM wParam, LPARAM lParam);
  106. UIObject* m_pUIOBJ;
  107. bool m_bGetDensity;
  108. bool m_bGenConnectState;
  109. };
  110. }
  111. namespace CCOS::Dev::Detail::Generator
  112. {
  113. class CCOSDEVGENERATORV2ADAPTER_API V2AdapterDriver : public DriverMould
  114. {
  115. using super = DriverMould;
  116. public:
  117. V2AdapterDriver();
  118. virtual ~V2AdapterDriver();
  119. public:
  120. virtual bool DriverEntry(std::string CfgFileName);
  121. virtual void Prepare() override;
  122. virtual bool DATA_ACTION Connect() override;
  123. virtual void Disconnect() override;
  124. virtual bool isConnected() const override;
  125. virtual auto CreateDevice(int index)->std::unique_ptr <IODevice> override;
  126. virtual std::string DriverProbe() override;
  127. virtual std::string GetResource() override;
  128. virtual std::string DeviceProbe() override;
  129. virtual bool GetDeviceConfig(std::string& Cfg) override;
  130. virtual bool SetDeviceConfig(std::string Cfg) override;
  131. private:
  132. bool m_bDemoMode;
  133. bool m_bDemoConnected; // 在 DEMO 模式下, 调用过 Connect 吗?
  134. bool m_bGenConnectReal; //表示gen是否真正连接了。
  135. UIObject* m_pUIOBJ;
  136. ResDataObject m_DeviceConfigSend;
  137. ResDataObject m_DeviceConfig;
  138. string strVendorID;
  139. string strProductID;
  140. bool InitConfiguration();
  141. ResDataObject m_ConfigAll; //存储当前的配置,用于修改配置时写回文件
  142. ResDataObject m_Configurations; //存储当前配置中“CONFIGURATION”节点的内容
  143. std::unique_ptr <ResDataObject> m_pAttribute;
  144. std::unique_ptr <ResDataObject> m_pDescription;
  145. bool SaveConfigFile(bool bSendNotify);
  146. bool GetDeviceConfigValue(ResDataObject config, const char* pInnerKey, int nPathID, string& strValue);
  147. bool SetDeviceConfigValue(ResDataObject& config, const char* pInnerKey, int nPathID, const char* szValue);
  148. };
  149. }