Beispiel #1
0
        virtual protected bool parse_value_param(string token, int split, int skip, ref GCodeParam param)
        {
            var identifier = token.Substring(0, split);

            string value = token.Substring(split + skip, token.Length - (split + skip));

            try
            {
                GCodeUtil.NumberType numType = GCodeUtil.GetNumberType(value);
                if (numType == GCodeUtil.NumberType.Decimal)
                {
                    param = GCodeParam.Double(double.Parse(value), identifier);
                    return(true);
                }
                else if (numType == GCodeUtil.NumberType.Integer)
                {
                    param = GCodeParam.Integer(int.Parse(value), identifier);
                    return(true);
                }
            }
            catch
            {
                // just continue on and do generic string param
            }

            param = GCodeParam.Text(value);
            return(true);
        }
Beispiel #2
0
        /// <summary>
        /// Add a text-value parameter to the current line
        /// (these are used in Biesse gcode...can also use this to string-format values yourself)
        /// </summary>
        public virtual GCodeBuilder AppendS(string identifier, string value)
        {
            GCodeParam p = GCodeParam.Text(value, identifier);

            next_params.Add(p);
            return(this);
        }
Beispiel #3
0
        virtual protected GCodeParam[] parse_parameters(string[] tokens, int iStart, int iEnd = -1)
        {
            if (iEnd == -1)
            {
                iEnd = tokens.Length;
            }

            int N = iEnd - iStart;

            GCodeParam[] paramList = new GCodeParam[N];

            for (int ti = iStart; ti < iEnd; ++ti)
            {
                int pi = ti - iStart;

                bool bHandled = false;
                if (tokens[ti].Contains('='))
                {
                    parse_equals_parameter(tokens[ti], ref paramList[pi]);
                    bHandled = true;
                }
                else if (tokens[ti][0] == 'G' || tokens[ti][0] == 'M')
                {
                    parse_code_parameter(tokens[ti], ref paramList[pi]);
                    bHandled = true;
                }
                else if (is_num_parameter(tokens[ti]) > 0)
                {
                    parse_noequals_num_parameter(tokens[ti], ref paramList[pi]);
                    bHandled = true;
                }
                else if (tokens[ti].Length == 1)
                {
                    paramList[pi] = GCodeParam.NoValue(tokens[ti]);
                    bHandled      = true;
                }

                if (!bHandled)
                {
                    paramList[pi] = GCodeParam.Text(tokens[ti], default);
                }
            }

            return(paramList);
        }
Beispiel #4
0
        virtual protected bool parse_code_parameter(string token, ref GCodeParam param)
        {
            string identifier = token.Substring(0, 1);
            string value      = token.Substring(1);

            switch (GCodeUtil.GetNumberType(value))
            {
            case GCodeUtil.NumberType.Integer:
                param = GCodeParam.Integer(int.Parse(value), identifier);
                break;

            case GCodeUtil.NumberType.Decimal:
                param = GCodeParam.Double(double.Parse(value), identifier);
                break;

            default:
            case GCodeUtil.NumberType.NotANumber:
                param = GCodeParam.Text(value, identifier);
                break;
            }

            return(true);
        }