菜单命令的 Marlin 固件函数调用位置?

3D打印 马林鱼 固件
2021-05-16 09:03:04

我在 Marlin_main.cpp 中找到了 pause_print() 函数,但是当我搜索其余文件时,我找不到调用此函数的文件。我希望在控制 LCD 菜单的文件中找到它,但它只存在于 main.c 文件中。

当我从 LCD 选择菜单选项时,哪个文件有函数调用?

为什么 pause_print() 没有作为函数调用出现在别处?

1个回答

该函数由 g 代码 M125 和 M600 调用

我可以ADVANCED_PAUSE_FEATUREM600 中找到定义configuration_adv.h和调用Conditionals_post.h,三次输入Marlin.h,根据需要引用 M600Marlin_Main.ccp并提到 2 次。

Marlin_Main.ccp还声明函数pause_print的行6482至6571.它的开始和结束是这些:

static bool pause_print(const float &retract, const point_t &park_point, const float &unload_length = 0,
                          const int8_t max_beep_count = 0, const bool show_lcd = false
  ) {
    if (move_away_flag) return false; // already paused

    #ifdef ACTION_ON_PAUSE
      SERIAL_ECHOLNPGM("//action:" ACTION_ON_PAUSE);
    #endif

[...]

    HOTEND_LOOP()
    thermalManager.start_heater_idle_timer(e, nozzle_timeout);

    return true;
  }

此函数确实定义了暂停状态,并且ADVANCED_PAUSE_FEATURE在某些情况下依赖于但什么叫它?很简单,两个调用都在Marlin_Main.ccp定义它的同一个调用中调用位于用于更换灯丝的函数中:

  • gcode_M125第 8534 行(保存当前位置并移动到灯丝更换位置)
  • gcode_M600第 9939 行(灯丝更换暂停:“M600 XYZE L”)