示例#1
0
        /// <summary>
        /// 开始直线插补运动
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btStartLiner_Click(object sender, EventArgs e)
        {
            if (dgvLinePos.Rows.Count == 0)
            {
                MessageBox.Show("请设置差补运动的轴数量");
                return;
            }
            List <int>    axisIDs   = new List <int>();
            List <double> trgtPoses = new List <double>();

            for (int i = 0; i < dgvLinePos.Rows.Count; i++)
            {
                string axisIDText = dgvLinePos.Rows[i].Cells[0].Value as string;
                if (string.IsNullOrEmpty(axisIDText))
                {
                    MessageBox.Show("请设置差补轴" + (i + 1) + " 的轴序号");
                    return;
                }
                int axisID = Convert.ToInt32(axisIDText);
                axisIDs.Add(axisID);
                string trgtPos = dgvLinePos.Rows[i].Cells[1].Value as string;
                if (string.IsNullOrEmpty(trgtPos))
                {
                    MessageBox.Show("请设置差补轴" + (i + 1) + " 的目标位置");
                    return;
                }
                double dVal = 0;
                if (!double.TryParse(trgtPos, out dVal))
                {
                    MessageBox.Show("差补轴" + (i + 1) + " 的目标位置不是一个数字,请重新输入");
                    return;
                }
                if (!_IsAxisCanMove(axisID))
                {
                    return;
                }
                trgtPoses.Add(dVal);
            }

            if (dgvLinePos.Rows.Count == 0)
            {
                MessageBox.Show("请设置差补运动的轴数量");
                return;
            }
            object omp = null;

            if (!ucLineParam.GetParamValue(out omp))
            {
                MessageBox.Show("未能获取运动参数,请检查输入");
                return;
            }
            JFMotionParam mp = (JFMotionParam)omp;

            if (!_isMotionParamValid(mp))
            {
                return;
            }
            int err = 0;

            if (chkAbsLine.Checked)
            {
                err = _module.AbsLine_P(axisIDs.ToArray(), trgtPoses.ToArray(), mp);
            }
            else
            {
                err = _module.RelLine_P(axisIDs.ToArray(), trgtPoses.ToArray(), mp);
            }

            if (err != 0)
            {
                MessageBox.Show("操作失败:" + _module.GetErrorInfo(err));
            }
            else
            {
                ShowTips("开始插补运动");
            }
        }