using System; using System.Collections.Generic; using System.Linq; using System.Text; using FObjBase; using FLY.FeedbackRenZiJia.OBJ_INTERFACE; using FLY.Thick.Base.IService; 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 IFeedbackHeat data; public FeedbackHeat_OBJProxy(int objsys_idx, IFeedbackHeat data):base(objsys_idx) { ID = OBJ_INTERFACE_ID.FEEDBACK_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") { 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: { infodata = new FEEDBACK_OBJ_INTERFACE.Pack_Params() { delay = data.Delay, hasCheck = data.HasCheck, step = data.Step, HasCheckFilmVelocity = data.HasCheckFilmVelocity }.ToBytes(); }break; case FEEDBACK_OBJ_INTERFACE.GET_STATE: { infodata = new FEEDBACK_OBJ_INTERFACE.Pack_Status() { channelcnt = data.ChannelCnt, nbolts = data.NBolts, isConnected = data.IsConnectedWithPLC, lastChangedTime = data.LastChangedTime }.ToBytes(); }break; case FEEDBACK_OBJ_INTERFACE.GET_ERROR: { infodata = new FEEDBACK_OBJ_INTERFACE.Pack_Error() { hasFan = data.HasFan, hasEletric = data.HasElectricity, checkno = data.CheckNo, bads = data.Bads }.ToBytes(); } break; case FEEDBACK_OBJ_INTERFACE.GET_CHECKENABLE: { infodata = new FEEDBACK_OBJ_INTERFACE.Pack_Enable { enable = data.CheckEnable }.ToBytes(); }break; case FEEDBACK_OBJ_INTERFACE.GET_ENABLE: { infodata = new FEEDBACK_OBJ_INTERFACE.Pack_Enable { enable = data.IsAuto }.ToBytes(); } break; case FEEDBACK_OBJ_INTERFACE.GET_PRODUCTNAME: { infodata = new FEEDBACK_OBJ_INTERFACE.Pack_String { data = data.HeatsProductName }.ToBytes(); }break; case FEEDBACK_OBJ_INTERFACE.GET_UNDOIDX: { infodata = new FEEDBACK_OBJ_INTERFACE.Pack_Undo { undo_idx = data.UndoIdx }.ToBytes(); } break; } } public override void SetValue(IFConn from, uint srcid, ushort memid, byte[] infodata) { switch (memid) { case FEEDBACK_OBJ_INTERFACE.SET_PARAMS: { FEEDBACK_OBJ_INTERFACE.Pack_Params p = new FEEDBACK_OBJ_INTERFACE.Pack_Params(); if (!p.TryParse(infodata)) return; 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: { FEEDBACK_OBJ_INTERFACE.Pack_Enable p = new FEEDBACK_OBJ_INTERFACE.Pack_Enable(); if (!p.TryParse(infodata)) return; data.CheckEnable = p.enable; }break; case FEEDBACK_OBJ_INTERFACE.SET_ENABLE: { FEEDBACK_OBJ_INTERFACE.Pack_Enable p = new FEEDBACK_OBJ_INTERFACE.Pack_Enable(); if (!p.TryParse(infodata)) return; data.IsAuto = p.enable; } break; } } public override void CallFunction(IFConn from, uint srcid, uint magic, ushort funcid, byte[] infodata) { switch (funcid) { case FEEDBACK_OBJ_INTERFACE.CALL_SAVEHEATS: { FEEDBACK_OBJ_INTERFACE.Pack_String p = new FEEDBACK_OBJ_INTERFACE.Pack_String(); if (!p.TryParse(infodata)) return; data.SaveHeats(p.data); }break; case FEEDBACK_OBJ_INTERFACE.CALL_LOADHEATS: { FEEDBACK_OBJ_INTERFACE.Pack_String p = new FEEDBACK_OBJ_INTERFACE.Pack_String(); if (!p.TryParse(infodata)) return; data.LoadHeatsFile(p.data); }break; case FEEDBACK_OBJ_INTERFACE.CALL_DEL: { FEEDBACK_OBJ_INTERFACE.Pack_String p = new FEEDBACK_OBJ_INTERFACE.Pack_String(); if (!p.TryParse(infodata)) return; data.DelHeatsFile(p.data); }break; case FEEDBACK_OBJ_INTERFACE.CALL_GETLIST: { data.GetHeatsFileList( new AsyncCBHandler(delegate(object AsyncState, object retdata) { ConnContext context = (ConnContext)AsyncState; FEEDBACK_OBJ_INTERFACE.Pack_StringList p = new FEEDBACK_OBJ_INTERFACE.Pack_StringList(); p.list = (List<string>)retdata; CurrObjSys.PushCallFunctionEx( context.from, context.srcid, ID, context.magic, FEEDBACK_OBJ_INTERFACE.CALL_GETLIST, p.ToBytes()); }), new ConnContext(from, srcid, magic)); } break; case FEEDBACK_OBJ_INTERFACE.CALL_UNDO: { data.Undo(); }break; } } } }