IFlyADClientAdv.cs 5.14 KB
Newer Older
1 2
using Misc;
using System;
3 4 5 6 7 8 9 10 11 12
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks;

namespace FlyADBase
{
    /// <summary>
13
    /// 客户端AD盒
14
    /// </summary>
15
    public interface IFlyADClient : IFlyAD 
16 17 18 19 20
    {
        /// <summary>
        /// 连接成功
        /// </summary>
        bool IsConnected { get; }
21

22 23 24 25 26 27
        /// <summary>
        /// 重连次数
        /// </summary>
        int ConnectCnt { get; }

        /// <summary>
28
        /// CRC 校正
29
        /// </summary>
30
        bool HasCRC { get; set; }
31 32

        /// <summary>
33
        /// 连接
34
        /// </summary>
35
        void Connect();
36 37

        /// <summary>
38
        /// 连接 ep
39
        /// </summary>
40 41 42 43 44 45 46
        /// <param name="ep"></param>
        void Connect(IPEndPoint ep);

        /// <summary>
        /// 重连
        /// </summary>
        void ReConnect();
47

48 49 50 51 52 53 54 55 56 57
        /// <summary>
        /// 已经从AD盒获取全部当前数据
        /// </summary>
        bool IsReady { get; }

        /// <summary>
        ///  通过判断systick,判断AD盒是否发生重启;
        ///  BeResetTime为上一次被复位时间
        /// </summary>
        DateTime BeResetTime { get; }
58 59

        /// <summary>
60
        /// 用于同步, 最后一次 纵向信号 0->1 时,主轴脉冲
61
        /// </summary>
62
        int LastPos2At01 { get; }
63

64

65 66 67 68
        /// <summary>
        /// 当前在同步状态
        /// </summary>
        bool IsSync { get; }
69

70 71 72 73
        /// <summary>
        /// 同步列表,完成后,会删除
        /// </summary>
        ObservableCollection<SyncOrder> SyncOrders { get; }
74 75

        
76
    }
77

78 79 80 81 82
    /// <summary>
    /// 客户端AD盒附加的功能
    /// </summary>
    public interface IFlyADClientAdv : IFlyADClient
    {
83

84
        /// <summary>
85
        /// 通过脉冲计算速度,不使用AD盒的输出
86
        /// </summary>
87 88 89 90 91
        bool IsCalSpeed { get; set; }
        /// <summary>
        /// 机架修正
        /// </summary>
        CorrectADsHandler CorrectADs { get; set; }
92 93

        /// <summary>
94
        /// grid 滤波
95
        /// </summary>
96
        int GridSmooth { get; set; }
97 98

        /// <summary>
99
        /// 脉冲比例 Ratio02(编码器脉冲) / Ratio01(电机脉冲)
100
        /// </summary>
101
        double Speed1Scale { get; }
102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125

        /// <summary>
        /// 机架总长
        /// </summary>
        int PosLen { get; set; }

        /// <summary>
        /// Runto(0), 不同于 Backward
        /// </summary>
        void RuntoMin();
        /// <summary>
        /// Runto(PosLen), 不同于 Forward
        /// </summary>
        void RuntoMax();



        /// <summary>
        /// 设置输出
        /// </summary>
        /// <param name="index"></param>
        /// <param name="is1"></param>
        void SetOutputBit(int index, bool is1);

126 127 128 129 130 131 132 133
        /// <summary>
        /// 从正反缓存区, 获取grid数据
        /// </summary>
        /// <param name="direction">方向, 只有 正,反</param>
        /// <param name="grid_start">grid 开始位置</param>
        /// <param name="grid_len">grid 长度</param>
        /// <param name="dat">grid 数据</param>
        void GetGrid(DIRECTION direction, int grid_start, int grid_len, out int[] dat);
潘栩锋's avatar
潘栩锋 committed
134

135 136 137 138 139 140 141
        /// <summary>
        /// 从正反缓存区, 获取全部grid数据
        /// </summary>
        /// <param name="direction">方向, 只有 正,反</param>
        /// <param name="dat">grid 数据</param>
        void GetGrid(DIRECTION direction, out int[] dat);

潘栩锋's avatar
潘栩锋 committed
142

143 144 145 146 147
        /// <summary>
        /// 转为 grid 数据
        /// </summary>
        /// <param name="gridAdvUnits"></param>
        /// <param name="dat"></param>
潘栩锋's avatar
潘栩锋 committed
148 149
        /// <param name="adLag">测试功能 ad值滞后</param>
        void ToGrid(IEnumerable<GridAdvUnit> gridAdvUnits, out int[] dat,int adLag);
潘栩锋's avatar
潘栩锋 committed
150

151 152 153 154 155
        /// <summary>
        /// 动作完成
        /// </summary>
        bool IsFinish { get; }

156 157 158 159 160 161 162 163 164 165 166 167 168
        #region 滞后处理
        /// <summary>
        /// ad滞后修正  单位ms
        /// </summary>
        int ADLag { get; set; }
        /// <summary>
        /// 以timegrid 为单位,推送数据
        /// </summary>
        event TimeGridAdvEventHandler TimeGridAdvEvent;
        #endregion

        #region runto 推送 istatus 变化
        /// <summary>
169
        /// 添加 GridIStatusEvent 事件;
170 171 172 173 174 175
        /// 获取一整幅 grid 对应的 输入口状态 数据
        /// </summary>
        /// <param name="istatus_no"></param>
        /// <param name="func"></param>
        void GridIStatusEventAdd(int istatus_no, GridIStatusEventHander func);
        /// <summary>
176
        /// 删除 GridIStatusEvent 事件
177
        /// </summary>
178 179 180
        /// <param name="istatus_no"></param>
        /// <param name="func"></param>
        void GridIStatusEventDel(int istatus_no, GridIStatusEventHander func);
181
        #endregion
182

183
    }
184 185 186 187 188 189 190 191

    /// <summary>
    /// 机架修正
    /// </summary>
    /// <param name="direction"></param>
    /// <param name="start_grid"></param>
    /// <param name="dat"></param>
    public delegate void CorrectADsHandler(Misc.DIRECTION direction, int start_grid, int[] dat);
192
}