Contact me: hankecnc@gmail.com

GRBL-Mega V1.1 和缓冲区大小 #115

推推 grbl 3年前 (2023-02-02) 364次浏览
关闭
mayhem2408 打开了这个问题 2017 年 1 月 9 日 · 6条评论
关闭

GRBL-Mega V1.1 和缓冲区大小#115

mayhem2408 打开了这个问题 2017 年 1 月 9 日 · 6条评论

评论

GRBL-Mega V1.1 和缓冲区大小 #115

@cheton我运行 Arduino Mega 和 GRBL-Mega V1.1。这有很多原因,但我注意到更大的串行缓冲区在 CNC.js 中没有得到充分利用。标准 GRBL 有 15-16 个规划器缓冲区和 127 个串行缓冲区。我的 GRBL-Mega 有 64 个 Planner 缓冲区和 255 个串行缓冲区。规划器缓冲区已被充分利用,但串行缓冲区仍然只使用最多 127 个。我猜 CNC.js 是硬连线的最多 127 个。这是你可以增加或动态检测和连接的东西,或者有一个选择缓冲区大小的选项?

GRBL-Mega V1.1 和缓冲区大小 #115
合作者

感谢您的信息。我将添加一个可配置选项来更改默认缓冲区大小。

GRBL-Mega V1.1 和缓冲区大小 #115
作者
混乱2408 评论了 2017 年 1 月 9 日  

@cheton与此同时,我手动更改了 src/app/lib/gcode-sender.js 和 src/app/controllers/Grbl/GrblController.js 以反映它工作正常的较大缓冲区。串行缓冲区现在徘徊在 30 左右,而不是 160。虽然有那个选项会很棒。
如果 GRBL1.1 设置为报告缓冲区,您可以让 CNC 自动检测缓冲区,在我的例子中为 BF:63,255。您可以使用 BF: 值自动将缓冲区设置为。

GRBL-Mega V1.1 和缓冲区大小 #115
合作者

现在缓冲区大小限制为 120,如下所示。我从 127 中减去 7 以确保它不会溢出 Grbl 的接收缓冲区,因为有两个命令(?$G\n)定期发送到 Grbl。

this.sender = new Sender(STREAMING_PROTOCOL_CHAR_COUNTING, {
    // Grbl has a 127 character serial receive buffer.
    // Use a lower value to deduct the length of regular commands:
    // - parser state command ($G\n)
    // - current status command: (?)
    bufferSize: 120
});

可以自动检测 BF 报告并即时扩大缓冲区大小。例如:

bufferSize = Math.max(BF[1] - n, bufferSize);
// where BF[1] is the RX buffer, n is the amount that needs to subtract from the RX buffer
GRBL-Mega V1.1 和缓冲区大小 #115
合作者

在 1.8.14 中添加了自动检测。如果它适用于 grbl-Mega v1.1,请告诉我。