注释
嗨,luc 对于您在第 1 点描述的内容(停止发送 GCODE 但继续发送状态查询)似乎 lasergrbl“认为”缓冲区已满。
缓冲区与 telnet 无关。Grbl 有一个串行缓冲区,允许每次发送多条 gcode 行,允许 grbl 固件“预测”下一个动作并优化加速/减速,允许下一条指令没有打嗝等。 需要知道的一件事是 LaserGRBL 使用 127 字符(不是 128)的缓冲区大小,因为它与缓冲区为 127 的旧 grbl v0.9 兼容。 LaserGRBL 在行数信息附近的左下方进度条中显示此缓冲区的使用情况。因为它只显示一个进度条而不显示数字,所以它对于调试目的不是很有用。 如果您使用 $10=2 激活缓冲区报告,grbl 将开始发送有关缓冲区内部状态报告的调试信息。 https://github.com/gnea/grbl/wiki/Grbl-v1.1-Configuration#10—status-report-mask 另请注意,如果 LaserGRBL 收到包含有关缓冲区信息的状态报告,并且该信息包含多个高于 127 的可用空间字符,则 LaserGRBL 可以将自身缓冲区扩大到此大小。这是由具有 10240 缓冲区的 Grbl-LPC 分支请求的。 |
从命令提示符或快捷方式运行 LaserGRBL。如果您使用“comlog”参数“C:\Program Files (x86)\LaserGRBL\LaserGRBL.exe comlog”启动 LaserGRBL,程序将记录一个名为“netlog.txt”的文件,位于“C:\Users\YourName\AppData\漫游 \LaserGRBL”。在 comlog 文件中,您可以找到从 LaserGRBL 传输/接收的所有数据。 |
我将在进度条上添加一个带有数字信息的工具提示,这样您就可以将 LaserGRBL 字符计数报告的缓冲区状态与 grbl 状态报告报告的值进行比较。 |
非常好,非常感谢您的解释,非常感谢您的支持,这将有助于弄清楚缓冲模式下发生了什么。 |
我补充说,当 LaserGRBL 识别出机器不再执行任何运动时,它会通过“问题检测器”对话框拦截这种情况(您可能已经看到了)。同时它在sessionlog.txt文件中记录了一些诊断信息。 Logger.LogMessage(“问题检测器”, “{0} [{1},{2},{3}]”, 问题, FreeBuffer, GrblBuffer, GrblBlock); FreeBuffer 是来自 LaserGRBL 知识/观点的缓冲区空间 |
让我知道 |
日志文件非常好 – 似乎 ESP32 核心可能与 lwip 有一些问题 – 我可能需要发送带有最小草图的程序来重现问题 – 可以吗? |
实际上我想我会在 python 中做一个简单的发件人,这样他们就可以检查发件人并调整他们的调试 |
谢谢 – 实际上我可以通过简单的乒乓交换锁定 WiFi 服务器,所以我只是保持超级简单 |
我会及时通知你 – 在那之前我认为我们可以关闭问题 非常感谢您的大力帮助 |
您好,我正在研究 GRBL_ESP32 项目 ( https://github.com/bdring/Grbl_Esp32 ),我们正努力让它与您的 lasergrbl 完美配合。
我们能够进行设置:
Telnet / Synchronous / Slow
到目前为止工作得很好我们想看看我们是否也可以使用缓冲,但我们遇到了 2 个问题,我查看了你的代码但我不熟悉它:
1 – 随机在 telnet 缓冲模式下,几秒钟后,lasergrbl 似乎停止发送 GCODE 但继续发送状态查询,
看起来激光 grbl 没有得到正确数量的确认或类似的东西,有什么
方法可以检查这个?
我还可以知道是什么触发了使用 telnet 和缓冲模式使缓冲区变满吗?
2 – 再次随机进入 telnet 缓冲模式,ESP32 wifi RX 缓冲区似乎溢出了 – 因此板不再响应并且也冻结了 lasergrbl – 所以停止的唯一方法是终止 lasergrbl 任务 我可以知道最大大小是多少发送缓冲区?
3 – 我看到代码中有一个用于 telnet 的日志文件,
socketlog.txt
但我找不到它 – 启用它是否需要一个标志?或者应该在哪里生成?提前致谢