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