注释
|
我们尽可能使用 LinuxCNC 定义的 gcode。这是基于 NIST 标准,并通过定义的模态组进行了深思熟虑。 Marlin 的列表一团糟,似乎任何人都可以在不遵循任何标准的情况下添加命令。我不想仅仅因为它们对一个人很重要就添加命令(这里不是在谈论你)。 我们有可能为人们创建一种简单的方法来添加 G 或 M 代码以供他们自己使用。Grbl_ESP32 会解析 gcode 并查看它不知道的命令。然后它会将其传递给自定义文件以可能对其进行处理。 |
我完全同意这种说法。这实际上就是人们比其他实现更喜欢 GRBL 的原因。 我也不希望这种情况发生改变。 |
这正是我想要做的,就像 custom_code_template.cpp 一样,它会挂接到 gcode 处理器的末端。 就我而言,我想控制 5-100 个螺线管/执行器。它与 M62 命令相同,但具有更多的 IO。 |
|
我也想借此机会添加自定义 G 代码,因为我想添加代码来启动 http 请求。有一种结构化的方式来添加额外的文件而不修改原始代码会很棒。 |
有趣…. 那会是什么类型的 http 请求? 完全同意这需要在一个单独的层上,以保留原始代码。 |
|
好吧,我想添加由 grbl 控制的基于 Tasmota 的设备(基于 ESP8266 的硬件的社区固件)。简单示例:使用便宜的 Tasmota 电源插头打开/关闭主轴。这将使高压完全远离我的设置。我更喜欢这个而不是使用继电器。https://github.com/arendst/Tasmota |
|
对于不适合已建立的语言框架的扩展,一种常用的方法是“智能注释”,即将新语法包装在注释中。然而,在 GRBL 世界中,一些发件人撕掉评论并且不将它们发送到 GRBL 的事实受到了影响。 另一种可能效果更好的解决方案是发明 M 代码。机器/控制器特定 M 代码有很多 GCode 先例;事实上,人们可以争辩说它们就是为了这一目的而设计的。 但是仍然存在一些问题:
|
|
@MitchBradley是正确的。为“因为 Marlin 这样做”而进行的更改辩护对 Grbl 社区没有帮助。 这意味着添加命令的通用方法是更好的方法。 我有一些基本代码在工作。 Grbl_ESP32 应该如何响应 M115? 应该支持 EXTENDED_CAPABILITIES_REPORT 吗?它看起来应该如何? Cap:EEPROM:1 |
|
@bdring,我在下面的 openPNP 论坛上引用了更多背景知识…… M115 至少应该重新运行 FIRMWARE_NAME: XXXX 和 FIRMWARE_VERSION: X.XXX
https://groups.google.com/g/openpnp/c/VzSW0rScx2c/m/T5fshkY-BQAJ?pli=1
|
绝对同意通用方法。我的想法是它会在机器 cpp 中定义/链接或实现。 这样每台机器都可以像上面的 SMOOTHIE 示例一样向它添加额外的位。 |
对于 openPNP,我认为它不需要基本设置 |
|
它似乎工作正常。M115 是一个非常简单的命令。你必须非常了解 Grbl 才能添加复杂的。可能也有限制。用户当心。
我让它向所有客户发送响应。这类似于探测命令。没有太多 gcodes 发送除“OK”以外的响应 它位于 devt 的一个分支上,名为UserDefinedGcode |
|
惊人的东西!感谢那!!! |
|
建议:添加G代码的框架不仅应该允许添加一些功能,还应该允许将grbl置于某些状态,例如将机器置于警报模式。 |
|
我正在尝试编译测试分支(UserDefineGcode),但它说找不到文件。
当我注释掉…
在 test_drive.h 中它再次编译。 |
|
尝试编译具有相同结果的 Simple_OLED 分支,但仅针对 oled_basic.cpp 文件。 这可能是 Windows 路径问题吗? |
|
这时候使用自定义文件夹就必须使用PlatformIO来编译。custom文件夹不在src文件夹下,防止文件夹内所有文件自动被编译。这可能会导致问题,特别是如果某些文件包含相同的函数名称,例如machine_init()。 |
|
@joedirium有更好的方法来处理替代 I/O。与 I2S 输出类似,您可以创建一个新的 I/O 类,然后任何功能都可以在不更改现有代码的情况下使用它。它会添加另一个像这样的输出选项。 #define SPINDLE_OUTPUT_PIN GPIO_13
// or
#define SPINDLE_OUTPUT_PIN I2SO(12)
// or
#define SPINDLE_OUTPUT_PIN Tasmota(3)
话虽如此,我对这些设备一无所知,我没有。这不是我自己感兴趣的事情。 |
|
@bdring谢谢你的建议!听起来很有希望能够使用现有的 G 代码。 定义 I2SO(n) (I2S_OUT_PIN_BASE + n)它看起来像一个带有偏移量的常数,对我来说不像一个对象。 |
|
GRBL 最初是用纯 C 语言编写的,用于在内存有限的小型 AVR 处理器上运行,到处都是#defines 以节省内存。Grbl_Esp32 随后被转换为 C++,因此它可以由 Arduino IDE 编译,但转换主要是“C 打扮成 C++”。我们正在将它的一部分更改为适当的 C++ 以使用抽象类,但这需要时间。设置框架、主轴支持和电机的许多方面现在都使用类,但许多核心仍在(修饰)纯 C 中。有分支 NewPinClass 将 IO 引脚引入 C++ 类折叠,但它还没有已部署。它在我们的发展优先事项清单上名列前茅。但坦率地说,像这样的“小”功能请求一直让我们分心…… |
|
关于 Tasmota 情况的进一步思考:
|
@bdring….哈哈…我是在VC里看代码,在Arduino里编译的。 我已经切换到 PlatformIO,它更容易使用。 我已经使用 openPNP 进行了测试,它正在接受 M115 结果!!!!? |
@MitchBradley 你在描述宇宙… ? |
|
You also have to “clean” before each compile. The automatic clean does handle the custom folder. |
|
@MitchBradley Your are right. Please see Tasmota only as an example. It has a huge community, but some generic way to do HTTP requests would cover this anyway. I assume that a HTTP request library is already linked. |


请描述您想要实现的功能
我正在尝试设置拾放机。但它需要特殊的机器特定 gCode 命令。
示例:M115
openPNP 使用它来检测机器类型和配置应用程序。
为什么您认为这会改进 Grbl_ESP32?
Grbl_ESP32 在引脚分配方面已经非常可配置。
能够使用自定义命令扩展 vanilla GRBL 将使其超级可扩展。
这也可以用来代替宏,对吧?
这个功能会出现在很多用户面前吗?
这绝对是针对定制机器的