Расположение вызова функции прошивки Marlin для команд меню

Я нашел функцию pause_print() в Marlin_main.cpp но когда я просматриваю остальные файлы, я не могу найти файл, который вызывает эту функцию. Я ожидал найти его где-нибудь в файле, который управляет меню ЖК-дисплея, но он существует только в главном.

В каком файле содержатся вызовы функций, которые происходят, когда я выбираю пункт меню на ЖК-дисплее?

И почему функция pause_print() не отображается в другом месте как вызов функции?

, 👍2

Обсуждение

Это связано с тем, что эта функция не имеет ничего общего с приостановкой работы принтера в меню дисплея. Эта функция используется функцией, которая приостанавливает работу принтера во время смены филамента или остановки головки на паузе. Используется M125 и M600., @0scar

Ааа. Спасибо, это моя ошибка. Я по глупости подумал, что функция, которая приостанавливает работу принтера, будет называться "пауза". Вы случайно не знаете, где находится этот вызов функции? Спасибо, @cds333

Почему вы удалили свой другой вопрос (добавление пунктов меню)? Это был правильный ответ, я уже начал отвечать на этот вопрос!, @0scar


1 ответ


2

Эта функция вызывается g-кодами M125 и M600

Я мог бы найти ADVANCED_PAUSE_FEATURE, определенный в configuration_adv.h и вызванный в Conditionals_post.h, трижды в Marlin.h, на который ссылаются по мере необходимости для M600 в Marlin_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, который его определяет. Вызовы находятся в функциях, которые используются для изменения филамента:

  • Строка 8534 gcode_M125 (Сохранить текущее положение и перейти в положение изменения филамента)
  • Строка 9939 gcode_M600 (Пауза для смены нити: "M600 X Y Z E L")

,

Спасибо! Причина, по которой я спрашиваю, заключается в том, что мой Ender 3 обычно парковал узел сопла, когда я делал паузу, что позволяло мне проверить свой отпечаток. Теперь, после того как я прошил generic marlin, этого не происходит, он просто перестает печатать, но сопло не двигается ......................................................................................................................................................... Я решил, что просто отредактирую один из параметров, переданных при вызове функции, но если я не смогу найти, где он вызывается при доступе из меню, то я не смогу этого сделать. Так как же мне это исправить? Спасибо, @cds333

@cds333 это другой вопрос. Для этого откройте новый вопрос., @Trish