CTemperature.h 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. #pragma once
  2. //#pragma warning(disable:4251)
  3. #include <vector>
  4. #include <mutex>
  5. #include"CRS485.h"
  6. #include "CMessageBox.h"
  7. #ifdef TEMPERATURE_EXPORTS
  8. #define Temperature_DLL_API __declspec(dllexport)
  9. #else
  10. #define Temperature_DLL_API //__declspec(dllimport)
  11. #endif
  12. //设备类型
  13. enum Temperature_Ctltype { GLTC = 1, Temperature_Other};
  14. #define TEMPER_BASE_ERROR (MODBUS_BASE_ERROR+10000)
  15. class Temperature_DLL_API CTemperature
  16. {
  17. public:
  18. typedef struct
  19. {
  20. string addrs;
  21. CTemperature* pTemperature;
  22. }TEMPERATURE_LST;
  23. public:
  24. // 获取单实例对象
  25. static long GetInstance(string strPort, Temperature_Ctltype iCtlType, CTemperature **temperature);
  26. static string GetErrText(long errid);
  27. //long SetRunStatus(unsigned char rtuAddr, unsigned char iMaxSendNum = 3);
  28. /// <summary>
  29. /// 设置温控器温度
  30. /// </summary>
  31. /// <param name="rtuAddr">站点地址</param>
  32. /// <param name="dTemperature">设置温度值。单位(度)</param>
  33. /// <param name="iMaxSendNum">如果设置失败,最多重复次数</param>
  34. /// <returns></returns>
  35. long SetTemperature(unsigned char rtuAddr, double dTemperature, unsigned char iMaxSendNum = 3);
  36. /// <summary>
  37. /// 获取温控器当前温度
  38. /// </summary>
  39. /// <param name="rtuAddr">站点地址</param>
  40. /// <param name="pTemperature">获取到的温度值。单位(度)</param>
  41. /// <param name="iMaxSendNum">如果设置失败,最多重复次数</param>
  42. /// <returns></returns>
  43. long GetTemperature(unsigned char rtuAddr, double &pTemperature, unsigned char iMaxSendNum = 3);
  44. private:
  45. Temperature_Ctltype m_iTemperType; //设备类型
  46. std::string m_strPort = "";
  47. CRS485 *m_ComPort;
  48. bool m_bIsInitSuccess;
  49. //static CTemperature *m_Temperature;
  50. static std::vector<TEMPERATURE_LST> m_vecTemperature;
  51. static std::mutex m_Mutex;
  52. std::mutex m_mutexReadWrite; //正在读写锁
  53. CTemperature();
  54. ~CTemperature();
  55. long Init(string port, Temperature_Ctltype iTemperType); //初始化
  56. void UnInit();//关闭
  57. static CTemperature* GetTemperature(string addrs);
  58. CTemperature(const CTemperature &temperature);
  59. const CTemperature &operator=(const CTemperature &temperature);
  60. };