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;
}
}
}
}