[BUG] Replace calls to enqueue_now_P in anycubic_TFT.cpp with inject_P
hub-jba opened this issue · comments
Bug Description
In your 1.4.6 codebase you use the command enqueue_and_echo_commands_P() to send commands to the printer. From the comments in the code of Marlin 1.1.9 enqueue_and_echo_commands_P() actually aborts the current queue and queues your specified command immediately (see code snippet below). But in your Marlin 2.0 codebase you use the command queue.enqueue_now_P(). But from tracing this funciton it appears that enqueue_now_P() will enqueue this command on the end of the command queue, and if the queue is full (which happens if trying to do anything during an sdcard print) then the function just throws out any commands that don't fit on the queue silently.
The Marlin 2.0 code that does the closest thing to enqueue_and_echo_commands_P() is actually queue.inject_P(). Basically enqueue_now_P() will work for any commands from the TFT executed while the printer is not printing from SDCard (like say performing a bed levelling), but it won't work during an SDcard print.
My Configurations
Unchanged from your repository master
Steps to Reproduce
- Install Marlin 2.0 codebase
- Do an M502 and M500
- Load backed up M92 ,G29, M301, M304 values and store with m500
- Feed filament into the extruder but bypass filament sensor
- Add a small strip of filament in the filament sensor so that it does indicate filament outage
- Start any 3d print
- Pull the small strip of filament out of the filament sensor to trigger a filament runout
Expected behavior:
- Filament runout beeps
- Print head parks
- A prompt on screen telling you the filament runout has been triggered
Actual behavior:
- Printhead stops moving.
- No prompt on screen, no beep and no parked head
Additional Information
Code signature of original call in Marlin 1.1.9
/**
* Record one or many commands to run from program memory.
* Aborts the current queue, if any.
* Note: drain_injected_commands_P() must be called repeatedly to drain the commands afterwards
*/
void enqueue_and_echo_commands_P(const char const pgcode) {
This issue is stale because it has been open 30 days with no activity. Remove stale label / comment or this will be closed in 5 days.