/// <summary> /// Move the specified axis with specified args /// </summary> /// <param name="Axis"></param> /// <param name="Args"></param> public async void MoveLogicalAxis(LogicalAxis Axis, MoveByDistanceArgs Args) { if (GetSystemState() != SystemState.BUSY) { SetSystemState(SystemState.BUSY); this.LastMessage = new MessageItem(MessageType.Normal, "{0} Move with argument {1}{2} ...", Axis, Args, Axis.PhysicalAxisInst.UnitHelper.Unit); var t = new Task <bool>(() => { return(Axis.PhysicalAxisInst.Move(Args.Mode, Args.Speed, Args.Distance)); }); t.Start(); bool ret = await t; if (ret == false) { this.LastMessage = new MessageItem(MessageType.Error, "{0} Unable to move, {1}", Axis, Axis.PhysicalAxisInst.LastError); PostErrorMessageToFrontEnd(this.LastMessage.Message); } else { this.LastMessage = new MessageItem(MessageType.Normal, "{0} Move is completed, the final position is {1}/{2}{3}", new object[] { Axis, Axis.PhysicalAxisInst.AbsPosition, Axis.PhysicalAxisInst.UnitHelper.AbsPosition, Axis.PhysicalAxisInst.UnitHelper.Unit }); } SetSystemState(SystemState.IDLE); } else { this.LastMessage = new MessageItem(MessageType.Warning, "System is busy"); } }
void LogicalAxis_OnMoveRequsted(object sender, MoveByDistanceArgs args) { var s = sender as LogicalAxis; MoveLogicalAxis(s, args); }