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

使用Docker在Debian上构建GRBL模拟器镜像:简明步骤和操作指南

  • 概述
  • 编译
  • 编写 Dockerfile
  • 构建镜像
  • 运行
  • 测试
  • 其他

概述

本文将详细介绍如何在Debian系统上通过Docker构建GRBL模拟器镜像,以便进行数控机床的仿真测试。GRBL是一种开源的控制系统,用于控制三轴CNC机床、激光雕刻、激光切割,而在Docker容器中运行模拟器则提供了方便的测试环境,主要用于编写指令交互通讯而无需真实的设备。文章将从下载源代码、编写Dockerfile、构建镜像到运行测试一步步进行说明,同时针对可能出现的问题给予解决方案和调试技巧。通过简明易懂的指南,读者可以轻松完成在Debian系统上搭建GRBL模拟器镜像的操作。

grbl-network-sim

Docker 模拟器工程文件仓库:

https://gitee.com/yujinghuanqiu/grbl-sim

编译

首先在 Linux debian 系统上下载源代码:
然后执行以下命令,编译的二进制文件会在 build 目录。

git clone --recurse-submodules https://github.com/grblHAL/Simulator.git
cd Simulator
mkdir build 
cd build
cmake ..
make

编写 Dockerfile

编译成功后把编译的二进制文件移动到一个目录中,然后创建一个 Dockerfile 文件,写入以下内容。
具体目录结构见 模拟器工程文件仓库

# 使用基础镜像
FROM debian:bookworm-slim

# 设置工作目录
WORKDIR /app

# 将 grblHAL_sim 和相关文件复制到容器中的 /app 目录
COPY build /app

# 运行 grblHAL_sim -p 8888
CMD ["/app/grblHAL_sim", "-p", "8888"]

# 构建
# docker build -t grblsim:latest .

# 运行
# docker run -d --name grbl-sim -p 8888:8888 grblsim:latest

# 测试
# 使用网络工具 TCP 连接本机 8888 端口即可收发模拟数据。

构建镜像

在当前目录中执行以下命令:

docker build -t grblsim:latest .

运行

执行以下指令运行 grblsim:latest 镜像,其他名称命名为 grbl-sim
端口映射格式: <主机:容器>
如果你想映射到主机 9999 端口,修改 8888:88889999:8888 即可。

docker run -d --name grbl-sim -p 8888:8888 grblsim:latest

测试

使用网络工具 TCP 连接本机 8888 端口即可收发模拟数据。

>>> $I\r\n

<<< 模拟器回复数据
[VER:1.1f.20231005:]
[DockerAuthor:cheungxiongwei]
[OPT:VNML+,35,1024,3,0]
[AXS:3:XYZ]
[NEWOPT:ENUMS,RT+,SED]
[FIRMWARE:grblHAL]
[NVS STORAGE:*EEPROM]
[DRIVER:Simulator]
[DRIVER VERSION:230918]

其他

本来是想在 windows 镜像的基础上进行打包的,自己电脑使用的是 Windows11 ,下载了几个版本都报错,可能是兼容性问题,故此直接在 linux (虚拟机,没安装 Docker Engine)中进行编译,然后使用 scp 工具把二进制文件传输到 windows 进行 docker 打包。
微软镜像 tag 经常更新,所以 tag 会出现找不到的情况,当前正确的 tag 需要从以下网站查看:
https://hub.docker.com//microsoft-windows-server?tab=description
例如 mcr.microsoft.com/windows:20H2-amd64 中的 20H2-amd6 tag 标签可从以下网站确认:
https://hub.docker.com/
/microsoft-windows
使用 Win11 系统打包此 Dockerfile 失败。现在尝试 Debian。


http://www.kler.cn/a/158739.html

相关文章:

  • 若依权限控制
  • 汽车资讯新篇章:Spring Boot技术启航
  • 前端:HTML (学习笔记)【1】
  • Thrift与NestJS:构建高性能分布式系统的实战指南
  • 基于YOLOv8深度学习的公共卫生防护口罩佩戴检测系统(PyQt5界面+数据集+训练代码)
  • Nginx server_name配置错误导致路由upstream超时问题
  • C语言--每日选择题--Day36
  • 随机链表的复制[中等]
  • 服务器以及页面无报错,但是ajax一直回调error。怎么查找报错信息,更好地了解到底是什么问题导致了请求失败
  • Qt 大小端转换函数qFromBigEndian qFromLittleEndian
  • 【亲测有效,超详细】收到微信小程序限期完成微信认证通知怎么处理?微信小程序年审认证都需要哪些资料?
  • Flink之复杂事件处理CEP
  • Linux下安装Nginx
  • 前端开发新趋势:Web3、区块链与虚拟现实
  • 解决:ModuleNotFoundError: No module named ‘qt_material‘
  • C++进阶篇7---异常
  • Unity中动态合批
  • SpringBoot+vue显示图片
  • CPP-SCNUOJ-Problem P24. [算法课贪心] 跳跃游戏
  • 鱼香ROS一键安装命令(支持微信、docker、ros等)
  • SpringSecurity6 | 默认用户生成
  • 2023年甘肃省职业院校技能大赛(中职教师组)网络安全竞赛样题(四)
  • GNN Maximum Flow Problem (From Shusen Wang)
  • 7+WGCNA+机器学习+实验+泛癌分析,多要素干湿结合
  • TCP 半连接队列和全连接队列
  • 区分(GIOU、DIOU、CIOU)(正则化、归一化、标准化)