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]; } }