CTemperature.h 2.0 KB

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