using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.ComponentModel; using FObjBase; using FLY.Thick.Base.IService; using FLY.Thick.Base.OBJ_INTERFACE; using FLY.Thick.Base.Common; namespace FLY.Thick.Base.Client { public class InitParamService : FObj, IInitParamService { IFConn mConn; UInt32 mServerID; public InitParamService() { mServerID = INITPARAM_OBJ_INTERFACE.ID; } #region 属性,成员变量的代理 private int poslen = 8900;//扫描架长 /// <summary> /// 扫描架长 /// </summary> public int PosLength { get { return poslen; } set { poslen = value; NotifyPropertyChanged("PosLength"); } } private int autoOriginInterval = 10;//自动归原点的间隔 /// <summary> /// 自动归原点间距 /// </summary> public int AutoOrgInterval { get { return autoOriginInterval; } set { if (autoOriginInterval != value) { autoOriginInterval = value; NotifyPropertyChanged("AutoOrgInterval"); } } } private int posofgrid = 10; /// <summary> /// 从 flyad7 获取的 /// </summary> public int PosOfGrid { get { return posofgrid; } set { if (posofgrid != value) { posofgrid = value; NotifyPropertyChanged("PosOfGrid"); } } } private int adlag = 0; /// <summary> /// ad 滞后量 ms /// </summary> public int ADLag { get { return adlag; } set { if (adlag != value) { adlag = value; NotifyPropertyChanged("ADLag"); } } } private double _encoder1_mmpp = 0.1; /// <summary> /// 编码器1 mm/pulse /// </summary> public double Encoder1_mmpp { get { return _encoder1_mmpp; } set { if (_encoder1_mmpp != value) { _encoder1_mmpp = value; NotifyPropertyChanged("Encoder1_mmpp"); } } } private double speed1Scale = 1; /// <summary> /// 设置的速度,与 实际速度比例 /// </summary> public double Speed1Scale { get { return speed1Scale; } set { if (speed1Scale != value) { speed1Scale = value; NotifyPropertyChanged("Speed1Scale"); } } } private FilmVSRC filmVSrc = FilmVSRC.ROUND; /// <summary> /// 线速度来源 /// </summary> public FilmVSRC FilmVSrc { get { return filmVSrc; } set { if (filmVSrc != value) { filmVSrc = value; NotifyPropertyChanged("FilmVSrc"); } } } private int filmVThreshold = 5; /// <summary> /// 最小线速度 m/min /// </summary> public int FilmVThreshold { get { return filmVThreshold; } set { if (filmVThreshold != value) { filmVThreshold = value; NotifyPropertyChanged("FilmVThreshold"); } } } private double _encoder2_mmpp = 0.1; /// <summary> /// 编码器2 mm/pulse /// </summary> public double Encoder2_mmpp { get { return _encoder2_mmpp; } set { if (_encoder2_mmpp != value) { _encoder2_mmpp = value; NotifyPropertyChanged("Encoder2_mmpp"); } } } private float _encoder2_comp = 1; /// <summary> /// 编码器2 放大 /// </summary> public float Encoder2_comp { get { return _encoder2_comp; } set { if (_encoder2_comp != value) { _encoder2_comp = value; NotifyPropertyChanged("Encoder2_comp"); } } } private double mmOfR = 314; /// <summary> /// //1圈多少mm /// </summary> public double MmOfR { get { return mmOfR; } set { if (mmOfR != value) { mmOfR = value; NotifyPropertyChanged("MmOfR"); } } } private DATAVALIDSRC dataValidSrc = DATAVALIDSRC.VALID; /// <summary> /// 数据有效源 /// </summary> public DATAVALIDSRC DataValidSrc { get { return dataValidSrc; } set { if (dataValidSrc != value) { dataValidSrc = value; NotifyPropertyChanged("DataValidSrc"); } } } private bool autof1f3 = false; /// <summary> /// 当数据有效状态改变,自动按F1,F3 /// </summary> public bool AutoF1F3 { get { return autof1f3; } set { if (autof1f3 != value) { autof1f3 = value; NotifyPropertyChanged("AutoF1F3"); } } } private int restartdelay = 5; /// <summary> /// 当数据有效状态 无效->有效 ,等待多久重新扫描 ,单位s /// </summary> public int ReStartDelay { get { return restartdelay; } set { if (restartdelay != value) { restartdelay = value; NotifyPropertyChanged("ReStartDelay"); } } } #region 速度 private UInt32 velocity_scan = 8000; /// <summary> /// 扫描时速度 /// </summary> public UInt32 VScan { get { return velocity_scan; } set { if (velocity_scan != value) { velocity_scan = value; NotifyPropertyChanged("VScan"); } } } private UInt32 velocity_jog = 5000; /// <summary> /// 调试时速度,向前走,向后走 /// </summary> public UInt32 VJOG { get { return velocity_jog; } set { if (velocity_jog != value) { velocity_jog = value; NotifyPropertyChanged("VJOG"); } } } private UInt32 velocity_accuracy = 3000; /// <summary> /// 精确速度 Velocity Of Accuracy 如: 机架修正, 样品取样, 机架信息获取 /// </summary> public UInt32 VAccuracy { get { return velocity_accuracy; } set { if (velocity_accuracy != value) { velocity_accuracy = value; NotifyPropertyChanged("VAccuracy"); } } } private UInt32 sv = 500; /// <summary> /// 开始速度 Start Velocity /// </summary> public UInt32 SVelocity { get { return sv; } set { if (sv != value) { sv = value; NotifyPropertyChanged("SVelocity"); } } } private UInt32 atime = 200; /// <summary> /// 加速时间 /// </summary> public UInt32 ATime { get { return atime; } set { if (atime != value) { atime = value; NotifyPropertyChanged("ATime"); } } } private UInt32 dtime = 200; /// <summary> /// 减速时间 /// </summary> public UInt32 DTime { get { return dtime; } set { if (dtime != value) { dtime = value; NotifyPropertyChanged("DTime"); } } } private UInt32 hv1 = 5000; /// <summary> /// 归0速度1 /// </summary> public UInt32 HVelocity1 { get { return hv1; } set { if (hv1 != value) { hv1 = value; NotifyPropertyChanged("HVelocity1"); } } } private UInt32 hv2 = 1000; /// <summary> /// 归0速度2 /// </summary> public UInt32 HVelocity2 { get { return hv2; } set { if (hv2 != value) { hv2 = value; NotifyPropertyChanged("HVelocity2"); } } } #endregion private bool hasProfileSample = false; /// <summary> /// 有按样标定硬件 /// </summary> public bool HasProfileSample { get { return hasProfileSample; } set { if (hasProfileSample != value) { hasProfileSample = value; NotifyPropertyChanged("HasProfileSample"); } } } private bool hashold = false; /// <summary> /// 有小托辊 /// </summary> public bool HasHold { get { return hashold; } set { if (hashold != value) { hashold = value; NotifyPropertyChanged("HasHold"); } } } #endregion #region INotifyPropertyChanged 成员 public event PropertyChangedEventHandler PropertyChanged; protected void NotifyPropertyChanged(string propertyname) { if (PropertyChanged != null) { PropertyChanged.Invoke(this, new PropertyChangedEventArgs(propertyname)); } } #endregion public void Apply() { INITPARAM_OBJ_INTERFACE.Pack_Params p = new INITPARAM_OBJ_INTERFACE.Pack_Params() { poslength = PosLength, auto_org_interval = AutoOrgInterval, adlag = ADLag, encoder1_mmpp = Encoder1_mmpp, speed1scale = Speed1Scale, filmVSrc= FilmVSrc, filmVThreshold = FilmVThreshold, encoder2_mmpp = Encoder2_mmpp, mmOfR = MmOfR, encoder2_comp = Encoder2_comp, data_valid_src = DataValidSrc, autof1f3 = AutoF1F3, restartDelay = ReStartDelay, vscan = VScan, vjog = VJOG, vaccuracy = VAccuracy, svelocity = SVelocity, atime = ATime, dtime = DTime, hvelocity1 = HVelocity1, hvelocity2 = HVelocity2, hasProfileSample = HasProfileSample, hasHold = HasHold }; //获取所有数据,设置推送 CurrObjSys.SetValueEx( mConn, mServerID, ID, INITPARAM_OBJ_INTERFACE.SET_PARAMS, p.ToBytes()); } public override void Dispose() { CurrObjSys.ObjRemove( this, mConn); } public override void ConnectNotify(IFConn from) { mConn = from; if (from.IsConnected) { //获取所有数据,设置推送 CurrObjSys.GetValueEx( mConn, mServerID, ID, BORDERSEARCH_OBJ_INTERFACE.GET_PARAMS); CurrObjSys.SenseConfigEx( mConn, mServerID, ID, 0xffffffff, SENSE_CONFIG.ADD); } } public override void PushGetValue(IFConn from, uint srcid, ushort memid, byte[] infodata) { switch (memid) { case INITPARAM_OBJ_INTERFACE.GET_PARAMS: { INITPARAM_OBJ_INTERFACE.Pack_Params p = new INITPARAM_OBJ_INTERFACE.Pack_Params(); if (!p.TryParse(infodata)) return; PosLength = p.poslength; AutoOrgInterval = p.auto_org_interval; PosOfGrid = p.posOfGrid; ADLag = p.adlag; Encoder1_mmpp = p.encoder1_mmpp; Speed1Scale = p.speed1scale; FilmVSrc = p.filmVSrc; FilmVThreshold = p.filmVThreshold; Encoder2_mmpp = p.encoder2_mmpp; Encoder2_comp = p.encoder2_comp; MmOfR = p.mmOfR; DataValidSrc = p.data_valid_src; AutoF1F3 = p.autof1f3; ReStartDelay = p.restartDelay; VScan = p.vscan; VJOG = p.vjog; VAccuracy = p.vaccuracy; SVelocity = p.svelocity; ATime = p.atime; DTime = p.dtime; HVelocity1 = p.hvelocity1; HVelocity2 = p.hvelocity2; HasProfileSample = p.hasProfileSample; HasHold = p.hasHold; } break; } } public override void PushInfo(IFConn from, uint srcid, ushort infoid, byte[] infodata) { PushGetValue(from, srcid, infoid, infodata); } } }