using FObjBase.Reflect;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
namespace FLY.Thick.Blowing.IService
{
///
/// 基本吹膜系统
///
public interface IBlowingService : INotifyPropertyChanged
{
#region 分区设定
///
/// 加热通道数
///
int ChannelCnt { get; set; }
///
/// 分区数/加热通道数
///
int BPC { get; set; }
///
/// 人字架总分区数,从1开始数
///
int NBolts { get; }
///
/// 人字架复位时, 探头对应的分区位, 也就是 0° 对应的分区位
///
int OrgBoltNo { get; set; }
///
/// 使用分区表
///
bool IsUsedMap { get; set; }
///
/// 分区表,需要考虑为 null 的情况
///
BoltMapCell[] Map { get; set; }
#endregion
///
/// 正方向是顺时钟;
/// 信号0->信号1 为正方向;
/// 风环加热棒排列方向为 正方向;
/// 默认情况 风环加热棒排列是逆时钟
///
bool IsForwCW { get; set; }
///
/// 测厚仪测量点位置方向:Left, Right (也就是三角形在左还是右)
///
bool IsProbeRight { get; set; }
///
/// 测厚仪类型, 追边 or 扫描
///
BlowingType BType { get; }
///
/// 参数应用
///
void Apply();
///
/// 每次有新数据时候推送。 修改参数,不会推送
///
[Push(typeof(RenZiJiaDataEventArgs))]
event EventHandler DataEvent;
}
public enum BlowingType
{
///
/// 扫描
///
Scan,
///
/// 追边
///
Fix,
///
/// 追边.360°连续旋转
///
Fix360,
}
///
/// 扫描一次,推送
///
///
///
public delegate void RenZiJiaDataEventHandler(object sender, RenZiJiaDataEventArgs e);
///
/// 扫描一次,推送的数据
///
public class RenZiJiaDataEventArgs : EventArgs
{
///
/// 测量数据开始时间
///
public DateTime Time { get; set; }
///
/// 测量数据结束时间
///
public DateTime EndTime { get; set; }
///
/// 旋转方向 是反向
///
public bool IsBackw { get; set; }
///
/// 旋转1周的时间
///
public TimeSpan RPeriod { get; set; }
///
/// 旋转次数
///
public int RCnt { get; set; }
///
/// 复位区号
///
public int OrgBoltNo { get; set; }
///
/// 旋转角度 °
///
public double RAngle { get; set; }
///
/// 膜距离 m
///
public double FilmLength { get; set; }
///
/// 线速度
///
public double FilmVelocity { get; set; }
///
/// 斜率补偿
///
public double K { get; set; } = 1;
///
/// 1幅数据
///
public double[] Thicks { get; set; }
///
/// 分区表
///
public List Boltmap { get; set; }
}
///
/// 分区表
///
public class BoltMapCell
{
///
/// 旧位置
///
public int OldNo { get; set; }
///
/// 新位置
///
public int NewNo { get; set; }
///
/// 全复制
///
///
public BoltMapCell Clone()
{
return new BoltMapCell() { NewNo = NewNo, OldNo = OldNo };
}
}
}