#pragma once //#pragma warning(disable:4251) #include #include #include"CRS485.h" #ifdef TEMPERATURE_EXPORTS #define Temperature_DLL_API __declspec(dllexport) #else #define Temperature_DLL_API //__declspec(dllimport) #endif //设备类型 enum Temperature_Ctltype { GLTC = 1, Temperature_Other}; #define TEMPER_BASE_ERROR (MODBUS_BASE_ERROR+10000) class Temperature_DLL_API CTemperature { public: typedef struct { string addrs; CTemperature* pTemperature; }TEMPERATURE_LST; public: // 获取单实例对象 static long GetInstance(string strPort, Temperature_Ctltype iCtlType, CTemperature **temperature); static string GetErrText(long errid); //long SetRunStatus(unsigned char rtuAddr, unsigned char iMaxSendNum = 3); /// /// 设置温控器温度 /// /// 站点地址 /// 设置温度值。单位(度) /// 如果设置失败,最多重复次数 /// long SetTemperature(unsigned char rtuAddr, double dTemperature, unsigned char iMaxSendNum = 3); /// /// 获取温控器当前温度 /// /// 站点地址 /// 获取到的温度值。单位(度) /// 如果设置失败,最多重复次数 /// long GetTemperature(unsigned char rtuAddr, double &pTemperature, unsigned char iMaxSendNum = 3); private: Temperature_Ctltype m_iTemperType; //设备类型 CRS485 *m_ComPort; bool m_bIsInitSuccess; //static CTemperature *m_Temperature; static std::vector m_vecTemperature; static std::mutex m_Mutex; std::mutex m_mutexReadWrite; //正在读写锁 CTemperature(); ~CTemperature(); long Init(string port, Temperature_Ctltype iTemperType); //初始化 void UnInit();//关闭 static CTemperature* GetTemperature(string addrs); CTemperature(const CTemperature &temperature); const CTemperature &operator=(const CTemperature &temperature); };