#pragma once #include "BaseClient.h" #pragma pack(1) struct TempAlarm { char m_startFlag; //开始标记 BoolData* isOverLimit; //上限报警 BoolData* isLowerLimit; //下限报警 BoolData* isActiveAlarm; //正偏差报警 BoolData* isInactiveAlarm; //负偏差报警 BoolData* isInputLimit; //超量程报警 BoolData* al1; //AL1状态,0为动作 BoolData* al2; //AL2状态,0为动作 char m_endFlag; //结束标记 TempAlarm() : 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为动作")){ //isOverLimit = false; //isLowerLimit = false; //isActiveAlarm = false; //isInactiveAlarm = false; //isInputLimit = false; //al1 = false; //al2 = false; } }; class TempStat { public: TempStat() : 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; } ~TempStat(){} public: BaseStat baseStat; char m_startFlag; //开始标记 FloatData* measuredValue; //测量值 FloatData* settingValue; //给定值 UcharData* outputValue; //输出值MV IntData* scale; //数值放大倍数 char m_endFlag; //开始标记 TempAlarm alarm; //报警信息 }; #pragma pack() class TempCtrlClient :public TcpClient { public: TempCtrlClient(CommunicationCfg* pconfig); ~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: TempStat m_Stat; };