Attempt to workaround the M73 C0|D0 visual issue
This is an attempt to enable alternation of time to print finish and time
to color change even in the last minute of time to color change, i.e. be
able to print "0:00C".
The proposed solution leverages the capability of the current FW to read
float values from the C|D parameter. This could have the raw benefit of
being able still to alternate this time on the LCD as "0:00C" (or
"<1min") if the slicer sends a non-zero but <1 time right before the
color change.
Co-authored-by: D.R.racer <drracer@drracer.eu>
Co-authored-by: 3d-gussner <3d.gussner@gmail.com>
Instead of resetting the encoder status when homing or leveling, simply
exit the move/liveZ menu.
When transitioning from idle->printing, axis move shouldn't be allowed
as it would insert moves during a print. This is always wrong.
The menu must be always dismissed. Instead of checking all places where
the menu could be active, automatically dimiss the menu from within
_lcd_move when homing/MBL is happening. The long-push function and the
settings menu checks if "axis move" is possible, and thus
prevent the user to re-enter the menu already.
When doing the first layer calibration, the _lcd_babystep_z is
automatically brought back after MBL has completed.
Technically we should do the same when entering/exiting the paused state
in _lcd_move. However, it's better to dismiss _any_ menu in
stop_and_save_print_to_ram/restore_print_from_ram_and_continue instead.
To be done later...
Move axis queues movements, which disrupts a normal print, homing (when
XY is combined) or MBL.
Likewise, "Disable steppers" only makes sense when the printer is fully
idle.
Only allow such actions when the printer is not active and/or in the
paused state.
Further restrict babystep insertion when the lcd_update is enabled by
toggling homing_flag when probing Z (where Z shouldn't be touched
anyway as it would disrupt the measurement)
Also reset the encoder value during mesh leveling.
User can en/disable the fan check during print. This is very useful in case of false positive
fan errors to let the user to decide to finish print with "faulty" fan.
Another request from our Service dept. - the user shall be prevented
from skipping the intro wizard, because otherwise some preset/calibrated
features will look like not done - especially live-z calibration.
And since there are users, who send a machine to service to perform 1st
layer calibration only, they must not omit the Z-calibration at the
start after shipping.
- If `M73` `R,S,C,D` values set the LCD Info screen clock switchs between Remaining and Change time
- If Remaining time is 0 while Change time is >0 the clock switchs between Change time and actual printing time
- If Change is 0 while Remaining time is >0 the clock shows the Remaining time
- If both are 0 the clock shows the actual printing time
- `M73 C` values are shown in "Normal" mode
- `M73 D` values are shown in "Stealth" mode
- Changing the speed will try to calculate the espected times and show `?` behind `R` or `C`
- Add parameter `C` to gcode `M73`
- LCD Info screen switches to change time if last `M73` gcode contains `C` parameter
- Examples:
- `M73 P5 R120` will display on LCD ` SD 5% 02:00R ` if it is printing at 100% speed
- `M73 P5 R120 C60` will display on LCD ` SD 5% 01:00C ` if it is printing at 100% speed
Slicers can generate "Time to change/pause/user interaction" using `C<mins:0-65535>` parameter to "overwrite" the remaining print time.
To switch between time to change and remaining time just send in intervals `M73` with or without `C` parameter.
... looks like I've been able to reduce the code by 80B by using the
clamp999() function. There are other spots this function can be used as
well, I didn't touch those yet.
upon request from our Service dept. - it is to do the same stuff like
Shipping prep., but keep the printer's stats intact. Still, this has to
be verified and may undergo some further changes.
Depending if SD or USB/host print the firmware sends
- SD print: `// action:paused` or `// action:resumed` are send to inform USB/Host
- USB/host print: `// action:pause` or `// action:resume` are send to trigger the USB/host to handle it
- USB/host must handle `// action:pause` and `// action:resume` correctly to work
- Tested with Octoprint
- It handles every thing correctly
- Any combination of Octoprint and/or LCD `pause` and `resume` working correctly
- Tested with Pronterface
- It pauses BUT doesn't send the printer in pause position, and so it is not possible to `resume` from LCD menu
- I guess some Macros can fix that.
- Repetier Host/Server documentation shows that it should work. Not tested.
Could save 56 bytes in first step and additional 38 bytes adding `MSG_PAUSE_PRINT` to messages.c/.h
Updated `lang_en*.txt`
@todo Polish translation is 19 characters long (it still fits) BUT should be corrected to 18 chars.
- Start saving instructions as the whole PR was >1KB long.
- It turned out the compiler was unable to understand the core skipping
cycle and an ASM version had to be used.
- Add seekSet aware of the G-code filter
This is an extension/optimization of PR #2956.
It uses the cached 512B block buffer to avoid heavy-weight read() in SdBaseFile.
Even though this principle allowed the AVR to skip ~600KB of data within ~5 seconds,
the impact on code base is huge, especially into well proven and long-term stable
parts like reading a file from the SD card.
The sole purpose of this PR is to show/verify the possibility of the AVR CPU
in relation to adding thumbnails into MK3 G-codes.
Moreover, this PR shall not be merged unless the missing/commented features
are restored - especially file seeking and M84 search.
PFW-1175
Farmers request having the Change filament menu item always visible in
the main menu and located after the Live Adjust Z (which disappears
after the first few printed layers).
- remove the UI and related stuff to setting a farm number (the
communication protocol must remain intact)
- remove confirmation after print finished ("Print OK")
Both requests are highly welcome, since they allow for lowering the code
size by >1KB
PFW-963, PFW-927
- Changed DETECT_SUPERPINDA to SUPERPINDA_SUPPORT as on miniRAMo the thermistor readings below 30°C
aren't accurate egnough to determine if SUPERPINDA is connected or not
- Add LCD toggle menu Settings -> HW Setup -> SuperPINDA [Yes/No] to overwrite SuperPINDA detection
- If EEPROM_PINDA_TEMP_COMPENSTATION is empty = 0xff then detect SuperPINDA by checking thermistor
- If EEPROM_PINDA_TEMP_COMPENSTAION is 0 then forec enable for temperature compensation menues and functions
- If EEPROM_PINDA_TEMP_COMPENSATION is 1 then force disable for temperature compensation menues and functions
Preheating already raised Z to avoid scorching the PEI sheet, as does
filament loading/unloading to allow for excess material to be removed.
However, when loading/autoloading/unloading via the LCD with a cold
nozzle the preheating menu is performed before the carriage is raised,
leaving the carriage close to the sheet while heating the nozzle.
Pre-raise the carriage already while waiting, so that the subsequent
move is automagically skipped.
Set bFilamentWaitingFlag only once to perform both the LCD
initialization and raising to the appropriate height.
Should fix#2761
* Add missing translations
* Add missing CZ and IT translations
* Update CZ, FR, IT, ES translations
CZ thanks to @DRracer
FR thanks to Carlin Dcustom
ES tried myself
IT thanks to @wavexx
Only missing is PL
* Improve wording +change keys
* Add missing PL translations
* Fix copy paste error in Italian
fix double translations
* Make PL translation shorter
* Fix some length issues and capital letters
* Fixed again translations length issues
updated po files
* Update FR translation - thanks @awenelo
* Fix execution of lang-check.py
- Make lang-check.py executable
- Execute directly instead of specifying the python interpreter manually
("python" is no longer available on Debian, and would default to
version 2 prior to that despite being written for python 3)
* Fix permissions of translation files
Co-authored-by: D.R.racer <drracer@drracer.eu>
Co-authored-by: Yuri D'Elia <wavexx@thregr.org>
Factor-out MIN/MAXTEMP [BED/AMB] out of the error message, which is now
built at runtime instead.
Introduce two missing ultralcd functions lcd_setalertstatus and
lcd_updatestatus to handle regular strings.
246272 -> 246084 = 188 bytes saved
There is no known purpose of this call.
lcd_temp_calibration_set() is switching on/off pinda temperature compensation from LCD settings menu (this is called "Temp. cal." on LCD).
st_current_init() does nothing on Einsy board, it enables and sets motor current selecting outputs on Rambo board (it used to be called digipot in history)
* Update EEPROM_FSENSOR_PCB documentation
* Update IR sensor check
* Rename IR messags and add UNKNOWN state
* Update code to use new messages
* To be continued
* Move fsensor related things from ultralcd.h to fsensor.h
* Use defined Thresholds
* IR sensor auto detection "0.3 or older" and "0.4 or newer" when trigger status changes.
Typo fixes
Doxygen documentation
* Cleanup spaces
* Revert PF-build.sh changes
* re-add space in messages
* revert doxygen snytax
* Remove double _Undef
* Fix indentation and doxygen syntax
* Fix indentation
* Better message handling
* Fix indentation
* Fix indentation
* More indentation fixwa
* Extract common code into manage_inactivity_IR_ANALOG_Check
Saves ~60B of code
* Revert indentation changes on fsensor.cpp
* Keep the selftest IR sensor part disabled
Everything shall happen at runtime
* Fix indentation fsensor_update
* Fix another misleading indentation in fsensor_update
Co-authored-by: Alex Voinea <voinea.dragos.alexandru@gmail.com>
Co-authored-by: D.R.racer <drracer@drracer.eu>
* Combine repeated calls into functions with much less parameters -> 2KB
down.
* Save some bytes by removing unnecessary 1-character strings: "x" -> 'x'
used in SERIAL_xxx printing macros.
This is also saves some CPU cycles
* Fix compilation for MK25S and MK3
* Copy surrounding indentation
* Fix compilation for a rare HW setup
* rename mesh_planXX_buffer_line back to mesh_plan_buffer_line
* Remove active_extruder from remaining plan_buffer_line_destinationXYZE
calls and one more fix of indentation
* Add and update missing translations
- updated in Firmware/ files the missing `c=xx` column and `r=yy` rows.
- added missing translations to lang/lang_en*.txt
Everyone is developing and adding messages to serial and especially to LCD PLEASE add `//// c=xx` or `//// c=xx r=yy` comments.
Preparing translations files without that information is a pain in the ... and takes way more time for somebody else
to review to code as it would take you.
* No need to have `MSG_abcde` again in comments `////` in `messages.c`
* German translation
* Missed a space
* Use the same format as somewhere else
* French translation.
I am not a native French speaking person, so please excuse my mistakes I may have done.
* Spanish translation.
I am not a native Spanish speaking person, so please excuse my mistakes I may have done.
* CZ translation
* Fix typos
* Another fix
It is
Dimmwert and not Dim Wert
* Fix issues reported by `lang-check.py`
* Add "difficult" messages containing `%`
* Updated MSG and German translation
* removed a translation as it breaks the language selection
* No need to wait until any-key is pressed
* No need to wait any-key is pressed
* Fixed two LF issues
* Updated PO files
ready to be send to translators
* Add missing italian translations
* Improve some existing italian translations
* More italian fixes
* More italian fixes
* Add exceptions in editorconfig for po files to avoid recoding
* Fix typo
Thanks @DRracer for pointing out
* Italian translation by @wavexx
* Update po/new/*.po files
* Update after merging MK3 branch
* Update French translation and some c=xx comments
Big thanks to @awenelo @carlin57 for helping with the french translations and their comments.
* Update po files after French translation
* Fixed most `lang-check.py` reported translation errors for Czech and German.
Two Czech have to be reviewed as these are too long.
One German is correct as it is shown in c=20 r=2 but is 1 char longer than this to split the message.
One German translation seams to be to long but have to review the actual max length
* Fix `lang-check.py` Spanish translation errors
There have been quite lot TOO long messages,
Can't imagine that nobody every complained about that.
* Fix `lang-check.py` Italian translations errors
* Update not_tran and not_used files after fixing several translations
* Some more error fixes and update of `po` files
* Polish translation
* Czech updated
* Fix typo
* no need to translate `\x00` if it is the same
* Polish: Runouts->Koniec
* Polish: Runouts->Konce f ... hopefully the last change
* Added MK2.5/s auto power mode to eeprom doxygen
* Final updates.
- Compiled all versions with multi-languages
- Compiled all versions with EN_ONLY
- updated all /lang/po/Firmware*.* files
* Add crlf attributes for po files
As done for editorconfig, this similarly forces git to handle
po files consistently in DOS format.
* Further improvent of IT translations
* Updated translation
Added cleanup to PF-build.sh
* remove lang/not_tran* and lang/not_used mistakenly added into the PR
Co-authored-by: DRracer <drracer@seznam.cz>
Co-authored-by: Yuri D'Elia <wavexx@thregr.org>
Co-authored-by: D.R.racer <drracer@drracer.eu>
Move la10c_reset into finishAndDisableStepper, which is called in both
via lcd_print_stop() and indirectly via M84, saving some space.
M84 is checked-for to determine a complete file, so it's a superior
candidate to G80 (which some people avoid due to MBL issues).
* MK3S IR sensor detection and safe operational range fix
* debug, change of fsensor_IR_check behavior
* more doc + disable debug print voltage
* fix displaying MSG_04_OR_NEWER and MSG_03.... kudos to @ovariludovit
* better handling of fsensor not responding scenario
- Hide all prototypes related to PAT9125 to force all callers
to check for the proper sensor, since the handling differences
are substantial
- Remove unneeded lenght accounting from the stepper isr as as
consequence.
- Keep detailed soft failure counts for the MK3 on the "last print
failures" status screen, but fix build on variants without a PAT9125
by fixing the lcd stats function.