IBlowingService.cs 4.54 KB
Newer Older
1 2
using FObjBase.Reflect;
using System;
3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;

namespace FLY.Thick.Blowing.IService
{
    /// <summary>
    /// 基本吹膜系统
    /// </summary>
    public interface IBlowingService : INotifyPropertyChanged
    {
        #region 分区设定
        /// <summary>
        /// 加热通道数
        /// </summary>
        int ChannelCnt { get; set; }

        /// <summary>
        /// 分区数/加热通道数
        /// </summary>
        int BPC { get; set; }

        /// <summary>
        /// 人字架总分区数,从1开始数
        /// </summary>
        int NBolts { get; }

        /// <summary>
        /// 人字架复位时, 探头对应的分区位, 也就是 0° 对应的分区位
        /// </summary>
        int OrgBoltNo { get; set; }

        /// <summary>
        /// 使用分区表
        /// </summary>
        bool IsUsedMap { get; set; }
        /// <summary>
41
        /// 分区表,需要考虑为 null 的情况
42
        /// </summary>
43
        BoltMapCell[] Map { get; set; }
44 45
        #endregion

46 47 48 49 50 51 52
        /// <summary>
        /// 正方向是顺时钟;
        /// 信号0->信号1 为正方向;
        /// 风环加热棒排列方向为 正方向;
        /// 默认情况 风环加热棒排列是逆时钟
        /// </summary>
        bool IsForwCW { get; set; }
53 54 55 56 57
        /// <summary>
        /// 测厚仪测量点位置方向:Left, Right (也就是三角形在左还是右)
        /// </summary>
        bool IsProbeRight { get; set; }

58 59 60 61 62
        /// <summary>
        /// 测厚仪类型, 追边 or 扫描
        /// </summary>
        BlowingType BType { get; }

63 64 65 66 67 68 69 70
        /// <summary>
        /// 参数应用
        /// </summary>
        void Apply();

        /// <summary>
        /// 每次有新数据时候推送。 修改参数,不会推送
        /// </summary>
71 72
        [Push(typeof(RenZiJiaDataEventArgs))]
        event EventHandler DataEvent;
73
    }
74 75 76 77 78 79 80 81 82
    public enum BlowingType
    {
        /// <summary>
        /// 扫描
        /// </summary>
        Scan,
        /// <summary>
        /// 追边
        /// </summary>
83 84 85 86 87
        Fix,
        /// <summary>
        /// 追边.360°连续旋转
        /// </summary>
        Fix360,
88
    }
89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189

    /// <summary>
    /// 扫描一次,推送
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    public delegate void RenZiJiaDataEventHandler(object sender, RenZiJiaDataEventArgs e);

    /// <summary>
    /// 扫描一次,推送的数据
    /// </summary>
    public class RenZiJiaDataEventArgs : EventArgs
    {
        /// <summary>
        /// 测量数据开始时间
        /// </summary>
        public DateTime Time { get; set; }

        /// <summary>
        /// 测量数据结束时间
        /// </summary>
        public DateTime EndTime { get; set; }

        /// <summary>
        /// 旋转方向 是反向
        /// </summary>
        public bool IsBackw { get; set; }

        /// <summary>
        /// 旋转1周的时间
        /// </summary>
        public TimeSpan RPeriod { get; set; }

        /// <summary>
        /// 旋转次数
        /// </summary>
        public int RCnt { get; set; }

        /// <summary>
        /// 复位区号
        /// </summary>
        public int OrgBoltNo { get; set; }

        /// <summary>
        /// 旋转角度 °
        /// </summary>
        public double RAngle { get; set; }

        /// <summary>
        /// 膜距离 m
        /// </summary>
        public double FilmLength { get; set; }

        /// <summary>
        /// 线速度
        /// </summary>
        public double FilmVelocity { get; set; }

        /// <summary>
        /// 斜率补偿
        /// </summary>
        public double K { get; set; } = 1;

        /// <summary>
        /// 1幅数据
        /// </summary>
        public double[] Thicks { get; set; }

        /// <summary>
        /// 分区表
        /// </summary>
        public List<BoltMapCell> Boltmap { get; set; }
    }

    /// <summary>
    /// 分区表
    /// </summary>
    public class BoltMapCell
    {
        /// <summary>
        /// 旧位置
        /// </summary>
        public int OldNo { get; set; }
        /// <summary>
        /// 新位置
        /// </summary>

        public int NewNo { get; set; }

        /// <summary>
        /// 全复制
        /// </summary>
        /// <returns></returns>
        public BoltMapCell Clone()
        {
            return new BoltMapCell() { NewNo = NewNo, OldNo = OldNo };
        }
    }


}