当前位置: 首页 > news >正文

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

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

一 平移旋转标定

/// <summary>/// 平移旋转标定/// </summary>/// <param name="sender"></param>/// <param name="e"></param>privatevoidmaterialButton17_Click(objectsender,EventArgse){// 一 初始化操作vartask1=Task.Run(()=>{//// 1.回零//commomCMD.ReturnOrg();//// 2.回避让位//commomCMD.MoveSafePlace();});// 二运行主流程// 协同取消操作cts3=newCancellationTokenSource();// 当前步骤CurrentStep3=0;Tasktask2=task1.ContinueWith(newAction<Task>((t)=>{boolresult=RotateCalibProcess();}),cts3.Token);}

二 定义旋转标定工序

publicenumRotateStep{旋转1,旋转2,旋转3,旋转4,旋转5,}

三 定义全局变量

privateCancellationTokenSourcects3;//当前步骤privateRotateStepCurrentStep3=0;publicboolIsPause3=false;

四 RotateCalibProcess

/// <summary>/// 旋转标定流程/// </summary>/// <returns></returns>privateboolRotateCalibProcess(){// 循环while(cts3.IsCancellationRequested==false){Invoke(newAction(()=>{rtb_info.AppendText($"执行到步骤【{(int)CurrentStep3+1}】:"+CurrentStep3.ToString()+"\n");}));switch(CurrentStep3){caseRotateStep.旋转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;caseRotateStep.旋转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;caseRotateStep.旋转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;caseRotateStep.旋转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;caseRotateStep.旋转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;}}}returnfalse;}

五 停止流程

/// <summary>/// 停止流程/// </summary>/// <param name="sender"></param>/// <param name="e"></param>privatevoidmaterialButton16_Click(objectsender,EventArgse){cts3.Cancel();}

六 暂停流程

/// <summary>/// 继续运行/// </summary>/// <param name="sender"></param>/// <param name="e"></param>privatevoidmaterialButton11_Click(objectsender,EventArgse){IsPause3=true;}

七 继续流程

/// <summary>/// 继续运行/// </summary>/// <param name="sender"></param>/// <param name="e"></param>privatevoidmaterialButton11_Click(objectsender,EventArgse){IsPause3=false;}


http://www.cnnetsun.cn/news/52411.html

相关文章:

  • 电商网站商品筛选栏的sticky定位实战
  • 零基础学结构体:从概念到实战5个例子
  • 5分钟搭建status_invalid_image_hash检测原型
  • 人工智能应用-机器视觉:车牌识别(1)
  • 5分钟搞定node-sass配置:快速原型开发指南
  • 幽冥大陆(四十九)PHP打造Java的Jar实践——东方仙盟筑基期
  • 从产线到质检,兰亭妙微教你做 “工人愿意用” 的工业 UI
  • 【数学】【微积分】 ① 导数的基础概念与计算法则
  • 咱们聊聊Spring循环依赖那点事儿:从“死锁”到“三级缓存”的奇妙之旅
  • Linux 文件拷贝性能对比:裸 `read/write` VS `fread/fwrite` —— 页面缓存与用户缓冲的真相(附完整测试代码)
  • 主散线指标 通达信源码
  • 提升开关频率(一) PRISEMI芯导科技MOSFET工艺结构的发展与演进
  • 音频录制和编辑软件
  • Quick CPU(CPU性能优化软件)
  • 数据分析 “手工匠” VS “智能魔方”!虎贲等考 AI:凭什么重塑论文写作新范式?
  • U-Net++:嵌套密集跳跃连接,多尺度融合增强特征表达,医学影像分割的unet创新-k学长深度学习专栏
  • 基于SpringBoot的在线拍卖系统(11480)
  • Flutter游戏开发与图形渲染实战
  • 【Java毕设源码分享】基于springboot+vue的电商个性化推荐系统设计与实现(程序+文档+代码讲解+一条龙定制)
  • 【Java毕设源码分享】基于springboot+vue的二手家电管理平台设计与实现(程序+文档+代码讲解+一条龙定制)
  • 【Java毕设源码分享】基于springboot+vue的二手商品网站设计与实现(程序+文档+代码讲解+一条龙定制)
  • 【Java毕设源码分享】基于springboot+vue的甘肃旅游管理系统设计与实现(程序+文档+代码讲解+一条龙定制)
  • 【Java毕设源码分享】基于springboot+vue的高校本科生学习成长记录系统的设计与实现(程序+文档+代码讲解+一条龙定制)
  • 2003-2024年上市公司高管政治关联、政企纽带数据
  • 2025年更新!人工智能企业数据库
  • 全面沦陷:所有 LLM 与 AI 绘画模型已被攻破——红队实战全景报告(2025)
  • systemd服务管理深入实践从入门到自定义服务
  • 基于微信小程序的网络安全知识科普平台系统【源码文末联系】
  • 基于VUE的实验室使用管理系统[VUE]-计算机毕业设计源码+LW文档
  • 【单片机毕业设计】【mcugc-mcu911】基于单片机的多功能安防系统