上位机状态机开发之旋转标定

上位机状态机开发之旋转标定

一 平移旋转标定

      /// <summary>
      /// 平移旋转标定
      /// </summary>
      /// <param name="sender"></param>
      /// <param name="e"></param>
      private void materialButton17_Click(object sender, EventArgs e)
      {

          // 一 初始化操作

          var task1 = Task.Run(() =>
          {

              //// 1.回零
              //commomCMD.ReturnOrg();

              //// 2.回避让位
              //commomCMD.MoveSafePlace();

          });

          // 二运行主流程

          // 协同取消操作
          cts3 = new CancellationTokenSource();

          // 当前步骤
          CurrentStep3 = 0;



          Task task2 = task1.ContinueWith(new Action<Task>(
          (t) =>
          {
              bool result = RotateCalibProcess();


          }), cts3.Token);


      }


二 定义旋转标定工序

public enum RotateStep
{
    旋转1,
    旋转2,
    旋转3,
    旋转4,
    旋转5,
}

三 定义全局变量

private CancellationTokenSource cts3;
//当前步骤
private RotateStep CurrentStep3 = 0;
public bool IsPause3 = false;

四 RotateCalibProcess

  /// <summary>
  /// 旋转标定流程
  /// </summary>
  /// <returns></returns>
  private bool RotateCalibProcess()
  {

      // 循环
      while (cts3.IsCancellationRequested == false)
      {

          Invoke(new Action(() =>
          {
              rtb_info.AppendText($"执行到步骤【{(int)CurrentStep3 + 1}】:" + CurrentStep3.ToString() + "\n");

          }));



          switch (CurrentStep3)
          {

              case RotateStep.旋转1:


                  // 1.移动到第一个位置
                  commomCMD.Move(txtMStartX.Text.Trim(), txtMStartY.Text.Trim(), txtMStartZ.Text.Trim(), -20);
                  // 2.触发拍照
                  CommunicateService.Instance.Send3("Rotate,-20");

                  // 3.(等待拍照结束)拍照结束才能走
                  Thread.Sleep(3000);

                  CurrentStep3++;
                  break;
              case RotateStep.旋转2:
                  // 1.移动到第二个位置
                  // 1.移动到第一个位置
                  commomCMD.Move(txtMStartX.Text.Trim(), txtMStartY.Text.Trim(), txtMStartZ.Text.Trim(), -10);
                  // 2.触发拍照
                  CommunicateService.Instance.Send3("Rotate,-10");

                  // 3.(等待拍照结束)拍照结束才能走
                  Thread.Sleep(3000);
                  CurrentStep3++;
                  break;
              case RotateStep.旋转3:
                  // 1.移动到第一个位置
                  commomCMD.Move(txtMStartX.Text.Trim(), txtMStartY.Text.Trim(), txtMStartZ.Text.Trim(), 0);
                  // 2.触发拍照
                  CommunicateService.Instance.Send3("Rotate,0");

                  // 3.(等待拍照结束)拍照结束才能走
                  Thread.Sleep(3000);
                  CurrentStep3++;
                  break;
              case RotateStep.旋转4:
                  // 1.移动到第一个位置
                  commomCMD.Move(txtMStartX.Text.Trim(), txtMStartY.Text.Trim(), txtMStartZ.Text.Trim(), 10);
                  // 2.触发拍照
                  CommunicateService.Instance.Send3("Rotate,10");

                  // 3.(等待拍照结束)拍照结束才能走
                  Thread.Sleep(3000);
                  CurrentStep3++;
                  break;
              case RotateStep.旋转5:
                  // 1.移动到第一个位置
                  commomCMD.Move(txtMStartX.Text.Trim(), txtMStartY.Text.Trim(), txtMStartZ.Text.Trim(), 20);
                  // 2.触发拍照
                  CommunicateService.Instance.Send3("Rotate,20");

                  // 3.(等待拍照结束)拍照结束才能走
                  Thread.Sleep(3000);

                  CurrentStep3++;
                  break;
              default:
                  break;
          }


          // 暂停
          while (true)
          {
              if (IsPause3)
              {
                  Thread.Sleep(20);
                  System.Windows.Forms.Application.DoEvents();
              }
              else
              {
                  break;
              }
          }
      }

      return false;
  }

五 停止流程

  /// <summary>
  /// 停止流程
  /// </summary>
  /// <param name="sender"></param>
  /// <param name="e"></param>
  private void materialButton16_Click(object sender, EventArgs e)
  {
      cts3.Cancel();
  }

六 暂停流程



        /// <summary>
        /// 继续运行
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void materialButton11_Click(object sender, EventArgs e)
        {
            IsPause3 = true;
        }

七 继续流程



        /// <summary>
        /// 继续运行
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void materialButton11_Click(object sender, EventArgs e)
        {
            IsPause3 = false;
        }

在这里插入图片描述
在这里插入图片描述

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值