using FLY.Thick.Blowing.IService; using FLY.Thick.Blowing.OBJ_INTERFACE; using FObjBase; using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace FLY.Thick.Blowing.Server.OBJProxy { /// /// 吹膜测厚 OBJ 服务代理 /// public class Blowing_OBJProxy: FObj { #region 延时推送 MARKNO const int MARKNO_PUSH_PARAMS = 1; const int MARKNO_PUSH_MAP = 2; #endregion IBlowing mRenZiJia; /// /// /// /// /// public Blowing_OBJProxy(int objsys_idx, UInt32 id, IBlowing renzijia) : base(objsys_idx) { ID = id; mRenZiJia = renzijia; mRenZiJia.PropertyChanged += mRenZiJiaFix_PropertyChanged; mRenZiJia.DataEvent += mRenZiJia_DataEvent; } void mRenZiJia_DataEvent(object sender, RenZiJiaDataEventArgs e) { string json = Newtonsoft.Json.JsonConvert.SerializeObject(e); CurrObjSys.PushObjInfoEx( this, BLOWINGFIX_OBJ_INTERFACE.PUSH_DATA, Misc.Converter.StringToBytes(json)); } void mRenZiJiaFix_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e) { if ( (e.PropertyName == "ChannelCnt") || (e.PropertyName == "BPC") || (e.PropertyName == "OrgBoltNo") ) { FObjBase.PollModule.Current.Poll_JustOnce( new PollModule.PollHandler(delegate () { byte[] buf; GetValue(null, 0, BLOWING_OBJ_INTERFACE.GET_PARAMS, out buf); CurrObjSys.PushObjInfoEx( this, BLOWING_OBJ_INTERFACE.PUSH_PARAMS, buf); }), this, MARKNO_PUSH_PARAMS); } if ( (e.PropertyName == "Map") || (e.PropertyName == "IsUsedMap")) { FObjBase.PollModule.Current.Poll_JustOnce( new PollModule.PollHandler(delegate () { byte[] buf; GetValue(null, 0, BLOWING_OBJ_INTERFACE.GET_MAP, out buf); CurrObjSys.PushObjInfoEx( this, BLOWING_OBJ_INTERFACE.GET_MAP, buf); }), this, MARKNO_PUSH_MAP); } } public override void GetValue(IFConn from, uint srcid, ushort memid, out byte[] infodata) { switch (memid) { case BLOWING_OBJ_INTERFACE.GET_PARAMS: { BLOWING_OBJ_INTERFACE.Pack_Params p = new BLOWING_OBJ_INTERFACE.Pack_Params() { channelcnt = mRenZiJia.ChannelCnt, bpc = mRenZiJia.BPC, orgBolt = mRenZiJia.OrgBoltNo }; string json = JsonConvert.SerializeObject(p); infodata = Misc.Converter.StringToBytes(json); } break; case BLOWING_OBJ_INTERFACE.GET_MAP: { string json = JsonConvert.SerializeObject(new BLOWING_OBJ_INTERFACE.Pack_Map() { IsUsedMap = mRenZiJia.IsUsedMap, Map = mRenZiJia.Map }); infodata = Misc.Converter.StringToBytes(json); } break; default: infodata = null; break; } } public override void SetValue(IFConn from, uint srcid, ushort memid, byte[] infodata) { switch (memid) { case BLOWING_OBJ_INTERFACE.SET_PARAMS: { string json = Misc.Converter.BytesToString(infodata); var p = JsonConvert.DeserializeObject(json); mRenZiJia.ChannelCnt = p.channelcnt; mRenZiJia.BPC = p.bpc; mRenZiJia.OrgBoltNo = p.orgBolt; mRenZiJia.Apply(); } break; case BLOWING_OBJ_INTERFACE.SET_MAP: { string json = Misc.Converter.BytesToString(infodata); var p = Newtonsoft.Json.JsonConvert.DeserializeObject(json); mRenZiJia.IsUsedMap = p.IsUsedMap; mRenZiJia.Map = p.Map.ToList(); mRenZiJia.Apply(); } break; } } } }