#pragma once #include "BaseClient.h" struct TempAlarm { bool isOverLimit; //上限报警 bool isLowerLimit; //下限报警 bool isActiveAlarm; //正偏差报警 bool isInactiveAlarm; //负偏差报警 bool isInputLimit; //超量程报警 bool al1; //AL1状态,0为动作 bool al2; //AL2状态,0为动作 TempAlarm() { isOverLimit = false; isLowerLimit = false; isActiveAlarm = false; isInactiveAlarm = false; isInputLimit = false; al1 = false; al2 = false; } }; class TempStat { public: TempStat() { measuredValue = 0; settingValue = 0; outputValue = 0; scale = 0; } ~TempStat() {} public: BaseStat baseStat; float measuredValue; //测量值 float settingValue; //给定值 unsigned char outputValue; //输出值MV TempAlarm alarm; //报警信息 int scale; //数值放大倍数 }; #pragma pack(1) struct TempAlarmParam { char m_startFlag; //开始标记 BoolData* isOverLimit; //上限报警 BoolData* isLowerLimit; //下限报警 BoolData* isActiveAlarm; //正偏差报警 BoolData* isInactiveAlarm; //负偏差报警 BoolData* isInputLimit; //超量程报警 BoolData* al1; //AL1状态,0为动作 BoolData* al2; //AL2状态,0为动作 char m_endFlag; //结束标记 TempAlarmParam() : isOverLimit(new BoolData("isOverLimit", u8"上限报警")) , isLowerLimit(new BoolData("isLowerLimit", u8"下限报警")) , isActiveAlarm(new BoolData("isActiveAlarm", u8"正偏差报警")) , isInactiveAlarm(new BoolData("isInactiveAlarm", u8"负偏差报警")) , isInputLimit(new BoolData("isInputLimit", u8"超量程报警")) , al1(new BoolData("al1", u8"AL1状态,0为动作")) , al2(new BoolData("al2", u8"AL2状态,0为动作")){ } }; class TempStatParam { public: TempStatParam() : measuredValue(new FloatData("measuredValue", u8"测量值")) , settingValue(new FloatData("settingValue", u8"给定值")) , outputValue(new UcharData("outputValue", u8"输出值MV")) , scale(new IntData("scale", u8"数值放大倍数")){ //measuredValue = 0; //settingValue = 0; //outputValue = 0; //scale = 0; } ~TempStatParam(){} public: BaseStat baseStat; char m_startFlag; //开始标记 FloatData* measuredValue; //测量值 FloatData* settingValue; //给定值 UcharData* outputValue; //输出值MV IntData* scale; //数值放大倍数 char m_endFlag; //开始标记 TempAlarmParam alarm; //报警信息 }; #pragma pack() class TempCtrlClient :public TcpClient { public: TempCtrlClient(void* pconfig = nullptr); ~TempCtrlClient(); //void SetTargeValue(float value); void GetStat(TempStat& stat); private: //void InitCommand(); //void static ProcTempInfo(void* pobject, Command* pcommand); //void static ProcSetTemp(void* pobject, Command* pcommand); private: TempStatParam m_Stat; };