Esempio n. 1
0
        private async Task InterpretProgram(GCodePreparer preparer, IProgress <float> progress)
        {
            CoordintatesExpression coordintatesExpression = new CoordintatesExpression();
            GCodeExpression        gCodeExpression        = new GCodeExpression();
            MCodeExpression        mCodeExpression        = new MCodeExpression();
            TCodeExpression        tCodeExpression        = new TCodeExpression();
            FeedrateExpression     feedrateExpression     = new FeedrateExpression();

            await Task.Run(() =>
            {
                float progressValue = 0;
                int lineNumber      = 0;
                foreach (var preparedString in preparer.Strings)
                {
                    Context context = new Context
                    {
                        PreviousFrame = Program.LastOrDefault(),
                        InputString   = preparedString
                    };
                    gCodeExpression.Interpret(context);
                    mCodeExpression.Interpret(context);
                    tCodeExpression.Interpret(context);
                    coordintatesExpression.Interpret(context);
                    feedrateExpression.Interpret(context);
                    Program.Add(context.OutputData);
                    var currentValue = (float)((double)lineNumber / preparer.Strings.Count * 90 + 10);
                    if ((currentValue - progressValue) > 0.1)
                    {
                        progressValue = currentValue;
                        progress.Report(progressValue);
                    }
                    lineNumber++;
                }
            }).ConfigureAwait(false);
        }
Esempio n. 2
0
        public void InterpretTest(string value)
        {
            var exp     = new CoordintatesExpression();
            var context = new Context {
                InputString = value
            };

            exp.Interpret(context);

            var coordinates = context.OutputData.Coordinate;

            Assert.IsTrue(coordinates.X == 0.046f && coordinates.Y == 0.756f && coordinates.A == 0.122f && coordinates.B == 12.456f && coordinates.C == 0f && coordinates.U == -11.111f && coordinates.V == 0.2f && coordinates.W == 8.9f);
        }