MarlinFirmware / Marlin

Marlin is an optimized firmware for RepRap 3D printers based on the Arduino platform. Many commercial 3D printers come with Marlin installed. Check with your vendor if you need source code for your specific machine.
https://marlinfw.org
GNU General Public License v3.0
16.27k stars 19.23k forks source link

[BUG] MarlinUI - Change Filament menu doesn't show preheat options correctly #22360

Closed The-EG closed 3 years ago

The-EG commented 3 years ago

Did you test the latest bugfix-2.0.x code?

Yes, and the problem still exists.

Bug Description

If 'Change Filament' is selected while the hotend is cold, the preheat menu is shown but items can't be selected because the 'Change Filament' alert screen is repeated. The only way to exit is to select 'No'. The only way to initiate a filament change from the LCD is to preheat the hotend separately.

On a CR10_STOCKDISPLAY:

video ![cr10_stockdisplay](https://user-images.githubusercontent.com/7342077/125622046-f33188df-f596-458f-b825-958eaff50f65.gif)

On the Ender 3 v2's DWIN (#22211, note the preheat items are visible):

video ![dwin](https://user-images.githubusercontent.com/7342077/125622568-264acfdc-babe-4903-90b3-f50fce66b146.gif)

Bug Timeline

Not sure, found while testing #22211

Expected behavior

Selecting 'Change Filament' while the hotend is not heated should show the preheat items and allow for selection.

Actual behavior

Selecting a preheat item is not possible.

Steps to Reproduce

With ADVANCED_PAUSE_FEATURE enabled and FILAMENT_LOAD_UNLOAD_GCODES disabled:

  1. Start with nozzle temperature off
  2. Select 'Change Filament' from LCD menu

Version of Marlin Firmware

2.0.9.1 and bugfix-2.0.x

Printer model

Ender 3 Pro & Ender 3 V2

Electronics

No response

Add-ons

No response

Your Slicer

No response

Host Software

No response

Additional information & file uploads

Config: Ender3v2.zip

thisiskeithb commented 3 years ago

Interestingly, this works fine with REPRAP_DISCOUNT_SMART_CONTROLLER enabled.

The-EG commented 3 years ago

Interestingly, this works fine with REPRAP_DISCOUNT_SMART_CONTROLLER enabled.

A somewhat random question: do you happen to have FILAMENT_LOAD_UNLOAD_GCODES enabled?

thisiskeithb commented 3 years ago

A somewhat random question: do you happen to have FILAMENT_LOAD_UNLOAD_GCODES enabled?

I sure do! Here's a link to the full Marlin build.

The-EG commented 3 years ago

Confirmed: with FILAMENT_LOAD_UNLOAD_GCODES enabled this issue doesn't occur.

With that, 'Change Filament' becomes a submenu, and the 'Change Filament' item in that menu functions correctly.

So that's something.

edit: with that, I think the issue is https://github.com/MarlinFirmware/Marlin/blob/2.0.x/Marlin/src/lcd/menu/menu_main.cpp#L365-L374

I'll try to unravel all of the macros going on, but I bet it's not switching to the preheat screen correctly. Maybe a goto_previous_screen call somewhere it shouldn't be?

thisiskeithb commented 3 years ago

Fixed in https://github.com/MarlinFirmware/Marlin/pull/22370

github-actions[bot] commented 3 years ago

This issue has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.