using Misc;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks;
namespace FlyADBase
{
///
/// 客户端AD盒附加的功能
///
public interface IFlyADClientAdv : IFlyADClient
{
///
/// 机架修正
///
CorrectADsHandler CorrectADs { get; set; }
///
/// grid 滤波
///
int GridSmooth { get; set; }
///
/// PosLen / PosOfGrid;
///
int GridLen { get; }
///
/// 脉冲比例 Ratio02(编码器脉冲) / Ratio01(电机脉冲)
///
double Speed1Scale { get; }
///
/// 机架总长
///
int PosLen { get; set; }
///
/// 使用独立的脉冲最大最小值
///
bool HasPosMaxMin { get; set; }
///
/// 最小脉冲,默认是0
///
int PosMin { get; set; }
///
/// 最大脉冲,默认于PosLen 一样
///
int PosMax { get; set; }
///
/// Runto(0), 不同于 Backward
///
void RuntoMin();
///
/// Runto(PosLen), 不同于 Forward
///
void RuntoMax();
///
/// 设置输出
///
///
///
void SetOutputBit(int index, bool is1);
///
/// 从正反缓存区, 获取grid数据
///
/// 方向, 只有 正,反
/// grid 开始位置
/// grid 长度
/// grid 数据
void GetGrid(DIRECTION direction, int grid_start, int grid_len, out int[] dat);
///
/// 从正反缓存区, 获取全部grid数据
///
/// 方向, 只有 正,反
/// grid 数据
void GetGrid(DIRECTION direction, out int[] dat);
///
/// 动作完成
///
bool IsFinish { get; }
///
/// ad滞后修正 单位ms
///
int ADLag { get; set; }
//一共有1.AD数据池(由timegrid提供) 1min
//2.pos数据池(pos推送提供) 1min
//4.当接收的grid事件数据。它有 (direction, grid_start,grid_len, systick )
//systick 就是结束的时间点。 当AD数据池出现了这个时间点
//pos数据池向前找。 pos 在 grid_start*posOfGrid 范围的数据。
//找到开始的systick 后,整合3个数据池的数据。
//5.最后代替 grid 推送出去。
TimeGridAdvHelper mTimeGridAdvHelper { get; }
///
/// 动作指令完成,准备推送 timegridadv 事件
///
bool IsTimeToPushTimeGridAdv { get; }
///
/// 以timegrid 为单位,推送数据
///
event TimeGridAdv2EventHandler TimeGridAdv2Event;
}
///
/// 机架修正
///
///
///
///
public delegate void CorrectADsHandler(Misc.DIRECTION direction, int start_grid, int[] dat);
}