news 2026/6/23 2:47:41

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
上位机状态机开发之旋转标定

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

一 平移旋转标定

/// <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;}


版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/22 21:36:29

电商网站商品筛选栏的sticky定位实战

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 创建一个电商商品列表页的筛选栏sticky实现方案。页面顶部有网站导航(高度80px)&#xff0c;下方是筛选栏(高度50px)&#xff0c;再往下是商品列表。要求&#xff1a;1. 滚动时筛选…

作者头像 李华
网站建设 2026/6/23 19:51:42

零基础学结构体:从概念到实战5个例子

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 设计一个适合初学者的结构体教学示例集合&#xff0c;包含5个逐步复杂的案例&#xff1a;1. 二维点坐标 2. 图书信息管理 3. 简单银行账户 4. 游戏角色属性 5. 学生成绩统计。每个案…

作者头像 李华
网站建设 2026/6/23 19:51:09

5分钟搭建status_invalid_image_hash检测原型

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 构建一个极简图像哈希验证原型&#xff0c;功能&#xff1a;1) 文件选择器上传单张图片 2) 计算并显示哈希值 3) 简单匹配验证 4) 显示验证结果。使用纯前端技术HTML/JS实现&#x…

作者头像 李华
网站建设 2026/6/23 19:02:48

人工智能应用-机器视觉:车牌识别(1)

在现代交通系统中&#xff0c;车牌识别已成为人工智能最成功、最普及的应用之一。我们在小区出入口看到的自动门禁、高速公路违章抓拍系统&#xff0c;以及智慧城市的交通治理平台&#xff0c;都离不开车牌识别技术的支持。车牌识别&#xff08;License Plate Recognition, LPR…

作者头像 李华
网站建设 2026/6/23 16:59:33

5分钟搞定node-sass配置:快速原型开发指南

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 创建一个快速验证node-sass配置的原型项目模板&#xff0c;包含预配置好的manifest.json文件和简单测试用例。要求支持一键运行验证&#xff0c;提供多种配置方案比较&#xff0c;使…

作者头像 李华
网站建设 2026/6/23 19:29:48

幽冥大陆(四十九)PHP打造Java的Jar实践——东方仙盟筑基期

在 Java 生态中&#xff0c;Jar 包是代码分发、部署的核心载体&#xff0c;它将编译后的 class 文件、资源文件等打包成一个独立的归档文件&#xff0c;实现了代码的便携性与复用性。而在 PHP 领域&#xff0c;传统的部署方式多是直接暴露源码&#xff0c;这不仅在安全、分发层…

作者头像 李华