public void ShouldFindG0X0CommandAsG0()
        {
            var parser = new GCodeParser(new FakeLogger());
            var cmd    = parser.ParseLine("G0X0", 0) as GCodeMotion;

            Assert.AreEqual("G0", cmd.Command);
        }
示例#2
0
        protected override bool ProcessLine(string line, Socket socket)
        {
            string l = line.ToLower().Trim();

            if (l == "exit")
            {
                return(false);
            }

            LED.Write(false);

            try
            {
                GCodeParser.ParseLine(l);

                SendString("+\r\n", socket);
            }
            catch (Exception ex)
            {
                SendString("ERROR: " + ex.Message + "\r\n", socket);
            }
            finally
            {
                LED.Write(true);
            }

            return(true);
        }
        public void ShouldFindG0_X10CommandAsG0WithX10()
        {
            var parser = new GCodeParser(new FakeLogger());
            var cmd    = parser.ParseLine("G0 X10", 0) as GCodeMotion;

            Assert.AreEqual(10, cmd.End.X);
        }
        public void ShouldFindG0_ReturnWHoleNumber()
        {
            var parser = new GCodeParser(new FakeLogger());
            var cmd    = parser.ParseLine("G0 X10.00", 0) as GCodeMotion;

            Assert.AreEqual(10, cmd.End.X);
            Assert.AreEqual("G0 X10 Y0 Z0", cmd.Line);
        }
        public void ShouldFindG0_Retain1Decimal()
        {
            var parser = new GCodeParser(new FakeLogger());
            var cmd    = parser.ParseLine("G0 X10.4", 0) as GCodeMotion;

            Assert.AreEqual(10.4, cmd.End.X);
            Assert.AreEqual("G0 X10.4 Y0 Z0", cmd.Line);
        }
示例#6
0
        public void ParseChangeTool()
        {
            var parser = new GCodeParser(new FakeLogger());
            var line   = "M06 T01; 0.8000";
            var cmd    = parser.ParseLine(line, 0) as ToolChangeCommand;

            Assert.AreEqual("0.8000", cmd.ToolSize);
        }
        public void ParseProbeCommand()
        {
            var parser = new GCodeParser(new FakeLogger());
            var cmd    = parser.ParseLine("G38.3 Z-5 F20", 0) as GCodeProbe;

            Assert.AreEqual("G38.3", cmd.Command);
            Assert.AreEqual(20, cmd.Feed);
        }
        public void ApplyYOffsetTest()
        {
            var parser = new GCodeParser(new FakeLogger());
            var cmd    = parser.ParseLine("G1 X0 Y30 Z0", 10) as GCodeMotion;

            cmd.ApplyOffset(0, 10);
            Assert.AreEqual(40, cmd.End.Y);
            Assert.AreEqual("G1 X0 Y40 Z0", cmd.Line);
        }
        public void ApplyZeroRotation()
        {
            var parser = new GCodeParser(new FakeLogger());
            var cmd    = parser.ParseLine("G1 X30 Y0", 0) as GCodeLine;

            cmd.Rotate(0);
            Assert.AreEqual(30, cmd.End.X);
            Assert.AreEqual("G1 X30 Y0 Z0", cmd.Line);
        }
示例#10
0
        public void ShouldAddSpindleIfNotPresent()
        {
            var parser = new GCodeParser(new FakeLogger());
            var cmd    = parser.ParseLine("G0 X10 S30", 0) as GCodeMotion;

            Assert.AreEqual(10, cmd.End.X);
            Assert.AreEqual(30, cmd.SpindleRPM.Value);
            Assert.AreEqual("G0 X10 Y0 Z0 S30", cmd.Line);
        }
示例#11
0
        public void ShouldAddFeedIfNotExisting()
        {
            var parser = new GCodeParser(new FakeLogger());
            var cmd    = parser.ParseLine("G0 X10 F300", 0) as GCodeMotion;

            Assert.AreEqual(10, cmd.End.X);
            Assert.AreEqual(300, cmd.Feed.Value);
            Assert.AreEqual("G0 X10 Y0 Z0 F300", cmd.Line);
        }
示例#12
0
        public void ShouldGenerateG1LineWithOnlyXMove()
        {
            var parser = new GCodeParser(new FakeLogger());

            parser.State.Position = new Core.Models.Drawing.Vector3(5, 5, 0);
            var cmd = parser.ParseLine("G0X10", 0) as GCodeMotion;

            Assert.AreEqual("G0 X10 Z0", cmd.Line);
        }
示例#13
0
        private void editor_ParseGCode()
        {
            editor_Parser.Reset();

            string text = editor_textBoxGCode.Text;

            StringBuilder errors = new StringBuilder();

            int lineIndex = 0;
            int lastpos   = 0;
            int position  = 0;

            while (true)
            {
                lineIndex++;

                position = text.IndexOf('\n', position);

                string line;

                if (position >= 0)
                {
                    line = text.Substring(lastpos, position - lastpos);
                }
                else
                {
                    line = text.Substring(lastpos);
                }

                try
                {
                    editor_Parser.ParseLine(line);
                }
                catch (Exception ex)
                {
                    if (errors.Length > 0)
                    {
                        errors.Append('\n');
                    }

                    errors.Append($"{lineIndex}:\t{ex.Message}");
                }

                if (position == -1)
                {
                    break;
                }

                position++;
                lastpos = position;
            }

            previewPath = editor_Parser.ToolPath;

            editor_labelError.Content    = errors.ToString();
            editor_labelError.Visibility = errors.Length > 0 ? Visibility.Visible : Visibility.Collapsed;
        }
        public void Apply90CC2Rotation()
        {
            var parser = new GCodeParser(new FakeLogger());
            var cmd    = parser.ParseLine("G1 X30 Y0", 0) as GCodeLine;

            cmd.Rotate(90);
            Console.WriteLine(cmd.Line);
            Assert.AreEqual(30, cmd.End.Y);
            Assert.AreEqual("G1 X0 Y30 Z0", cmd.Line);
        }
示例#15
0
        public void ShouldAddSpindleIfChanged()
        {
            var parser = new GCodeParser(new FakeLogger());

            parser.State.SpindleRPM = 30;
            var cmd = parser.ParseLine("G0 X10 S25", 0) as GCodeMotion;

            Assert.AreEqual(10, cmd.End.X);
            Assert.AreEqual(25, cmd.SpindleRPM.Value);
            Assert.AreEqual("G0 X10 Y0 Z0 S25", cmd.Line);
        }
示例#16
0
        public void ShouldAddFeedIfChanged()
        {
            var parser = new GCodeParser(new FakeLogger());

            parser.State.Feed = 300;
            var cmd = parser.ParseLine("G0 X10 F250", 0) as GCodeMotion;

            Assert.AreEqual(10, cmd.End.X);
            Assert.AreEqual(250, cmd.Feed.Value);
            Assert.AreEqual("G0 X10 Y0 Z0 F250", cmd.Line);
        }
示例#17
0
        public static void Main()
        {
            var device = new XYZGantryDevice();

            device.SetStepX((steps) => { });
            device.SetStepY((steps) => { });
            device.SetStepZ((steps) => { });
            device.SetStopX(() => { });
            device.SetStopX(() => { });
            device.SetStopX(() => { });

            var machine = new GCodeMachine(device);

            var parser = new GCodeParser(machine);

            //parser.ParseLine("G01 X1 Y1");

            parser.ParseLine("G02 X1 Y0 I1 J0");
        }
示例#18
0
        public void LineSplitTest()
        {
            var parser = new GCodeParser(new FakeLogger());
            var cmd    = parser.ParseLine("G0 X25 Y25", 0) as GCodeMotion;

            Assert.AreEqual("G0", cmd.Command);

            var cmds = cmd.Split(5);

            var first = cmds.First();

            Assert.AreEqual(cmd.Start.X, first.Start.X);
            Assert.AreEqual(cmd.Start.Y, first.Start.Y);
            Assert.AreEqual(cmd.Start.Z, first.Start.Z);

            var last = cmds.Last();

            Assert.AreEqual(cmd.End.X, last.End.X);
            Assert.AreEqual(cmd.End.Y, last.End.Y);
            Assert.AreEqual(cmd.End.Z, last.End.Z);
        }
示例#19
0
 public void ParseSetSpindle()
 {
     var parser = new GCodeParser(new FakeLogger());
     var line   = "S20000";
     var cmd    = parser.ParseLine(line, 0) as OtherCode;
 }