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.29k stars 19.24k forks source link

Marlin 2.0.9.2 does not compile with Fysetc 81050 (FTDI EVE FT810) LCD enabled #23126

Closed maralb1970 closed 2 years ago

maralb1970 commented 3 years ago

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

Yes, and the problem still exists.

Bug Description

Marlin 2.0.9.2 does not compile with Fysetc FTDI EVE 81050 enabled. Using a Fysetc S6 V2.0 controller. With just taking the default confg + config_adv files; enabling the Fysetc S6, and Fysetc 81050 (+S6 pinmap) It throws the following error:

In file included from Marlin\src\lcd\extui\ftdi_eve_touch_ui\cocoa_press\../language/language.h:23,
                 from Marlin\src\lcd\extui\ftdi_eve_touch_ui\cocoa_press\../screens.h:30,
                 from Marlin\src\lcd\extui\ftdi_eve_touch_ui\cocoa_press\move_e_screen.cpp:25:

Marlin\src\lcd\extui\ftdi_eve_touch_ui\cocoa_press\../language/language_en.h:148:24: error: redefinition of 'const char Language_en::MSG_MESH_VIEW []'
  148 |   PROGMEM Language_Str MSG_MESH_VIEW                = u8"View Mesh";
      |                        ^~~~~~~~~~~~~

In file included from d:\leo_firmware_projects\leo_2092_ftdi\marlin-2.0.x\marlin\src\core\language.h:563,
                 from Marlin\src\lcd\extui\ftdi_eve_touch_ui\cocoa_press\../../../../inc/MarlinConfig.h:53,
                 from Marlin\src\lcd\extui\ftdi_eve_touch_ui\cocoa_press\../../ui_api.h:45,
                 from Marlin\src\lcd\extui\ftdi_eve_touch_ui\cocoa_press\../compat.h:31,
                 from Marlin\src\lcd\extui\ftdi_eve_touch_ui\cocoa_press\../config.h:28,
                 from Marlin\src\lcd\extui\ftdi_eve_touch_ui\cocoa_press\move_e_screen.cpp:24:

d:\leo_firmware_projects\leo_2092_ftdi\marlin-2.0.x\marlin\src\lcd\language\language_en.h:160:8: note: 'const char Language_en::MSG_MESH_VIEW [10]' previously defined here     
  160 |   LSTR MSG_MESH_VIEW                      = _UxGT("View Mesh");
      |        ^~~~~~~~~~~~~

After Outcommenting line 148 in the ....Language_en.h Marlin 2.0.9.2 does compile.

Trying Bugfix 2.0.9.2 throws the same error as above. When Outcommenting the same Line another issue appears:

c:/users/user0/.platformio/packages/toolchain-gccarmnoneeabi/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/bin/ld.exe: .pio/build/FYSETC_S6_8000/src/src/lcd/extui/ui_api.cpp.o: in function `ExtUI::onStatusChanged(__FlashStringHelper const*)':
D:\LEO_Firmware_Projects\GitCompileTest\Marlin-bugfix-2.0.x/Marlin\src\lcd\extui/ui_api.cpp:1081: multiple definition of `ExtUI::onStatusChanged(__FlashStringHelper const*)'; .pio/build/FYSETC_S6_8000/src/src/lcd/extui/ftdi_eve_touch_ui/ftdi_eve_extui.cpp.o:D:\LEO_Firmware_Projects\GitCompileTest\Marlin-bugfix-2.0.x/Marlin\src\lcd\extui\ftdi_eve_touch_ui/ftdi_eve_extui.cpp:74: first defined here

I played with the //#define TOUCH_UI_USE_UTF8 in config_adv.h but this didn't solve anything either:

Marlin\src\lcd\extui\ftdi_eve_touch_ui\ftdi_eve_lib\extended\unicode\unicode.cpp:77:15: error: redefinition of 'FTDI::utf8_char_t FTDI::get_utf8_char_and_inc(char*&)'

What is going on here? I might scr3w something up myself and if I did, my apologies for that. I am not a coder but a hardware dinosaur....I do understand some Motorola 8-bit assembly and low-level C code.......

Bug Timeline

Trying to get an FTDI EVE (Fysetc 81050) display working in Marlin 2.0.9.2. Marlin builds successfully up to Marlin 2.0.9. Marlin 2.0.9.1 builds after applying the fixes commited 11 september.

Expected behavior

I expect it to compile.

Actual behavior

It does not compile.

Steps to Reproduce

Set up Platform I/O to Fysetc S6 8000 Environment Set up Config.h for Fysetc S6, set serial port 1 to -1and enable FTDI EVE Set up Config_Adv.h for Fysetc 81050 screen and S6 pinm cofig_files.zip ap

Version of Marlin Firmware

Marlin 2.0.9.2

Printer model

No response

Electronics

Fysetc S6 V2.0

Add-ons

No response

Bed Leveling

ABL Bilinear mesh

Your Slicer

Prusa Slicer

Host Software

No response

Additional information & file uploads

No response

maralb1970 commented 2 years ago

The problem is not specifcally related to the Fysetc display. Enabling any of the FTDI EVE based displays results in the same error. There seems to be a conflict between 2 language header files:

\Marlin\src\lcd\extui\ftdi_eve_touch_ui\language\language_en.h

and

\Marlin\src\lcd\language\language_en.h

ellensp commented 2 years ago

Give this PR a try

maralb1970 commented 2 years ago

Thanks! Outcommenting these lines as done in this PR certainly seems to help. Does it affect any functionality? On the desk it seems to run fine, I will do some "real life" testing soon. IMG_4102

ellensp commented 2 years ago

This PR has been merged. closing

rusviktorger commented 2 years ago

English Hi I also have the same error. But I don't understand what you mean with (Give this PR a try). I have now downloaded the latest Marlin firmware (CONFIGURATION_H_VERSION 02000903). And only changed the most necessary.:

Default_envs = FYSETC_S6_8000

define SERIAL_PORT 1

define MOTHERBOARD BOARD_FYSETC_S6_V2_0

define TOUCH_UI_FTDI_EVE

define LCD_FYSETC_TFT81050 // FYSETC with 5" (800x480)

define S6_TFT_PINMAP // FYSETC S6 pin mapping

But it doesn't work. Could you explain to me what exactly you did?

Neues Textdokument (2).txt

German Hallo ich habe auch den selben fehler. Aber ich verstehe nicht was ihr mein mit (Give this PR a try). Ich habe mir jetzt aktuellste Marlin firmware runtergeladen (CONFIGURATION_H_VERSION 02000903). Und nur das nötigste verändert.:

Default_envs = FYSETC_S6_8000

define SERIAL_PORT 1

define MOTHERBOARD BOARD_FYSETC_S6_V2_0

define TOUCH_UI_FTDI_EVE

define LCD_FYSETC_TFT81050 // FYSETC with 5" (800x480)

define S6_TFT_PINMAP // FYSETC S6 pin mapping

Aber es funktioniert nicht. Könntet ihr mir erklären was ihr genau gemacht habt ?

Neues Textdokument (2).txt

ellensp commented 2 years ago

https://github.com/MarlinFirmware/Marlin/pull/23424 added a global LSTR MSG_PLEASE_WAIT = _UxGT("Please wait..."); breaking this screen, again
Just comment out PROGMEM Language_Str MSG_PLEASE_WAIT = u8"Please wait..."; from Marlin/src/lcd/extui/ftdi_eve_touch_ui/language/language_en.h

rusviktorger commented 2 years ago

English Thank you for your prompt reply. I now have in language_en.h (Marlin/src/lcd/extui/ftdi_eve_touch_ui/language/language_en.h) The line( 119 //PROGMEM Language_Str MSG_PLEASE_WAIT = u8"Please wait...";) is commented out

What do you mean by (added a global LSTR MSG_PLEASE_WAIT = _UxGT("Please wait...");) Where should I paste it? Maybe him? (Marlin/src/lcd/extui/ftdi_eve_touch_ui/language/language_en.h) How should I insert it, maybe like this? (#define LSTR MSG_PLEASE_WAIT = _UxGT("Please wait...");

German danke für die schnelle antwort. Ich habe jetzt im language_en.h (Marlin/src/lcd/extui/ftdi_eve_touch_ui/language/language_en.h) Die zeille( 119 //PROGMEM Language_Str MSG_PLEASE_WAIT = u8"Please wait...";) auskommentiert

Was meinen Sie mit (added a global LSTR MSG_PLEASE_WAIT = _UxGT("Please wait...");) Wohin soll ich die einfügen? Vielleicht ihn? (Marlin/src/lcd/extui/ftdi_eve_touch_ui/language/language_en.h) Wie soll ich die einfügen, vielleicht so?? (#define LSTR MSG_PLEASE_WAIT = _UxGT("Please wait...");

ellensp commented 2 years ago

You don't insert anything, just delete the line from Marlin/src/lcd/extui/ftdi_eve_touch_ui/language/language_en.h.

rusviktorger commented 2 years ago

English

A big thank you for the help The display works.

Unfortunately, I found that not everything is supported, for example: -AUTO_BED_LEVELING_BILINEAR (works limited) -AUTO_BED_LEVELING_UBL (feature not at all) -PSU_CONTROL (cannot be selected in the display)

I have now set AUTO_BED_LEVELING_BILINEAR. Try to print something tomorrow. Do you know if there is a firmware update for the display? So the functions mentioned above work

20220123_191717

German

Ein großes Dankeschön für die Hilfe Das Display funktioniert.

Leider habe ich festgestellt das nicht alles unterstützt wird zum Beispiel: -AUTO_BED_LEVELING_BILINEAR (funktioniert eingeschränkt) -AUTO_BED_LEVELING_UBL (Funktion überhaupt nicht) -PSU_CONTROL (ist nicht im Display wählbar)

Ich habe jetzt AUTO_BED_LEVELING_BILINEAR eingestellt. Versuche morgen was zu drucken. Wissen Sie vielleicht ob es eine Firmware update für das Display gibt? Sodas die oben genahten Funktionen funktionieren

ellensp commented 2 years ago

All touch screen are limited. They support just enough feature that the original printer had and that is it.

maralb1970 commented 2 years ago

Just wondering as I am not a software engineer: is outcommenting these lines in the FTDI_language_en.h file a "fix" or a "bush fix"? Is it affecting functionality? Are the UTF8 string definitions in the FTDI_language_en.h file an addition to those defined in the other Marlin_language_EN.h file? Or are these 2 seperate worlds?

ellensp commented 2 years ago

after the fix. The definition just moved from one file to another. From being just for this screen, to available to all screens

maralb1970 commented 2 years ago

Clear! Thank you ellensp :-)

github-actions[bot] commented 2 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.