using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using FLY.Thick.Base.Common;
using System.ComponentModel;

namespace FLY.Thick.Base.IService
{
    public interface IInitParamService:INotifyPropertyChanged
    {
        /// <summary>
        /// 扫描架长
        /// </summary>
        int PosLength { get; set; }

        bool IsTimeGridAdvEnabled { get; set; }
        int ADLag { get; set; }

        int PosOfGrid { get; }
        /// <summary>
        /// 自动归原点间距,次数
        /// </summary>
        int AutoOrgInterval { get; set; }


        /// <summary>
        /// 编码器1 mm/pulse
        /// </summary>
        double Encoder1_mmpp { get; set; }

        /// <summary>
        /// 设置的速度，与 实际速度比例 Speed1 = VScan*Speed1Scale
        /// </summary>
        double Speed1Scale { get; set; }

        /// <summary>
        /// 线速度来源
        /// </summary>
        FilmVSRC FilmVSrc { get; set; }

        /// <summary>
        /// 最小线速度 m/min
        /// </summary>
        int FilmVThreshold { get; set; }
        /// <summary>
        /// 线速度:编码器2 mm/pulse
        /// </summary>
        double Encoder2_mmpp { get; set; }
        /// <summary>
        /// 编码器2 放大
        /// </summary>
        float Encoder2_comp { get; set; }

        /// <summary>
        /// 线速度:1圈多少mm
        /// </summary>
        double MmOfR { get; set; }



        /// <summary>
        /// 数据有效源
        /// </summary>
        DATAVALIDSRC DataValidSrc { get; set; }



        /// <summary>
        /// 当数据有效状态改变，自动按F1，F3
        /// </summary>
        bool AutoF1F3 { get; set; }

        /// <summary>
        /// 当数据有效状态  无效->有效 ，等待多久重新扫描 ，单位s
        /// </summary>
        int ReStartDelay { get; set; }

        /// <summary>
        /// 有按样标定硬件
        /// </summary>
        bool HasProfileSample { get; set; }

        /// <summary>
        /// 有小托辊
        /// </summary>
        bool HasHold { get; set; }

        #region 速度

        /// <summary>
        /// 扫描时速度 Velocity Of Scan 
        /// </summary>
        UInt32 VScan { get; set; }
        /// <summary>
        /// 调试时速度，向前走，向后走 Velocity Of JOG
        /// </summary>
        UInt32 VJOG { get; set; }
        /// <summary>
        /// 精确速度 Velocity Of Accuracy  如: 机架修正, 样品取样, 机架信息获取
        /// </summary>
        UInt32 VAccuracy { set; get; }
        /// <summary>
        /// 开始速度 Start Velocity
        /// </summary>
        UInt32 SVelocity { set; get; }
        /// <summary>
        /// 加速时间
        /// </summary>
        UInt32 ATime { set; get; }
        /// <summary>
        /// 减速时间
        /// </summary>
        UInt32 DTime { set; get; }
        /// <summary>
        /// 归0速度1
        /// </summary>
        UInt32 HVelocity1 { set; get; }
        /// <summary>
        /// 归0速度2
        /// </summary>
        UInt32 HVelocity2 { set; get; }

        #endregion

        /// <summary>
        /// 数据库保存的月数
        /// </summary>
        int DBKeepMonth { get; set; }

        void Apply();

    }
}
