using System; using System.Collections.Generic; using System.Linq; using System.Text; using FObjBase; using FLY.Thick.Base.OBJ_INTERFACE; using FLY.Thick.Base.Common; using FLY.Thick.Base.IService; using FLY.Thick.Base.Server; namespace FLY.Thick.Base.Server.OBJProxy { public class ScanCorr_OBJProxy : FObj { #region 延时推送 MARKNO const int MARKNO_PUSH_GROUP_PARAMS = 1; const int MARKNO_PUSH_GROUP0_FORW = 2; const int MARKNO_PUSH_GROUP0_BACKW = 3; const int MARKNO_PUSH_GROUP1_FORW = 4; const int MARKNO_PUSH_GROUP1_BACKW = 5; const int MARKNO_PUSH_PROGRESS = 6; const int MARKNO_PUSH_START_PARAMS = 7; const int MARKNO_PUSH_ENABLE = 8; const int MARKNO_PUSH_VALIDRANGE = 9; #endregion GM_ScanCorr mScanCorr; public ScanCorr_OBJProxy(int objsys_idx, GM_ScanCorr scancorr) : base(objsys_idx) { ID = SCANCORR_OBJ_INTERFACE.ID; mScanCorr = scancorr; mScanCorr.PropertyChanged += new System.ComponentModel.PropertyChangedEventHandler(mScanCorr_PropertyChanged); mScanCorr.Group0.PropertyChanged += new System.ComponentModel.PropertyChangedEventHandler(Group0_PropertyChanged); mScanCorr.Group1.PropertyChanged += new System.ComponentModel.PropertyChangedEventHandler(Group1_PropertyChanged); } void Group0_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e) { if ((e.PropertyName == "AvgAD") || (e.PropertyName == "DataReady")) { FObjBase.PollModule.Current.Poll_JustOnce( new PollModule.PollHandler(delegate() { byte[] buf; GetValue(null, 0, SCANCORR_OBJ_INTERFACE.GET_GROUP_PARAMS, out buf); CurrObjSys.PushObjInfoEx( this, SCANCORR_OBJ_INTERFACE.PUSH_GROUP_PARAMS, buf); }), this, MARKNO_PUSH_GROUP_PARAMS); } else if (e.PropertyName == "ForwDatas") { FObjBase.PollModule.Current.Poll_JustOnce( new PollModule.PollHandler(delegate() { byte[] buf; GetValue(null, 0, SCANCORR_OBJ_INTERFACE.GET_GROUP0_FORW, out buf); CurrObjSys.PushObjInfoEx( this, SCANCORR_OBJ_INTERFACE.PUSH_GROUP0_FORW, buf); }), this, MARKNO_PUSH_GROUP0_FORW); } else if (e.PropertyName == "BackwDatas") { FObjBase.PollModule.Current.Poll_JustOnce( new PollModule.PollHandler(delegate() { byte[] buf; GetValue(null, 0, SCANCORR_OBJ_INTERFACE.GET_GROUP0_BACKW, out buf); CurrObjSys.PushObjInfoEx( this, SCANCORR_OBJ_INTERFACE.PUSH_GROUP0_BACKW, buf); }), this, MARKNO_PUSH_GROUP0_BACKW); } } void Group1_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e) { if ((e.PropertyName == "AvgAD") || (e.PropertyName == "DataReady")) { FObjBase.PollModule.Current.Poll_JustOnce( new PollModule.PollHandler(delegate() { byte[] buf; GetValue(null, 0, SCANCORR_OBJ_INTERFACE.GET_GROUP_PARAMS, out buf); CurrObjSys.PushObjInfoEx( this, SCANCORR_OBJ_INTERFACE.PUSH_GROUP_PARAMS, buf); }), this, MARKNO_PUSH_GROUP_PARAMS); } else if (e.PropertyName == "ForwDatas") { FObjBase.PollModule.Current.Poll_JustOnce( new PollModule.PollHandler(delegate() { byte[] buf; GetValue(null, 0, SCANCORR_OBJ_INTERFACE.GET_GROUP1_FORW, out buf); CurrObjSys.PushObjInfoEx( this, SCANCORR_OBJ_INTERFACE.PUSH_GROUP1_FORW, buf); }), this, MARKNO_PUSH_GROUP1_FORW); } else if (e.PropertyName == "BackwDatas") { FObjBase.PollModule.Current.Poll_JustOnce( new PollModule.PollHandler(delegate() { byte[] buf; GetValue(null, 0, SCANCORR_OBJ_INTERFACE.GET_GROUP1_BACKW, out buf); CurrObjSys.PushObjInfoEx( this, SCANCORR_OBJ_INTERFACE.PUSH_GROUP1_BACKW, buf); }), this, MARKNO_PUSH_GROUP1_BACKW); } } void mScanCorr_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e) { if ((e.PropertyName == "Progress") || (e.PropertyName == "Ing")) { FObjBase.PollModule.Current.Poll_JustOnce( new PollModule.PollHandler(delegate() { byte[] buf; GetValue(null, 0, SCANCORR_OBJ_INTERFACE.GET_PROGRESS, out buf); CurrObjSys.PushObjInfoEx( this, SCANCORR_OBJ_INTERFACE.PUSH_PROGRESS, buf); }), this, MARKNO_PUSH_PROGRESS); } else if ((e.PropertyName == "ScanTimer") || (e.PropertyName == "SmoothFactor")|| (e.PropertyName == "PosLen")||(e.PropertyName == "PosOfGrid")) { FObjBase.PollModule.Current.Poll_JustOnce( new PollModule.PollHandler(delegate() { byte[] buf; GetValue(null, 0, SCANCORR_OBJ_INTERFACE.GET_START_PARAMS, out buf); CurrObjSys.PushObjInfoEx( this, SCANCORR_OBJ_INTERFACE.PUSH_START_PARAMS, buf); }), this, MARKNO_PUSH_START_PARAMS); } else if (e.PropertyName == "Enable") { FObjBase.PollModule.Current.Poll_JustOnce( new PollModule.PollHandler(delegate() { byte[] buf; GetValue(null, 0, SCANCORR_OBJ_INTERFACE.GET_ENABLE, out buf); CurrObjSys.PushObjInfoEx( this, SCANCORR_OBJ_INTERFACE.PUSH_ENABLE, buf); }), this, MARKNO_PUSH_ENABLE); } else if ((e.PropertyName == "ValidBegin")|| (e.PropertyName == "ValidEnd")) { FObjBase.PollModule.Current.Poll_JustOnce( new PollModule.PollHandler(delegate() { byte[] buf; GetValue(null, 0, SCANCORR_OBJ_INTERFACE.GET_VALIDRANGE, out buf); CurrObjSys.PushObjInfoEx( this, SCANCORR_OBJ_INTERFACE.PUSH_VALIDRANGE, buf); }), this, MARKNO_PUSH_VALIDRANGE); } } public override void CallFunction(IFConn from, uint srcid,UInt32 magic, ushort funcid, byte[] infodata) { switch (funcid) { case SCANCORR_OBJ_INTERFACE.CALL_START: { SCANCORR_OBJ_INTERFACE.Pack_CallStart pack = new SCANCORR_OBJ_INTERFACE.Pack_CallStart(); pack.TryParse(infodata); mScanCorr.SmoothFactor = pack.smoothfactor; mScanCorr.ScanTimer = pack.scantimer; mScanCorr.Start(pack.groupindex); } break; case SCANCORR_OBJ_INTERFACE.CALL_CLEAR: { if (infodata.Length < 4) break; int idx = BitConverter.ToInt32(infodata, 0); mScanCorr.Clear(idx); } break; case SCANCORR_OBJ_INTERFACE.CALL_SMOOTH: { SCANCORR_OBJ_INTERFACE.Pack_CallStart pack = new SCANCORR_OBJ_INTERFACE.Pack_CallStart(); pack.TryParse(infodata); mScanCorr.SmoothFactor = pack.smoothfactor; mScanCorr.Smooth(pack.groupindex); } break; default: infodata = null; break; } } public override void GetValue(IFConn from, uint srcid, ushort memid, out byte[] infodata) { switch (memid) { case SCANCORR_OBJ_INTERFACE.GET_PROGRESS: { SCANCORR_OBJ_INTERFACE.Pack_GetState p = new SCANCORR_OBJ_INTERFACE.Pack_GetState(); p.progress = mScanCorr.Progress; p.ing = mScanCorr.Ing; infodata = p.ToBytes(); } break; case SCANCORR_OBJ_INTERFACE.GET_ENABLE: { SCANCORR_OBJ_INTERFACE.Pack_Enable p = new SCANCORR_OBJ_INTERFACE.Pack_Enable(); p.enable = mScanCorr.Enable; infodata = p.ToBytes(); } break; case SCANCORR_OBJ_INTERFACE.GET_START_PARAMS: { SCANCORR_OBJ_INTERFACE.Pack_StartParams p = new SCANCORR_OBJ_INTERFACE.Pack_StartParams(); p.scantimer = mScanCorr.ScanTimer; p.smoothfactor = mScanCorr.SmoothFactor; p.posofgrid = mScanCorr.PosOfGrid; p.poslen = mScanCorr.PosLen; infodata = p.ToBytes(); } break; case SCANCORR_OBJ_INTERFACE.GET_GROUP_PARAMS: { SCANCORR_OBJ_INTERFACE.Pack_GroupParams p = new SCANCORR_OBJ_INTERFACE.Pack_GroupParams(); p.avgad0 = mScanCorr.Group0.AvgAD; p.avgad1 = mScanCorr.Group1.AvgAD; infodata = p.ToBytes(); }break; case SCANCORR_OBJ_INTERFACE.GET_GROUP0_FORW: { SCANCORR_OBJ_INTERFACE.Pack_Data p = new SCANCORR_OBJ_INTERFACE.Pack_Data(); p.data = mScanCorr.Group0.ForwDatas; infodata = p.ToBytes(); }break; case SCANCORR_OBJ_INTERFACE.GET_GROUP0_BACKW: { SCANCORR_OBJ_INTERFACE.Pack_Data p = new SCANCORR_OBJ_INTERFACE.Pack_Data(); p.data = mScanCorr.Group0.BackwDatas; infodata = p.ToBytes(); } break; case SCANCORR_OBJ_INTERFACE.GET_GROUP1_FORW: { SCANCORR_OBJ_INTERFACE.Pack_Data p = new SCANCORR_OBJ_INTERFACE.Pack_Data(); p.data = mScanCorr.Group1.ForwDatas; infodata = p.ToBytes(); } break; case SCANCORR_OBJ_INTERFACE.GET_GROUP1_BACKW: { SCANCORR_OBJ_INTERFACE.Pack_Data p = new SCANCORR_OBJ_INTERFACE.Pack_Data(); p.data = mScanCorr.Group1.BackwDatas; infodata = p.ToBytes(); } break; case SCANCORR_OBJ_INTERFACE.GET_VALIDRANGE: { SCANCORR_OBJ_INTERFACE.Pack_ValidRange p = new SCANCORR_OBJ_INTERFACE.Pack_ValidRange(); p.begin = mScanCorr.ValidBegin; p.end = mScanCorr.ValidEnd; infodata = p.ToBytes(); }break; default: infodata = null; break; } } public override void SetValue(IFConn from, uint srcid, ushort memid, byte[] infodata) { switch (memid) { case SCANCORR_OBJ_INTERFACE.SET_ENABLE: { SCANCORR_OBJ_INTERFACE.Pack_Enable p = new SCANCORR_OBJ_INTERFACE.Pack_Enable(); if (!p.TryParse(infodata)) break; mScanCorr.Enable = p.enable; mScanCorr.Apply(); } break; case SCANCORR_OBJ_INTERFACE.SET_VALIDRANGE: { SCANCORR_OBJ_INTERFACE.Pack_ValidRange p = new SCANCORR_OBJ_INTERFACE.Pack_ValidRange(); if (!p.TryParse(infodata)) break; mScanCorr.ValidBegin = p.begin; mScanCorr.ValidEnd = p.end; mScanCorr.Apply(); } break; } } } }