using System;
using System.ComponentModel;
namespace FlyADBase.Inc
{
///
/// AD盒2021版 , 核心模块
/// 实现AD盒2021版 基本接口
///
public interface IFlyAd2021Core : INotifyPropertyChanged
{
#region 测量速度
bool IsMeasuring { get; }
///
/// 通讯速度 byte/s
///
double CommSpeed { get; }
///
/// 传输速度 单位 pack/s
///
double PackSpeed { get; }
///
/// 开始测量速度
///
void StartMeasure();
///
///结束测量速度
///
void StopMeasure();
#endregion
///
/// 包出错次数
///
int ErrCnt { get; }
///
/// 连接成功;
/// 当命令多次发送失败,IsConnected = false
///
bool IsConnected { get; }
#region 模块运行接口
///
/// 超时判断,长时间收不到数据,会触发,0.5s调用一次
///
void OnPoll_TimeOut();
///
/// 在接收事件中调用;
/// 全部接收事件 及 超时事件也是在这里触发
///
///
void RecMsg(byte[] recBuf);
///
/// 获取 发送队列 第1条msg
///
///
byte[] GetSendMsg();
///
/// 有数据需要发送
///
///
event SendMsgEventHander SendMsgEvent;
///
/// 复位全部状态,通常由于通讯模块检测到连接断开导致的
///
void ResetMsg();
#endregion
#region AD盒 功能
///
/// 数据推送事件
///
event PushDataEventHandler PushDataEvent;
///
/// 运行状态推送事件
///
event PushRunResultEventHandler PushRunResultEvent;
#region IOComm IO指令
[CallBack(typeof(UInt16))]
void GetIn(CallBackHandler asyncDelegate, object asyncContext);
[CallBack(typeof(UInt16))]
void GetOut(CallBackHandler asyncDelegate, object asyncContext);
[CallBack(typeof(Int32))]
void GetEnc1(CallBackHandler asyncDelegate, object asyncContext);
[CallBack(typeof(Int32))]
void GetEnc2(CallBackHandler asyncDelegate, object asyncContext);
[CallBack(typeof(GetEncAll_Reponse))]
void GetEncAll(CallBackHandler asyncDelegate, object asyncContext);
void SetOutPorts(UInt16 mask, UInt16 value, CallBackHandler asyncDelegate, object asyncContext);
#endregion
#region RunComm 运行指令 SetRunParam
void SetRunParam_V(UInt32 velocity, CallBackHandler asyncDelegate, object asyncContext);
void SetRunParam_SV(UInt32 sv, CallBackHandler asyncDelegate, object asyncContext);
void SetRunParam_AccTime(UInt32 accTime, CallBackHandler asyncDelegate, object asyncContext);
void SetRunParam_DecTime(UInt32 decTime, CallBackHandler asyncDelegate, object asyncContext);
void SetRunParam_HSpd1(UInt32 homespd1, CallBackHandler asyncDelegate, object asyncContext);
void SetRunParam_HSpd2(UInt32 homespd2, CallBackHandler asyncDelegate, object asyncContext);
#endregion
#region RunComm 运行指令 GetRunParam
void GetRunParam_V(CallBackHandler asyncDelegate, object asyncContext);
void GetRunParam_SV(CallBackHandler asyncDelegate, object asyncContext);
void GetRunParam_AccTime(CallBackHandler asyncDelegate, object asyncContext);
void GetRunParam_DecTime(CallBackHandler asyncDelegate, object asyncContext);
void GetRunParam_HSpd1(CallBackHandler asyncDelegate, object asyncContext);
void GetRunParam_HSpd2(CallBackHandler asyncDelegate, object asyncContext);
#endregion
#region RunComm 运行指令
[CallBack(typeof(GetRunResult_Reponse))]
void GetRunResult(CallBackHandler asyncDelegate, object asyncContext);
void Forw(Int32 serial, CallBackHandler asyncDelegate, object asyncContext);
void Backw(Int32 serial, CallBackHandler asyncDelegate, object asyncContext);
void Org(Int32 serial, CallBackHandler asyncDelegate, object asyncContext);
void RunTo(Int32 serial, int targetPos, CallBackHandler asyncDelegate, object asyncContext);
void Stop(CallBackHandler asyncDelegate, object asyncContext);
void EStop(CallBackHandler asyncDelegate, object asyncContext);
#endregion
#region 同步运行指令
void SyncRun_SetHShift(int hShift, CallBackHandler asyncDelegate, object asyncContext);
void SyncRun_SetVShift(int vOShift, CallBackHandler asyncDelegate, object asyncContext);
void SyncRun_Start(CallBackHandler asyncDelegate, object asyncContext);
void SyncRun_Stop(CallBackHandler asyncDelegate, object asyncContext);
void SyncRun_Clear(CallBackHandler asyncDelegate, object asyncContext);
///
/// 同步扫描至;
/// D+0xE0+开始主轴位置+结束主轴位置+结束横向脉冲位置(逻辑位置)+脉冲开关(1B)+命令识标号(4B)
///
///
///
///
///
///
void SyncRun_RunAtLC(int pos2_begin, int pos2_end, int pos1lc, UInt32 serial, CallBackHandler asyncDelegate, object asyncContext);
///
/// 位于队列头时运行,归零;
/// D+0xE1+命令识标号(4B)
///
///
void SyncRun_Origin(UInt32 serial, CallBackHandler asyncDelegate, object asyncContext);
///
/// 位于队列头时运行,以速度运行至物理位置;
/// D+0xE2+横向脉冲位置(4B:int32,物理位置)+速度(4B:int32)+脉冲开关(1B)+命令识标号(4B)
///
///
///
///
///
void SyncRun_RunTo(int pos1, UInt32 velocity, UInt32 serial, CallBackHandler asyncDelegate, object asyncContext);
///
/// 位于队列头时运行,以速度运行至逻辑位置;
/// D+0xE3+横向脉冲位置(4B:int32,逻辑位置)+速度(4B:int32)+脉冲开关(1B)+命令识标号(4B)
///
///
///
///
///
void SyncRun_RunToLC(int pos1lc, UInt32 velocity, UInt32 serial, CallBackHandler asyncDelegate, object asyncContext);
///
/// 获取队列长度
///
///
///
void SyncRun_GetListCount(CallBackHandler asyncDelegate, object asyncContext);
#endregion
#region SysParamComm 系统参数指令
///
/// 获取系统当前Tick
///
[CallBack(typeof(UInt32))]
void GetSysTick(CallBackHandler asyncDelegate, object asyncContext);
///
/// 初始化系统信息区
///
///
///
[CallBack(typeof(bool))]
void InitArea(CallBackHandler asyncDelegate, object asyncContext);
///
/// 输入系统授权码
///
///
///
///
[CallBack(typeof(AREA_ERR))]
void CheckAccessCode(byte[] access, CallBackHandler asyncDelegate, object asyncContext);
///
/// 获取系统授权信息
///
///
///
[CallBack(typeof(GetAccess_Reponse))]
void GetAccess(CallBackHandler asyncDelegate, object asyncContext);
///
/// 系统运行时间+1
///
///
///
void AddAccess(CallBackHandler asyncDelegate, object asyncContext);
#endregion
#region GetSysParam 读运行参数
[CallBack(typeof(MOTORTYPE))]
void GetSysParam_MotorType(CallBackHandler asyncDelegate, object asyncContext);
[CallBack(typeof(UInt16))]
void GetSysParam_Ratio01(CallBackHandler asyncDelegate, object asyncContext);
[CallBack(typeof(UInt16))]
void GetSysParam_Ratio02(CallBackHandler asyncDelegate, object asyncContext);
[CallBack(typeof(Int16))]
void GetSysParam_Zero(CallBackHandler asyncDelegate, object asyncContext);
[CallBack(typeof(UInt32))]
void GetSysParam_Jog(CallBackHandler asyncDelegate, object asyncContext);
#endregion
#region SetSysParam 设置运行参数
void SetSysParam_MotorType(MOTORTYPE motorType, CallBackHandler asyncDelegate, object asyncContext);
void SetSysParam_Ratio01(UInt16 ratio01, CallBackHandler asyncDelegate, object asyncContext);
void SetSysParam_Ratio02(UInt16 ratio02, CallBackHandler asyncDelegate, object asyncContext);
void SetSysParam_Zero(Int16 zero, CallBackHandler asyncDelegate, object asyncContext);
void SetSysParam_Jog(UInt32 jog, CallBackHandler asyncDelegate, object asyncContext);
#endregion
#endregion
}
public class PushDataEventArgs : EventArgs
{
public byte SysTick { get; set; }
public UInt16 AD { get; set; }
public UInt16? ENC1 { get; set; }
public UInt16? ENC2 { get; set; }
public UInt16? In { get; set; }
public UInt16? InChange { get; set; }
public UInt16? Out { get; set; }
public PushDataEventArgs()
{
}
}
public delegate void PushDataEventHandler(object sender, PushDataEventArgs e);
public class PushRunResultEventArgs : EventArgs
{
public byte SysTick { get; set; }
///
/// 运行序号
///
public UInt32 Serial { get; set; }
///
/// 运行状态
///
public DRIVE_MAN_STATUS Status { get; set; }
}
public delegate void PushRunResultEventHandler(object sender, PushRunResultEventArgs e);
///
/// 异常不回复
///
///
///
public delegate void CallBackHandler(object asyncContext, object retData);
public class CallBackAttribute : Attribute
{
public Type RetType;
public CallBackAttribute(Type type)
{
RetType = type;
}
}
///
/// 有数据需要发送
///
///
public delegate void SendMsgEventHander(object sender);
public class GetEncAll_Reponse
{
public int pos1;
public int pos2;
}
public class GetRunResult_Reponse
{
public DRIVE_MAN_STATUS result;
public UInt32 serial;
}
public class GetAccess_Reponse
{
public AREA_STATUS status;
public AREA_ERR ret;
public byte[] code = new byte[6];
public UInt16 surplus;
public byte[] access = new byte[8];
}
}