bigtreetech / BIQU-B1

143 stars 104 forks source link

[BUG] Screen switches from Marlin mode to TFT when confirming a print. #6

Closed blueeagle69 closed 3 years ago

blueeagle69 commented 3 years ago

Hi.

I'm experiencing an issue with the TFT. I updated the firmware from the Bigtreetech Touch Screen repo. Originally I had no issues, and then after some others reported the same issue, my screen started acting up too.

If I select a print in Marlin mode, as soon as I click confirm the screen immediately switches back to TFT mode. When this happens the Stop button is unresponsive, also touch sounds don't work either. The only buttons that do work are Pause etc. I am then locked in that mode until the print finishes or I press the Reset button (That bit is normal of course, because you can't mode switch when the printer is printing). When the screen reboots it takes me back to Marlin mode. Which makes me believe the screen thinks it's still in Marlin mode, as it remembers the last mode you used when powering off the printer etc. I tried things such as reset the screen settings, also hard resetting it by using the Reset.txt file. No luck. I'm currently taking part in the following thread here; https://github.com/bigtreetech/BIGTREETECH-TouchScreenFirmware/issues/1058

They invited me to post here too just in case. The only firmware that doesn't mode switch from Marlin when confirming a print is the binary from this (B1 repo) Originally the firmware from the Bigtreetech Touch Screen repo didn't cause this issue. But because the version number hasn't changed I am unable to put my finger on it. The guys over on the other repo are also trying to track down the issue with certain screens. But I do know that the build dated 220-8-18 doesn't have this issue, and is the one I have reverted to.

Thanks.

ANT-NONIUS commented 2 years ago

Had the same problem with TFT35 E3 V3 xx.27.Master + marlin 2.0.9.3-bugfix

Solved the issue adding this code in TFT>src>User>API>printing.c :

// get gcode command from TFT (SD card or USB stick)

void loopPrintFromTFT(void) {

ifdef HAS_EMULATOR

  if (MENU_IS(menuMarlinMode)) return;

endif

.....

Maybe it's not the most elegant way to solve it but it did the trick.