TemperatureMould.hpp 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252
  1. #pragma once
  2. #include <memory>
  3. #include "ResDataObject.h"
  4. #include "CCOS.Dev.IODevice.hpp"
  5. #include "CCOS.Dev.MouldDefine.hpp"
  6. namespace CCOS::Dev::Detail
  7. {
  8. #pragma region DeviceTemperatureMould
  9. class DeviceTemperatureMould : public FloatMouldWithWarn
  10. {
  11. typedef enum ZSKK_Templerature_state
  12. {
  13. ZSKK_TEM_STATE_TOO_LOW = 0,
  14. ZSKK_TEM_STATE_LOW,
  15. ZSKK_TEM_STAE_NORMAL,
  16. ZSKK_TEM_STATE_HIGH,
  17. ZSKK_TEM_STATE_TOO_HIGH
  18. }ZSKK_TEMPERATURE_STATE;
  19. float m_CurrentValue;
  20. //ResDataObject m_Cache;
  21. std::shared_ptr <CCOS::Dev::IOEventCenter> m_EventCenter;
  22. std::string m_Key;
  23. public:
  24. using super = FloatMouldWithWarn;
  25. DeviceTemperatureMould(const char* strkey, float initialvalue, float min, float WarnMin,
  26. float WarnMax, float CalibWarnMin, float CalibWarnMax, float max, float accuracy,
  27. std::shared_ptr <CCOS::Dev::IOEventCenter> EventCenter)
  28. : super(strkey, initialvalue, min, WarnMin, WarnMax, CalibWarnMin, CalibWarnMax, max, accuracy)
  29. {
  30. m_Key = strkey;
  31. m_EventCenter = EventCenter;
  32. m_CurrentValue = initialvalue;
  33. m_WarningMax = WarnMax;
  34. m_WarningMin = WarnMin;
  35. m_CalibWarningMax = CalibWarnMax;
  36. m_CalibWarningMin = CalibWarnMin;
  37. m_ErrorMax = max;
  38. m_ErrorMin = min;
  39. }
  40. ~DeviceTemperatureMould() {}
  41. std::string GetDescription()
  42. {
  43. ResDataObject temp, result;
  44. temp.add(ValKey::UPPERLIMIT, m_LimitMax);
  45. temp.add(ValKey::LOWERLIMIT, m_LimitMin);
  46. temp.add(ValKey::WARNUPPERLIMIT, m_WarningMax);
  47. temp.add(ValKey::WARNLOWERLIMIT, m_WarningMin);
  48. temp.add(ValKey::ACCURACY, m_Accuracy);
  49. temp.add(ValKey::UNIT, m_Key.c_str());
  50. result.add(Key.c_str(), temp);
  51. return result.encode();
  52. }
  53. RET_STATUS JSGetCurrentTemperatureValue(std::string & out)
  54. {
  55. char szFDinfo[MAX_STRING] = { 0 };
  56. sprintf_s(szFDinfo, "%f", m_CurrentValue);
  57. out = szFDinfo;
  58. return RET_STATUS::RET_SUCCEED;
  59. }
  60. RET_STATUS JSGetTemperatureWarningMax(std::string & out)
  61. {
  62. char szFDinfo[MAX_STRING] = { 0 };
  63. sprintf_s(szFDinfo, "%f", m_WarningMax);
  64. out = szFDinfo;
  65. return RET_STATUS::RET_SUCCEED;
  66. }
  67. RET_STATUS JSGetTemperatureWarningMin(std::string & out)
  68. {
  69. char szFDinfo[MAX_STRING] = { 0 };
  70. sprintf_s(szFDinfo, "%f", m_WarningMin);
  71. out = szFDinfo;
  72. return RET_STATUS::RET_SUCCEED;
  73. }
  74. RET_STATUS JSGetTemperatureCalibWarningMax(std::string & out)
  75. {
  76. char szFDinfo[MAX_STRING] = { 0 };
  77. sprintf_s(szFDinfo, "%f", m_CalibWarningMax);
  78. out = szFDinfo;
  79. return RET_STATUS::RET_SUCCEED;
  80. }
  81. RET_STATUS JSGetTemperatureCalibWarningMin(std::string & out)
  82. {
  83. char szFDinfo[MAX_STRING] = { 0 };
  84. sprintf_s(szFDinfo, "%f", m_CalibWarningMin);
  85. out = szFDinfo;
  86. return RET_STATUS::RET_SUCCEED;
  87. }
  88. RET_STATUS JSGetTemperatureErrorMax(std::string & out)
  89. {
  90. char szFDinfo[MAX_STRING] = { 0 };
  91. sprintf_s(szFDinfo, "%f", m_ErrorMax);
  92. out = szFDinfo;
  93. return RET_STATUS::RET_SUCCEED;
  94. }
  95. RET_STATUS JSGetTemperatureErrorMin(std::string & out)
  96. {
  97. char szFDinfo[MAX_STRING] = { 0 };
  98. sprintf_s(szFDinfo, "%f", m_ErrorMin);
  99. out = szFDinfo;
  100. return RET_STATUS::RET_SUCCEED;
  101. }
  102. RET_STATUS SetTemperatureWarningMax(string strValue)
  103. {
  104. float temp = stof(strValue);
  105. if (m_WarningMax == temp)
  106. {
  107. return RET_STATUS::RET_SUCCEED;
  108. }
  109. m_WarningMax = temp;
  110. char szFDinfo[MAX_STRING] = { 0 };
  111. sprintf_s(szFDinfo, "%f", m_WarningMax);
  112. m_EventCenter->OnNotify((int)ATTRACTION_SET, "TempUpperLimit", szFDinfo);
  113. return RET_STATUS::RET_SUCCEED;
  114. }
  115. RET_STATUS SetTemperatureWarningMin(string strValue)
  116. {
  117. float temp = stof(strValue);
  118. if (m_WarningMin == temp)
  119. {
  120. return RET_STATUS::RET_SUCCEED;
  121. }
  122. m_WarningMin = temp;
  123. char szFDinfo[MAX_STRING] = { 0 };
  124. sprintf_s(szFDinfo, "%f", m_WarningMin);
  125. m_EventCenter->OnNotify((int)ATTRACTION_SET, "TempLowerLimit", szFDinfo);
  126. return RET_STATUS::RET_SUCCEED;
  127. }
  128. RET_STATUS SetTemperatureCalibWarningMax(string strValue)
  129. {
  130. float temp = stof(strValue);
  131. if (m_CalibWarningMax == temp)
  132. {
  133. return RET_STATUS::RET_SUCCEED;
  134. }
  135. m_CalibWarningMax = temp;
  136. char szFDinfo[MAX_STRING] = { 0 };
  137. sprintf_s(szFDinfo, "%f", m_CalibWarningMax);
  138. m_EventCenter->OnNotify((int)ATTRACTION_SET, "Temperature_CalibUpWarn", szFDinfo);
  139. return RET_STATUS::RET_SUCCEED;
  140. }
  141. RET_STATUS SetTemperatureCalibWarningMin(string strValue)
  142. {
  143. float temp = stof(strValue);
  144. if (m_CalibWarningMin == temp)
  145. {
  146. return RET_STATUS::RET_SUCCEED;
  147. }
  148. m_CalibWarningMin = temp;
  149. char szFDinfo[MAX_STRING] = { 0 };
  150. sprintf_s(szFDinfo, "%f", m_CalibWarningMin);
  151. m_EventCenter->OnNotify((int)ATTRACTION_SET, "Temperature_CalibLowWarn", szFDinfo);
  152. return RET_STATUS::RET_SUCCEED;
  153. }
  154. RET_STATUS SetTemperatureErrorMax(string strValue)
  155. {
  156. float temp = stof(strValue);
  157. if (m_ErrorMax == temp)
  158. {
  159. return RET_STATUS::RET_SUCCEED;
  160. }
  161. m_ErrorMax = temp;
  162. char szFDinfo[MAX_STRING] = { 0 };
  163. sprintf_s(szFDinfo, "%f", m_ErrorMax);
  164. m_EventCenter->OnNotify((int)ATTRACTION_SET, "TempMaxLimit", szFDinfo);
  165. return RET_STATUS::RET_SUCCEED;
  166. }
  167. RET_STATUS SetTemperatureErrorMin(string strValue)
  168. {
  169. float temp = stof(strValue);
  170. if (m_ErrorMin == temp)
  171. {
  172. return RET_STATUS::RET_SUCCEED;
  173. }
  174. m_ErrorMin = temp;
  175. char szFDinfo[MAX_STRING] = { 0 };
  176. sprintf_s(szFDinfo, "%f", m_ErrorMin);
  177. m_EventCenter->OnNotify((int)ATTRACTION_SET, "TempMinLimit", szFDinfo);
  178. return RET_STATUS::RET_SUCCEED;
  179. }
  180. bool SetTemperature(float nValue, int & nState)
  181. {
  182. if (nValue != m_CurrentValue)
  183. {
  184. m_CurrentValue = nValue;
  185. if (m_CurrentValue > m_LimitMax)
  186. {
  187. nState = ZSKK_TEM_STATE_TOO_HIGH;
  188. }
  189. else if (m_CurrentValue <= m_LimitMax && m_CurrentValue > m_WarningMax)
  190. {
  191. nState = ZSKK_TEM_STATE_HIGH;
  192. }
  193. else if (m_CurrentValue <= m_WarningMax && m_CurrentValue >= m_WarningMin)
  194. {
  195. nState = ZSKK_TEM_STAE_NORMAL;
  196. }
  197. else if (m_CurrentValue < m_WarningMin && m_CurrentValue >= m_LimitMin)
  198. {
  199. nState = ZSKK_TEM_STATE_LOW;
  200. }
  201. else if (m_CurrentValue < m_LimitMin)
  202. {
  203. nState = ZSKK_TEM_STATE_TOO_LOW;
  204. }
  205. char szFDinfo[MAX_STRING] = { 0 };
  206. sprintf_s(szFDinfo, "%f", nValue);
  207. m_EventCenter->OnNotify((int)ATTRACTION_SET,"Temperature_Value", szFDinfo);
  208. }
  209. return true;
  210. }
  211. };
  212. #pragma endregion DeviceTemperatureMould
  213. }