示例#1
0
        /// <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");
            }
        }
示例#2
0
        void LogicalAxis_OnMoveRequsted(object sender, MoveByDistanceArgs args)
        {
            var s = sender as LogicalAxis;

            MoveLogicalAxis(s, args);
        }