using SKMC.Api.Motion.Model;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace SKMC.Api.Motion.Driver
{
///
/// 运动控制高级功能接口
///
public interface IMotionDriverAdvance
{
///
/// 创建多轴插补坐标
///
/// 插补系编号
/// 关联的电机轴集合
/// 执行结果, 0执行成功, 其他为错误码
int CreateMultiInterpSys(short InterpNo, short[] axisNos);
///
/// 删除多轴插补坐标
///
/// 插补系编号
/// 执行结果, 0执行成功, 其他为错误码
int RemoveMultiInterpSys(short InterpNo);
///
/// 添加多轴插补数据(两轴)
///
/// 插补系编号
/// 轴1的绝对位置集合,需要关联CreateMultiInterpSys的axisNos[0]
/// 轴2的绝对位置集合,需要关联CreateMultiInterpSys的axisNos[1]
/// 基础速度
/// 基础加速度
/// 过渡类型
/// 过渡曲率
///
int AddMultiInterpData(short InterpNo, List axis1Data, List axis2Data,
double speed, double acc, short blendType = 1, double blendRatio = 0.1);
///
/// 清除多轴插补数据
///
/// 插补系编号
///
int ClearMultiInterpData(short InterpNo);
///
/// 清除多轴插补错误/报警
///
/// 插补系编号
///
int ClearMultiInterpError(short InterpNo);
///
/// 开始多轴插补移动
///
/// 插补系编号
///
int StartMultiInterpMove(short InterpNo);
///
/// 等待多轴插补移动到位
///
/// 插补系编号
/// 超时时间(毫秒)
/// 运行异常或超时后的处理
///
int WaitMultiInterpArrival(short InterpNo, int timeout, Action errAction);
///
/// 停止多轴插补移动(到位后需要调用)
///
/// 插补系编号
///
int StopMultiInterpMove(short InterpNo);
}
}