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 IFlyADClient : IFlyAD
{
///
/// 连接成功
///
bool IsConnected { get; }
///
/// 重连次数
///
int ConnectCnt { get; }
///
/// CRC 校正
///
bool HasCRC { get; set; }
///
/// 连接
///
void Connect();
///
/// 连接 ep
///
///
void Connect(IPEndPoint ep);
///
/// 重连
///
void ReConnect();
///
/// 用于同步, 最后一次 纵向信号 0->1 时,主轴脉冲
///
int LastPos2At01 { get; }
///
/// 当前在同步状态
///
bool IsSync { get; }
///
/// 同步列表,完成后,会删除
///
ObservableCollection SyncOrders { get; }
}
///
/// 客户端AD盒附加的功能
///
public interface IFlyADClientAdv : IFlyADClient
{
///
/// 通过脉冲计算速度,不使用AD盒的输出
///
bool IsCalSpeed { get; set; }
///
/// 机架修正
///
CorrectADsHandler CorrectADs { get; set; }
///
/// grid 滤波
///
int GridSmooth { get; set; }
///
/// 脉冲比例 Ratio02(编码器脉冲) / Ratio01(电机脉冲)
///
double Speed1Scale { get; }
///
/// 机架总长
///
int PosLen { 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);
///
/// 转为 grid 数据
///
///
///
/// 测试功能 ad值滞后
void ToGrid(IEnumerable gridAdvUnits, out int[] dat,int adLag);
///
/// 动作完成
///
bool IsFinish { get; }
#region 滞后处理
///
/// ad滞后修正 单位ms
///
int ADLag { get; set; }
///
/// 以timegrid 为单位,推送数据
///
event TimeGridAdvEventHandler TimeGridAdvEvent;
#endregion
#region runto 推送 istatus 变化
///
/// 添加 GridIStatusEvent 事件;
/// 获取一整幅 grid 对应的 输入口状态 数据
///
///
///
void GridIStatusEventAdd(int istatus_no, GridIStatusEventHander func);
///
/// 删除 GridIStatusEvent 事件
///
///
///
void GridIStatusEventDel(int istatus_no, GridIStatusEventHander func);
#endregion
}
///
/// 机架修正
///
///
///
///
public delegate void CorrectADsHandler(Misc.DIRECTION direction, int start_grid, int[] dat);
}