CTemperature.h 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  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,E5XC = 2, 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. Temperature_Ctltype iCtlType;
  22. CTemperature* pTemperature;
  23. }TEMPERATURE_LST;
  24. public:
  25. // 获取单实例对象
  26. static long GetInstance(string strPort, Temperature_Ctltype iTemperType, CTemperature **temperature);
  27. static string GetErrText(long errid);
  28. //long SetRunStatus(unsigned char rtuAddr, unsigned char iMaxSendNum = 3);
  29. /// <summary>
  30. /// 设置温控器温度
  31. /// </summary>
  32. /// <param name="rtuAddr">站点地址</param>
  33. /// <param name="dTemperature">设置温度值。单位(度)</param>
  34. /// <param name="iMaxSendNum">如果设置失败,最多重复次数</param>
  35. /// <returns></returns>
  36. long SetTemperature(Temperature_Ctltype iTemperType,unsigned char rtuAddr, double dTemperature, unsigned char iMaxSendNum = 3);
  37. /// <summary>
  38. /// 获取温控器当前温度
  39. /// </summary>
  40. /// <param name="rtuAddr">站点地址</param>
  41. /// <param name="pTemperature">获取到的温度值。单位(度)</param>
  42. /// <param name="iMaxSendNum">如果设置失败,最多重复次数</param>
  43. /// <returns></returns>
  44. long GetTemperature(Temperature_Ctltype iTemperType,unsigned char rtuAddr, double &pTemperature, unsigned char iMaxSendNum = 3);
  45. private:
  46. Temperature_Ctltype m_iTemperType; //设备类型
  47. std::string m_strPort = "";
  48. CRS485 *m_ComPort;
  49. bool m_bIsInitSuccess;
  50. //static CTemperature *m_Temperature;
  51. static std::vector<TEMPERATURE_LST> m_vecTemperature;
  52. static std::mutex m_Mutex;
  53. std::mutex m_mutexReadWrite; //正在读写锁
  54. CTemperature();
  55. ~CTemperature();
  56. long Init(string port, Temperature_Ctltype iTemperType); //初始化
  57. void UnInit();//关闭
  58. static CTemperature* GetTemperature(string addrs, Temperature_Ctltype iCtlType);
  59. CTemperature(const CTemperature &temperature);
  60. const CTemperature &operator=(const CTemperature &temperature);
  61. };