向 Marlin 添加自定义 M 代码不适用于 Marlin 2.0
如何将自定义 G 代码或 M 代码添加到 Marlin 2.0?Marlin_main.cpp 文件不存在。
一般来说,对于 Marlin 2.0,事情组织得更好,但分成更多的文件。
向 Marlin 添加自定义 M 代码不适用于 Marlin 2.0
如何将自定义 G 代码或 M 代码添加到 Marlin 2.0?Marlin_main.cpp 文件不存在。
一般来说,对于 Marlin 2.0,事情组织得更好,但分成更多的文件。
2.0.x中的代码与1.1.x的老分支类似,G-code在 中解析gcode.cpp
,具体在process_parsed_command
:
void GcodeSuite::process_parsed_command(const bool no_ok/*=false*/)
在 case 语句中,从 G 代码文件中读取的代码被解析(解释)并G28()
调用适当的方法(例如调用void GcodeSuite::G28()
)
如果您想创建自己的代码,从那里开始可能是一个想法。还要考虑在 10,000 范围内使用不同的字母和/或代码,这样它就不会与新实现的 G 代码发生冲突。
gcode.cpp
223 行附近的文件以使用新的未使用编号。例如,这将为标签创建一个新的 G 代码功能G13
。 ...
// Handle a known G, M, or T
switch (parser.command_letter) {
case 'G': switch (parser.codenum) {
case 13: G13(); break;
case 0: case 1: G0_G1(
...
在gcode.h
add: 的 第 375 行 static void G13();
声明它。
就我而言,我正在从模拟系统读取值。所以我去src/temperatures
复制M105.cpp
了G13.cpp
。然后在我替换GcodeSuite::M105
为GcodeSuite::G13
. 我正在使用它来计算使用 [scale][1] 的东西的重量,但现在我只想测试功能,所以这是我的测试功能:
void GcodeSuite::G13() {
SERIAL_ECHOPGM(MSG_OK);
SERIAL_ECHOLNPGM("here is where weights are broadcast");
}
这也是我在 M105.cpp 的新副本(一个名为 G13.cpp 的新文件)中更改的唯一部分。文件中还有更多的东西,而不仅仅是这几行。
上传到板
当要进行八字打印并输入时,G13
我得到:
Send: G13
Recv: okhere is where weights are broadcast
可以做更多的工作以使其看起来不错,但这是困难的部分。[1]:https : //www.instructables.com/id/Arduino-Bathroom-Scale-With-50-Kg-Load-Cells-and-H/