Beispiel #1
0
            public TimeSpan AnalyzeCommand(GrblCommand cmd, bool compute, GrblConf conf = null)
            {
                bool delete = !cmd.JustBuilt;

                if (!cmd.JustBuilt)
                {
                    cmd.BuildHelper();
                }

                UpdateModalsNB(cmd);

                mCurX.Update(cmd.X, ABS);
                mCurY.Update(cmd.Y, ABS);

                mCurF.Update(cmd.F);
                mCurS.Update(cmd.S);

                TimeSpan rv = compute ? ComputeExecutionTime(cmd, conf) : TimeSpan.Zero;

                if (delete)
                {
                    cmd.DeleteHelper();
                }

                return(rv);
            }
Beispiel #2
0
        private void SendLine()
        {
            GrblCommand tosend = PeekNextCommand();

            if (tosend != null)
            {
                try
                {
                    tosend.BuildHelper();

                    tosend.SetSending();
                    mSentPtr.Add(tosend);
                    mPending.Enqueue(tosend);
                    RemoveManagedCommand();

                    mBuffer += tosend.SerialData.Length;
                    com.Write(tosend.SerialData);

                    if (mTP.InProgram)
                    {
                        mTP.JobSent();
                    }
                }
                catch (Exception ex)
                {
                    if (tosend != null)
                    {
                        Logger.LogMessage("SendLine", "Error sending [{0}] command", tosend.Command);
                    }
                    Logger.LogException("SendLine", ex);
                }
                finally { tosend.DeleteHelper(); }
            }
        }
            public G2G3Helper(StatePositionBuilder spb, GrblCommand cmd)
            {
                bool jb = cmd.JustBuilt;

                if (!jb)
                {
                    cmd.BuildHelper();
                }

                double aX = (double)spb.X.Previous;                     //startX
                double aY = (double)spb.Y.Previous;                     //startY
                double bX = (double)spb.X.Number;                       //endX
                double bY = (double)spb.Y.Number;                       //endY

                double oX = cmd.I != null ? (double)cmd.I.Number : 0.0; //offsetX
                double oY = cmd.J != null ? (double)cmd.J.Number : 0.0; //offsetY

                CenterX = aX + oX;                                      //centerX
                CenterY = aY + oY;                                      //centerY

                Ray   = Math.Sqrt(oX * oX + oY * oY);                   //raggio
                RectX = CenterX - Ray;
                RectY = CenterY - Ray;
                RectW = 2 * Ray;
                RectH = 2 * Ray;

                StartAngle   = CalculateAngle(CenterX, CenterY, aX, aY);             //angolo iniziale
                EndAngle     = CalculateAngle(CenterX, CenterY, bX, bY);             //angolo finale
                AngularWidth = AngularDistance(StartAngle, EndAngle, spb.G2);

                if (!jb)
                {
                    cmd.DeleteHelper();
                }
            }
Beispiel #4
0
            private void EmulateCommand(GrblCommand cmd)
            {
                if (!mCheck)
                {
                    try
                    {
                        cmd.BuildHelper();

                        if (cmd.IsRelativeCoord)
                        {
                            abs = false;
                        }
                        if (cmd.IsAbsoluteCoord)
                        {
                            abs = true;
                        }

                        if (cmd.F != null)
                        {
                            speed = cmd.F.Number;
                        }

                        decimal newX = cmd.X != null ? (abs ? cmd.X.Number : curX + cmd.X.Number) : curX;
                        decimal newY = cmd.Y != null ? (abs ? cmd.Y.Number : curY + cmd.Y.Number) : curY;

                        decimal distance = 0;

                        if (cmd.IsLinearMovement)
                        {
                            distance = Tools.MathHelper.LinearDistance(curX, curY, newX, newY);
                        }
                        else if (cmd.IsArcMovement)                         //arc of given radius
                        {
                            distance = Tools.MathHelper.ArcDistance(curX, curY, newX, newY, cmd.GetArcRadius());
                        }

                        if (distance != 0 && speed != 0)
                        {
                            toSleep += TimeSpan.FromMinutes((double)distance / (double)speed);
                        }

                        if (toSleep.TotalMilliseconds > 15)                         //execute sleep
                        {
                            long start = Tools.HiResTimer.TotalNano;
                            System.Threading.Thread.Sleep(toSleep);
                            long stop = Tools.HiResTimer.TotalNano;

                            toSleep -= TimeSpan.FromMilliseconds((double)(stop - start) / 1000.0 / 1000.0);
                        }

                        curX = newX;
                        curY = newY;
                    }
                    catch (Exception ex) { throw ex; }
                    finally { cmd.DeleteHelper(); }
                }

                EnqueueTX("ok");
            }
Beispiel #5
0
            public virtual void Update(GrblCommand cmd)
            {
                bool delete = !cmd.JustBuilt;

                if (!cmd.JustBuilt)
                {
                    cmd.BuildHelper();
                }

                UpdateModals(cmd);

                if (delete)
                {
                    cmd.DeleteHelper();
                }
            }
Beispiel #6
0
            public TimeSpan AnalyzeCommand(GrblCommand cmd, bool compute, GrblConf conf = null)
            {
                bool delete = !cmd.JustBuilt;

                if (!cmd.JustBuilt)
                {
                    cmd.BuildHelper();
                }

                UpdateModalsNB(cmd);
                UpdateWCO(cmd);
                UpdateXYZ(cmd);
                UpdateFS(cmd);

                TimeSpan rv = compute ? ComputeExecutionTime(cmd, conf) : TimeSpan.Zero;

                if (delete)
                {
                    cmd.DeleteHelper();
                }

                return(rv);
            }
Beispiel #7
0
            public override void Update(GrblCommand cmd)
            {
                bool delete = !cmd.JustBuilt;

                if (!cmd.JustBuilt)
                {
                    cmd.BuildHelper();
                }

                UpdateModals(cmd);

                if (cmd.TrueMovement(X.Number, Y.Number, Absolute))
                {
                    if (cmd.X != null)
                    {
                        X.SetNumber(Absolute ? cmd.X.Number : X.Number + cmd.X.Number);
                    }
                    if (cmd.Y != null)
                    {
                        Y.SetNumber(Absolute ? cmd.Y.Number : Y.Number + cmd.Y.Number);
                    }
                }

                if (cmd.F != null)
                {
                    F.SetNumber(cmd.F.Number);
                }
                if (cmd.S != null)
                {
                    S.SetNumber(cmd.S.Number);
                }

                if (delete)
                {
                    cmd.DeleteHelper();
                }
            }