using FObjBase; using FObjBase.Reflect; using Misc; using System; using System.ComponentModel; namespace FLY.Thick.Base.IService { /// /// /// public interface IBorderSearchService : INotifyPropertyChanged { #region 参数 /// /// 启动与否 /// bool Enable { get; set; } /// /// 单一材料,找空气与膜均值的 中间位置 /// bool IsOneMaterial { get; set; } /// /// 边界拐点检测,找到的边界更加精确 /// bool IsBreakDetect { get; set; } /// /// 有限范围 /// RangeStruct Valid { get; set; } /// /// 手动设置温修AD值 /// bool TempADBySet { set; get; } /// /// 温修AD值 /// int TempAD { get; set; } /// /// AD超过了范围, 就认为开始找到边界 /// int TempRange { get; set; } /// /// 温修范围是温修的百分比 /// bool IsTempRangeByPercent { get; set; } /// /// 温修范围百分比 /// double TempRangePercent { get; set; } /// /// 有滤波器,只有非空的连续N个pos以上,才开始算边界开始 /// int N { get; set; } /// /// 探头直径,单位脉冲, 膜宽 = 边界范围 - 探头直径 /// int SensorWidth { get; set; } /// /// 找到边界后,边界 + 探头半径 + N2个脉冲。 这个是数据有效的开始 /// int N2 { get; set; } /// /// 记录两个边界以后扫描,以它们再外扩N3个脉冲,作为扫描范围 /// int N3 { get; set; } #endregion #region 状态 /// /// 反向边界 /// Range Border_Backw { get; } /// /// 正向边界 /// Range Border_Forw { get; } /// /// 边界 /// RangeStruct Border { get; } /// /// 当前膜宽,测量出来的,单位是 脉冲 /// int Width { get; } /// /// 膜中间位置 单位 脉冲 /// int Mid { get; } /// /// 数据更新时间 /// DateTime UpdateTime { get; } /// /// 产品宽度,设置值 单位:脉冲 /// 当膜超过范围(没有经过阀值),就使用它,猜边界在哪 /// int ProductWidth { get; } #endregion /// /// 获取混合后的横向数据;没有把横向留白剔除;只把纵向留白剔除。 /// 数据单位 mm /// /// /// [Call(typeof(BorderSearchGetViewReponse))] void GetView(AsyncCBHandler asyncDelegate, object asyncContext); /// /// 应该 及 保存 /// void Apply(); } public class BorderSearchGetViewReponse { public DIRECTION direction; public int posOfGrid; public int gridBegin; public int[] dat; public Range border; } }