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); }
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(); } }
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"); }
public virtual void Update(GrblCommand cmd) { bool delete = !cmd.JustBuilt; if (!cmd.JustBuilt) { cmd.BuildHelper(); } UpdateModals(cmd); if (delete) { cmd.DeleteHelper(); } }
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); }
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(); } }