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;
}
}