using System; using System.Collections.Generic; using System.Linq; using System.Text; using FObjBase; using FLY.Thick.Blowing.OBJ_INTERFACE; using FLY.Thick.Blowing.Server; using FLY.Thick.Blowing.IService; namespace FLY.Thick.Blowing.Server.OBJProxy { public class BlowingFix_OBJProxy : Blowing_OBJProxy { #region 延时推送 MARKNO const int MARKNO_PUSH_PARAMSEXT = 2; const int MARKNO_PUSH_STATUS = 2; const int MARKNO_PUSH_R = 3; const int MARKNO_PUSH_EPC = 4; const int MARKNO_PUSH_EPCSTATE = 5; const int MARKNO_PUSH_SIGNBM = 9; #endregion IBlowingFixService mRenZiJia; public BlowingFix_OBJProxy(int objsys_idx, IBlowingFixService renzijia) :base(objsys_idx, renzijia) { mRenZiJia = renzijia; mRenZiJia.PropertyChanged += mRenZiJiaFix_PropertyChanged; } void mRenZiJiaFix_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e) { if ( (e.PropertyName == "FLRange") ) { FObjBase.PollModule.Current.Poll_JustOnce( new PollModule.PollHandler(delegate() { byte[] buf; GetValue(null, 0, BLOWINGFIX_OBJ_INTERFACE.GET_PARAMSEXT, out buf); CurrObjSys.PushObjInfoEx( this, BLOWINGFIX_OBJ_INTERFACE.PUSH_PARAMSEXT, buf); }), this, MARKNO_PUSH_PARAMSEXT); } else if ( (e.PropertyName == "MaxR") || (e.PropertyName == "MaxRFilmLength")|| (e.PropertyName == "CalState")) { FObjBase.PollModule.Current.Poll_JustOnce( new PollModule.PollHandler(delegate() { byte[] buf; GetValue(null, 0, BLOWINGFIX_OBJ_INTERFACE.GET_R, out buf); CurrObjSys.PushObjInfoEx( this, BLOWINGFIX_OBJ_INTERFACE.PUSH_R, buf); }), this, MARKNO_PUSH_R); } else if ( (e.PropertyName == "EPCType") || (e.PropertyName == "SampleConsume") || (e.PropertyName == "SampleInterval") || (e.PropertyName == "BackEdgeWait") || (e.PropertyName == "IsBtnSelfHold") ) { FObjBase.PollModule.Current.Poll_JustOnce( new PollModule.PollHandler(delegate() { byte[] buf; GetValue(null, 0, BLOWINGFIX_OBJ_INTERFACE.GET_EPC, out buf); CurrObjSys.PushObjInfoEx( this, BLOWINGFIX_OBJ_INTERFACE.PUSH_EPC, buf); }), this, MARKNO_PUSH_EPC); } else if ( (e.PropertyName == "SampleTimer") || (e.PropertyName == "EPCIsRunning") || (e.PropertyName == "SampleAD") ) { FObjBase.PollModule.Current.Poll_JustOnce( new PollModule.PollHandler(delegate() { byte[] buf; GetValue(null, 0, BLOWINGFIX_OBJ_INTERFACE.GET_EPCSTATE, out buf); CurrObjSys.PushObjInfoEx( this, BLOWINGFIX_OBJ_INTERFACE.PUSH_EPCSTATE, buf); }), this, MARKNO_PUSH_EPCSTATE); } } public override void CallFunction(IFConn from, uint srcid,UInt32 magic, ushort funcid, byte[] infodata) { switch (funcid) { case BLOWINGFIX_OBJ_INTERFACE.CALL_CALR: { BLOWINGFIX_OBJ_INTERFACE.Pack_CalR p = new BLOWINGFIX_OBJ_INTERFACE.Pack_CalR(); if (p.TryParse(infodata)) { mRenZiJia.FLRange = p.filmLenRange; mRenZiJia.CalFilmLength(); } } break; case BLOWINGFIX_OBJ_INTERFACE.CALL_EPCSTART: { mRenZiJia.EPCStart(); }break; case BLOWINGFIX_OBJ_INTERFACE.CALL_EPCSTOP: { mRenZiJia.EPCStop(); } break; } } public override void GetValue(IFConn from, uint srcid, ushort memid, out byte[] infodata) { base.GetValue(from, srcid, memid,out infodata); if (infodata != null) return; switch (memid) { case BLOWINGFIX_OBJ_INTERFACE.GET_PARAMSEXT: { BLOWINGFIX_OBJ_INTERFACE.Pack_ParamsExt p = new BLOWINGFIX_OBJ_INTERFACE.Pack_ParamsExt(){ filmLenRange = mRenZiJia.FLRange }; infodata = p.ToBytes(); }break; case BLOWINGFIX_OBJ_INTERFACE.GET_R: { BLOWINGFIX_OBJ_INTERFACE.Pack_Relevency p = new BLOWINGFIX_OBJ_INTERFACE.Pack_Relevency() { max_relevency = mRenZiJia.MaxR, max_filmLength = mRenZiJia.MaxRFilmLength, calstate = mRenZiJia.CalState }; infodata = p.ToBytes(); }break; case BLOWINGFIX_OBJ_INTERFACE.GET_EPC: { IBlowingFixService renzijiafix = mRenZiJia; BLOWINGFIX_OBJ_INTERFACE.Pack_EPC p = new BLOWINGFIX_OBJ_INTERFACE.Pack_EPC() { epctype = renzijiafix.EPCType, sampleconsume = renzijiafix.SampleConsume, sampleinterval = renzijiafix.SampleInterval, backedgewait = renzijiafix.BackEdgeWait, isBtnSelfHold = renzijiafix.IsBtnSelfHold }; infodata = p.ToBytes(); }break; case BLOWINGFIX_OBJ_INTERFACE.GET_EPCSTATE: { IBlowingFixService renzijiafix = mRenZiJia; BLOWINGFIX_OBJ_INTERFACE.Pack_EPCState p = new BLOWINGFIX_OBJ_INTERFACE.Pack_EPCState() { sampletimer = renzijiafix.SampleTimer, isrunning = renzijiafix.EPCIsRunning, samplead = renzijiafix.SampleAD }; infodata = p.ToBytes(); }break; default: infodata = null; break; } } public override void SetValue(IFConn from, uint srcid, ushort memid, byte[] infodata) { base.SetValue(from, srcid, memid, infodata); switch (memid) { case BLOWINGFIX_OBJ_INTERFACE.SET_PARAMSEXT: { BLOWINGFIX_OBJ_INTERFACE.Pack_ParamsExt p = new BLOWINGFIX_OBJ_INTERFACE.Pack_ParamsExt(); if (!p.TryParse(infodata)) break; mRenZiJia.FLRange = p.filmLenRange; mRenZiJia.Apply(); } break; case BLOWINGFIX_OBJ_INTERFACE.SET_EPC: { BLOWINGFIX_OBJ_INTERFACE.Pack_EPC p = new BLOWINGFIX_OBJ_INTERFACE.Pack_EPC(); if (!p.TryParse(infodata)) break; mRenZiJia.EPCType = p.epctype; mRenZiJia.SampleConsume = p.sampleconsume; mRenZiJia.SampleInterval = p.sampleinterval; mRenZiJia.BackEdgeWait = p.backedgewait; mRenZiJia.IsBtnSelfHold = p.isBtnSelfHold; mRenZiJia.Apply(); }break; } } } }