news 2026/4/23 13:00:20

雕刻机打标机切割机上位机C#源码,stm32f407控制板源码 打开上位机导入g代码点击开始即...

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
雕刻机打标机切割机上位机C#源码,stm32f407控制板源码 打开上位机导入g代码点击开始即...

雕刻机打标机切割机上位机C#源码,stm32f407控制板源码 打开上位机导入g代码点击开始即可自动加工。 1.界面还原g代码图形。 2.自动解析g代码 3.回原点控制 4.图形可鼠标拖动,缩放

最近在折腾雕刻机控制系统,顺手撸了个C#上位机和STM32F407下位机的开源方案。这玩意儿能直接导入G代码自动加工,鼠标拖拽预览图形还挺方便,分享几个核心功能的实现思路。

界面还原G代码图形这块用了GDI+绘图。解析完G代码后把坐标点存入List,用GraphicsPath来绘制轨迹:

GraphicsPath path = new GraphicsPath(); foreach (GCodeCommand cmd in gcodeCommands) { if (cmd.CommandType == CommandType.Move) { PointF scaledPoint = ScalePoint(cmd.X, cmd.Y); if (cmd.IsLinearMove) path.AddLine(previousPoint, scaledPoint); previousPoint = scaledPoint; } } // 重绘时加上这个 graphics.DrawPath(pen, path);

这里有个坑——G代码的坐标系和屏幕Y轴方向是反的,得做坐标变换。ScalePoint方法里除了缩放还要处理Y轴翻转。

G代码解析用正则表达式提取关键参数:

Regex regex = new Regex(@"G([0-9]+)(\s+X([+-]?\d+\.?\d*))?(\s+Y([+-]?\d+\.?\d*))?"); Match match = regex.Match(line); if (match.Success) { float x = match.Groups[3].Success ? float.Parse(match.Groups[3].Value) : lastX; float y = match.Groups[5].Success ? float.Parse(match.Groups[5].Value) : lastY; // 存入指令队列 }

注意得处理模态指令(比如G01之后可以省略G代码),还有相对/绝对坐标的转换。建议把解析后的指令封装成对象,后面处理起来方便。

雕刻机打标机切割机上位机C#源码,stm32f407控制板源码 打开上位机导入g代码点击开始即可自动加工。 1.界面还原g代码图形。 2.自动解析g代码 3.回原点控制 4.图形可鼠标拖动,缩放

回原点功能通过串口发送指令给下位机:

serialPort.Write($"$H\n");

STM32端接收到指令后启动限位开关检测:

void homing() { while(!X_MIN_PIN) { stepX(-1); } while(!Y_MIN_PIN) { stepY(-1); } // 碰到限位后归零坐标 currentPosition[X_AXIS] = 0; currentPosition[Y_AXIS] = 0; }

记得加软件去抖,机械限位开关容易产生毛刺信号。

图形交互部分实现缩放拖拽,主要靠矩阵变换:

Matrix transformMatrix = new Matrix(); // 缩放 transformMatrix.Scale(zoomFactor, zoomFactor); // 平移 transformMatrix.Translate(offsetX, offsetY); graphics.Transform = transformMatrix;

鼠标滚轮事件计算缩放中心点:

float scale = e.Delta > 0 ? 1.2f : 0.8f; PointF mousePos = e.Location; zoomMatrix.Translate(-mousePos.X, -mousePos.Y, MatrixOrder.Append); zoomMatrix.Scale(scale, scale, MatrixOrder.Append); zoomMatrix.Translate(mousePos.X, mousePos.Y, MatrixOrder.Append);

这样缩放时会以鼠标指针为中心,体验更自然。记得限制最大最小缩放倍数,防止图形飘走。

下位机运动控制用梯形速度规划,避免急停抖动。关键代码在定时器中断里:

void TIM3_IRQHandler() { if(stepCounter > 0) { STEP_PIN = 1; delay_us(2); STEP_PIN = 0; stepCounter--; } // 更新速度曲线... }

实际测试发现F407的定时器精度足够,但要注意中断优先级设置,避免通信阻塞。

完整源码里还包含加工进度显示、异常暂停、Z轴抬刀控制这些实用功能。开发时建议先模拟运行,毕竟直接控制硬件有风险。代码仓库里已经加了G代码样例和接线图,有兴趣的可以直接拉下来改参数用。

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

yuzu模拟器中文乱码5分钟快速排查与一键修复方案

yuzu模拟器中文乱码5分钟快速排查与一键修复方案 【免费下载链接】yuzu-downloads 项目地址: https://gitcode.com/GitHub_Trending/yu/yuzu-downloads 还在为yuzu模拟器中的中文显示问题烦恼吗?方块字、乱码字符让游戏体验大打折扣。别担心,我们…

作者头像 李华
网站建设 2026/4/18 11:08:08

WeChatFerry微信机器人:免费开源自动化终极指南

WeChatFerry微信机器人:免费开源自动化终极指南 【免费下载链接】WeChatFerry 微信逆向,微信机器人,可接入 ChatGPT、ChatGLM、讯飞星火、Tigerbot等大模型。Hook WeChat. 项目地址: https://gitcode.com/GitHub_Trending/we/WeChatFerry …

作者头像 李华
网站建设 2026/4/23 3:45:40

Qwen2-VL-7B-Instruct-AWQ实战指南:从零到精通的多模态AI部署

Qwen2-VL-7B-Instruct-AWQ实战指南:从零到精通的多模态AI部署 【免费下载链接】Qwen2-VL-7B-Instruct-AWQ 融入视觉与文本的智能新篇章,Qwen2-VL-7B-Instruct-AWQ横空出世。这款7B参数的视觉语言模型,具备卓越的图像理解力,可深入…

作者头像 李华
网站建设 2026/4/18 10:32:35

闪电视频 / 囧次元纯净版:不搞花活的实用工具

翻应用商店总怕碰着 “花架子”,直到挖到这两款,试完直接清了半手机冗余软件。 闪电视频是刷剧党的 “精准货架”。界面没弾窻,按 “新剧 / 热映” 分类,新更剧集标着更新进度,连热映作品都能抓全集。分类细到题材&…

作者头像 李华
网站建设 2026/4/21 14:19:33

零基础掌握AI语音克隆:实战级声音转换完全指南

零基础掌握AI语音克隆:实战级声音转换完全指南 【免费下载链接】Retrieval-based-Voice-Conversion-WebUI 语音数据小于等于10分钟也可以用来训练一个优秀的变声模型! 项目地址: https://gitcode.com/GitHub_Trending/re/Retrieval-based-Voice-Conver…

作者头像 李华
网站建设 2026/4/14 1:47:34

wvp-GB28181-pro实战指南:5步搭建企业级视频监控平台

wvp-GB28181-pro实战指南:5步搭建企业级视频监控平台 【免费下载链接】wvp-GB28181-pro 项目地址: https://gitcode.com/GitHub_Trending/wv/wvp-GB28181-pro 还在为不同品牌摄像头无法统一管理而烦恼吗?面对海康、大华、宇视等设备混杂的情况&a…

作者头像 李华