using System; using System.Collections.Generic; using System.Linq; using System.Text; using FObjBase; using FLY.FeedbackRenZiJia.OBJ_INTERFACE; using FLY.FeedbackRenZiJia.IService; namespace FLY.FeedbackRenZiJia.Server.OBJProxy { public class FeedbackHeat_OBJProxy:FObj { #region markno public const UInt16 MARKNO_PUSH_PARAMS = 1;//参数 public const UInt16 MARKNO_PUSH_STATE = 2; public const UInt16 MARKNO_PUSH_THICKS = 4; public const UInt16 MARKNO_PUSH_HEATS = 5; public const UInt16 MARKNO_PUSH_OFFSETS = 6; public const UInt16 MARKNO_PUSH_PREHEATS = 7; public const UInt16 MARKNO_PUSH_ERROR = 8; public const UInt16 MARKNO_PUSH_CHECKENABLE = 9; public const UInt16 MARKNO_PUSH_BM = 10; #endregion IFeedbackHeatService data; public FeedbackHeat_OBJProxy(int objsys_idx, UInt32 id, IFeedbackHeatService data):base(objsys_idx) { ID = id; this.data = data; this.data.PropertyChanged += new System.ComponentModel.PropertyChangedEventHandler(data_PropertyChanged); } void data_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e) { if ( (e.PropertyName == "Delay") || (e.PropertyName == "HasCheck")|| (e.PropertyName == "Step") ) { FObjBase.PollModule.Current.Poll_JustOnce( new PollModule.PollHandler(delegate () { byte[] buf; GetValue(null, 0, FEEDBACK_OBJ_INTERFACE.GET_PARAMS, out buf); FObjBase.FObjSys.Current.PushObjInfoEx( this, FEEDBACK_OBJ_INTERFACE.PUSH_PARAMS, buf); }), this, MARKNO_PUSH_PARAMS); } else if ( (e.PropertyName == "ChannelCnt") || (e.PropertyName == "NBolts") || (e.PropertyName == "LastChangedTime")|| (e.PropertyName == "IsConnectedWithPLC") ) { FObjBase.PollModule.Current.Poll_JustOnce( new PollModule.PollHandler(delegate () { byte[] buf; GetValue(null, 0, FEEDBACK_OBJ_INTERFACE.GET_STATE, out buf); FObjBase.FObjSys.Current.PushObjInfoEx( this, FEEDBACK_OBJ_INTERFACE.PUSH_STATE, buf); }), this, MARKNO_PUSH_STATE); } else if ((e.PropertyName == "Bads") || (e.PropertyName == "HasFan") || (e.PropertyName == "HasElectricity") || (e.PropertyName == "CheckNo") || (e.PropertyName == "ErrNo")) { FObjBase.PollModule.Current.Poll_JustOnce( new PollModule.PollHandler(delegate () { byte[] buf; GetValue(null, 0, FEEDBACK_OBJ_INTERFACE.GET_ERROR, out buf); FObjBase.FObjSys.Current.PushObjInfoEx( this, FEEDBACK_OBJ_INTERFACE.PUSH_ERROR, buf); }), this, MARKNO_PUSH_ERROR); } else if (e.PropertyName == "CheckEnable") { byte[] buf; GetValue(null, 0, FEEDBACK_OBJ_INTERFACE.GET_CHECKENABLE, out buf); FObjBase.FObjSys.Current.PushObjInfoEx( this, FEEDBACK_OBJ_INTERFACE.PUSH_CHECKENABLE, buf); } else if (e.PropertyName == "IsAuto") { byte[] buf; GetValue(null, 0, FEEDBACK_OBJ_INTERFACE.GET_ENABLE, out buf); FObjBase.FObjSys.Current.PushObjInfoEx( this, FEEDBACK_OBJ_INTERFACE.PUSH_ENABLE, buf); } else if (e.PropertyName == "HeatsProductName") { byte[] buf; GetValue(null, 0, FEEDBACK_OBJ_INTERFACE.GET_PRODUCTNAME, out buf); FObjBase.FObjSys.Current.PushObjInfoEx( this, FEEDBACK_OBJ_INTERFACE.PUSH_PRODUCTNAME, buf); } else if ((e.PropertyName == "UndoIdx") || (e.PropertyName == "IsInUndo") || (e.PropertyName == "UndoTime")) { byte[] buf; GetValue(null, 0, FEEDBACK_OBJ_INTERFACE.GET_UNDOIDX, out buf); FObjBase.FObjSys.Current.PushObjInfoEx( this, FEEDBACK_OBJ_INTERFACE.PUSH_UNDOIDX, buf); } } public override void GetValue(IFConn from, uint srcid, ushort memid, out byte[] infodata) { infodata = null; switch (memid) { case FEEDBACK_OBJ_INTERFACE.GET_PARAMS: { var p = new FEEDBACK_OBJ_INTERFACE.Pack_Params() { delay = data.Delay, hasCheck = data.HasCheck, step = data.Step, HasCheckFilmVelocity = data.HasCheckFilmVelocity }; string json = Newtonsoft.Json.JsonConvert.SerializeObject(p); infodata = Misc.Converter.StringToBytes(json); } break; case FEEDBACK_OBJ_INTERFACE.GET_STATE: { var p = new FEEDBACK_OBJ_INTERFACE.Pack_Status() { channelcnt = data.ChannelCnt, nbolts = data.NBolts, isConnected = data.IsConnectedWithPLC, lastChangedTime = data.LastChangedTime }; string json = Newtonsoft.Json.JsonConvert.SerializeObject(p); infodata = Misc.Converter.StringToBytes(json); } break; case FEEDBACK_OBJ_INTERFACE.GET_ERROR: { var p = new FEEDBACK_OBJ_INTERFACE.Pack_Error() { hasFan = data.HasFan, hasEletric = data.HasElectricity, checkno = data.CheckNo, bads = data.Bads }; string json = Newtonsoft.Json.JsonConvert.SerializeObject(p); infodata = Misc.Converter.StringToBytes(json); } break; case FEEDBACK_OBJ_INTERFACE.GET_CHECKENABLE: { string json = Newtonsoft.Json.JsonConvert.SerializeObject(data.CheckEnable); infodata = Misc.Converter.StringToBytes(json); } break; case FEEDBACK_OBJ_INTERFACE.GET_ENABLE: { string json = Newtonsoft.Json.JsonConvert.SerializeObject(data.IsAuto); infodata = Misc.Converter.StringToBytes(json); } break; case FEEDBACK_OBJ_INTERFACE.GET_PRODUCTNAME: { string json = Newtonsoft.Json.JsonConvert.SerializeObject(data.HeatsProductName); infodata = Misc.Converter.StringToBytes(json); }break; case FEEDBACK_OBJ_INTERFACE.GET_UNDOIDX: { var p = new FEEDBACK_OBJ_INTERFACE.Pack_Undo { undoIdx = data.UndoIdx, isInUndo = data.IsInUndo, undoTime = data.UndoTime }; string json = Newtonsoft.Json.JsonConvert.SerializeObject(p); infodata = Misc.Converter.StringToBytes(json); } break; } } public override void SetValue(IFConn from, uint srcid, ushort memid, byte[] infodata) { switch (memid) { case FEEDBACK_OBJ_INTERFACE.SET_PARAMS: { string json = Misc.Converter.BytesToString(infodata); var p = Newtonsoft.Json.JsonConvert.DeserializeObject<FEEDBACK_OBJ_INTERFACE.Pack_Params>(json); data.Step = p.step; data.Delay = p.delay; data.HasCheck = p.hasCheck; data.HasCheckFilmVelocity = p.HasCheckFilmVelocity; data.Apply(); }break; case FEEDBACK_OBJ_INTERFACE.SET_CHECKENABLE: { string json = Misc.Converter.BytesToString(infodata); var p = Newtonsoft.Json.JsonConvert.DeserializeObject<bool>(json); data.SetCheckEnable(p); }break; case FEEDBACK_OBJ_INTERFACE.SET_ENABLE: { string json = Misc.Converter.BytesToString(infodata); var p = Newtonsoft.Json.JsonConvert.DeserializeObject<bool>(json); data.SetEnable(p); } break; } } public override void CallFunction(IFConn from, uint srcid, uint magic, ushort funcid, byte[] infodata) { switch (funcid) { case FEEDBACK_OBJ_INTERFACE.CALL_SAVEHEATS: { string json = Misc.Converter.BytesToString(infodata); var p = Newtonsoft.Json.JsonConvert.DeserializeObject<string>(json); data.SaveHeats(p); }break; case FEEDBACK_OBJ_INTERFACE.CALL_LOADHEATS: { string json = Misc.Converter.BytesToString(infodata); var p = Newtonsoft.Json.JsonConvert.DeserializeObject<string>(json); data.LoadHeatsFile(p); }break; case FEEDBACK_OBJ_INTERFACE.CALL_DEL: { string json = Misc.Converter.BytesToString(infodata); var p = Newtonsoft.Json.JsonConvert.DeserializeObject<string>(json); data.DelHeatsFile(p); }break; case FEEDBACK_OBJ_INTERFACE.CALL_GETLIST: { data.GetHeatsFileList( new AsyncCBHandler(delegate(object AsyncState, object retdata) { ConnContext context = (ConnContext)AsyncState; string json = Newtonsoft.Json.JsonConvert.SerializeObject(retdata); CurrObjSys.PushCallFunctionEx( context.from, context.srcid, ID, context.magic, FEEDBACK_OBJ_INTERFACE.CALL_GETLIST, Misc.Converter.StringToBytes(json)); }), new ConnContext(from, srcid, magic)); } break; case FEEDBACK_OBJ_INTERFACE.CALL_UNDO: { data.Undo(); }break; } } } }