Add Set parameter in M78 Statistics gcode (#4809)
* Add Set Statistics * EEPROM_FILAMENTUSED is in centimeter and not meter Fix few things * Fix typo
This commit is contained in:
parent
0fb17b1643
commit
d8d058a63b
|
|
@ -106,6 +106,9 @@ void Config_PrintSettings(uint8_t level)
|
||||||
#ifdef THERMAL_MODEL
|
#ifdef THERMAL_MODEL
|
||||||
thermal_model_report_settings();
|
thermal_model_report_settings();
|
||||||
#endif
|
#endif
|
||||||
|
printf_P(PSTR(
|
||||||
|
"%SStatistics:\n%S M78 S%lu T%lu\n"),
|
||||||
|
echomagic, echomagic, eeprom_read_dword((uint32_t *)EEPROM_FILAMENTUSED), eeprom_read_dword((uint32_t *)EEPROM_TOTALTIME));
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5241,16 +5241,41 @@ void process_commands()
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
### M78 - Show statistical information about the print jobs <a href="https://reprap.org/wiki/G-code#M78:_Show_statistical_information_about_the_print_jobs">M78: Show statistical information about the print jobs</a>
|
### M78 - Get/set statistics <a href="https://reprap.org/wiki/G-code#M78:_Show_statistical_information_about_the_print_jobs">M78: Show statistical information about the print jobs</a>
|
||||||
|
|
||||||
|
#### Usage
|
||||||
|
|
||||||
|
M78 [ S | T ]
|
||||||
|
|
||||||
|
#### Parameters
|
||||||
|
- `S` - Set used filament length in cm
|
||||||
|
- `T` - Set total print time in minutes
|
||||||
*/
|
*/
|
||||||
case 78:
|
case 78:
|
||||||
{
|
{
|
||||||
// @todo useful for maintenance notifications
|
const char *_m_fil;
|
||||||
SERIAL_ECHOPGM("STATS ");
|
const char *_m_time;
|
||||||
SERIAL_ECHO(eeprom_read_dword((uint32_t *)EEPROM_TOTALTIME));
|
uint32_t _cm = 0;
|
||||||
SERIAL_ECHOPGM(" min ");
|
uint32_t _min = 0;
|
||||||
SERIAL_ECHO(eeprom_read_dword((uint32_t *)EEPROM_FILAMENTUSED));
|
|
||||||
SERIAL_ECHOLNPGM(" cm.");
|
if (printJobOngoing()) {
|
||||||
|
_m_fil = _O(MSG_FILAMENT_USED);
|
||||||
|
_m_time = _O(MSG_PRINT_TIME);
|
||||||
|
_cm = (uint32_t)total_filament_used / 1000;
|
||||||
|
_min = print_job_timer.duration() / 60;
|
||||||
|
} else {
|
||||||
|
if (code_seen('S')) {
|
||||||
|
eeprom_update_dword_notify((uint32_t *)EEPROM_FILAMENTUSED, code_value());
|
||||||
|
}
|
||||||
|
if (code_seen('T')) {
|
||||||
|
eeprom_update_dword_notify((uint32_t *)EEPROM_TOTALTIME, code_value());
|
||||||
|
}
|
||||||
|
_m_fil = _O(MSG_TOTAL_FILAMENT);
|
||||||
|
_m_time = _O(MSG_TOTAL_PRINT_TIME);
|
||||||
|
_cm = eeprom_read_dword((uint32_t *)EEPROM_FILAMENTUSED);
|
||||||
|
_min = eeprom_read_dword((uint32_t *)EEPROM_TOTALTIME);
|
||||||
|
}
|
||||||
|
printf_P(_N("%S:%lu cm\n%S:%lu min\n"),_m_fil,_cm,_m_time,_min);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -9153,7 +9178,7 @@ void setPwmFrequency(uint8_t pin, int val)
|
||||||
#endif //FAST_PWM_FAN
|
#endif //FAST_PWM_FAN
|
||||||
|
|
||||||
void save_statistics() {
|
void save_statistics() {
|
||||||
uint32_t _previous_filament = eeprom_init_default_dword((uint32_t *)EEPROM_FILAMENTUSED, 0); //_previous_filament unit: meter
|
uint32_t _previous_filament = eeprom_init_default_dword((uint32_t *)EEPROM_FILAMENTUSED, 0); //_previous_filament unit: centimeter
|
||||||
uint32_t _previous_time = eeprom_init_default_dword((uint32_t *)EEPROM_TOTALTIME, 0); //_previous_time unit: min
|
uint32_t _previous_time = eeprom_init_default_dword((uint32_t *)EEPROM_TOTALTIME, 0); //_previous_time unit: min
|
||||||
|
|
||||||
uint32_t time_minutes = print_job_timer.duration() / 60;
|
uint32_t time_minutes = print_job_timer.duration() / 60;
|
||||||
|
|
|
||||||
|
|
@ -108,7 +108,7 @@ static_assert(sizeof(Sheets) == EEPROM_SHEETS_SIZEOF, "Sizeof(Sheets) is not EEP
|
||||||
| ^ | ^ | ^ | fah 250 | ^ | needs XYZ calibration | ^ | ^
|
| ^ | ^ | ^ | fah 250 | ^ | needs XYZ calibration | ^ | ^
|
||||||
| ^ | ^ | ^ | 00h 0 | ^ | Unknown (legacy) | ^ | ^
|
| ^ | ^ | ^ | 00h 0 | ^ | Unknown (legacy) | ^ | ^
|
||||||
| 0x0FF5 4085 | uint16 | _EEPROM_FREE_NR12_ | ??? | ff ffh 65535 | _Free EEPROM space_ | _free space_ | D3 Ax0ff5 C2
|
| 0x0FF5 4085 | uint16 | _EEPROM_FREE_NR12_ | ??? | ff ffh 65535 | _Free EEPROM space_ | _free space_ | D3 Ax0ff5 C2
|
||||||
| 0x0FF1 4081 | uint32 | EEPROM_FILAMENTUSED | ??? | 00 00 00 00h 0 __S/P__| Filament used in meters | ??? | D3 Ax0ff1 C4
|
| 0x0FF1 4081 | uint32 | EEPROM_FILAMENTUSED | ??? | 00 00 00 00h 0 __S/P__| Filament used in centimeters | ??? | D3 Ax0ff1 C4
|
||||||
| 0x0FED 4077 | uint32 | EEPROM_TOTALTIME | ??? | 00 00 00 00h 0 __S/P__| Total print time in minutes | ??? | D3 Ax0fed C4
|
| 0x0FED 4077 | uint32 | EEPROM_TOTALTIME | ??? | 00 00 00 00h 0 __S/P__| Total print time in minutes | ??? | D3 Ax0fed C4
|
||||||
| 0x0FE5 4069 | float | EEPROM_BED_CALIBRATION_CENTER | ??? | ff ff ff ffh | ??? | ??? | D3 Ax0fe5 C8
|
| 0x0FE5 4069 | float | EEPROM_BED_CALIBRATION_CENTER | ??? | ff ff ff ffh | ??? | ??? | D3 Ax0fe5 C8
|
||||||
| 0x0FDD 4061 | float | EEPROM_BED_CALIBRATION_VEC_X | ??? | ff ff ff ffh | ??? | ??? | D3 Ax0fdd C8
|
| 0x0FDD 4061 | float | EEPROM_BED_CALIBRATION_VEC_X | ??? | ff ff ff ffh | ??? | ??? | D3 Ax0fdd C8
|
||||||
|
|
|
||||||
|
|
@ -2367,7 +2367,7 @@ void lcd_menu_statistics()
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
uint32_t _filament = eeprom_read_dword((uint32_t *)EEPROM_FILAMENTUSED); // in meters
|
uint32_t _filament = eeprom_read_dword((uint32_t *)EEPROM_FILAMENTUSED); // in centimeters
|
||||||
uint32_t _time = eeprom_read_dword((uint32_t *)EEPROM_TOTALTIME); // in minutes
|
uint32_t _time = eeprom_read_dword((uint32_t *)EEPROM_TOTALTIME); // in minutes
|
||||||
uint8_t _hours, _minutes;
|
uint8_t _hours, _minutes;
|
||||||
uint32_t _days;
|
uint32_t _days;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue