using FLY.Thick.Base.Common; using FObjBase.Reflect; using System; using System.ComponentModel; namespace FLY.Thick.Base.IService { /// <summary> /// 膜位置检测; /// 通过辊接近开关,或者编码器2; /// 支持同步; /// </summary> public interface IFilmPositionDetectService : INotifyPropertyChanged { #region 状态 /// <summary> /// 线速度 m/min /// </summary> double FilmVelocity { get; } /// <summary> /// 膜位置, m /// </summary> double FilmPosition { get; } /// <summary> /// 复位标识,从同步服务器发送过来的 /// </summary> int ResetMark { get; } #endregion #region 参数 /// <summary> /// 线速度阀值,低于阀值,速度直接变为0 /// </summary> double FilmVThreshold { get; set; } /// <summary> /// 线速度来源 /// </summary> FilmVSRC FilmVSrc { get; set; } /// <summary> /// 线速度:编码器2 mm/pulse /// </summary> double Encoder2_mmpp { get; set; } /// <summary> /// 线速度:1圈多少mm /// </summary> double MmOfR { get; set; } #endregion /// <summary> /// 设置膜位置为某值 /// </summary> /// <param name="filmPos">极片位置m</param> void Reset(double filmPos); /// <summary> /// 让同步信号输出 1->0 /// </summary> void SyncSysTime(); /// <summary> /// 纵向光纤传感器检测到 0到1 变化 事件 /// 或 /// sysTime同步信号触发 0到1 变化 事件 /// </summary> [Push(typeof(SysTimeFilmPosEventArgs))] event EventHandler SysTimeFilmPosEvent; /// <summary> /// 设置膜位置为某值; 同步服务器调用的 /// </summary> /// <param name="filmPos">极片位置m</param> /// <param name="sysTime">AD盒sysTime</param> /// <param name="resetMark">复位标识</param> void Reset(double filmPos, DateTime sysTime, int resetMark); } /// <summary> /// 从 0 到 1 时极片位置事件 /// </summary> public class SysTimeFilmPosEventArgs : EventArgs { /// <summary> /// sysTime 的同步信号触发 /// </summary> public bool IsSysTimeSync; /// <summary> /// AD盒的SysTime /// </summary> public DateTime SysTime; /// <summary> /// 极片位置单位m, 精度0.000m /// </summary> public double FilmPos; } /// <summary> /// /// </summary> /// <param name="s"></param> /// <param name="e"></param> public delegate void SysTimeFilmPosEventHandler(object s, SysTimeFilmPosEventArgs e); }