Merge pull request #9810 from thinkyhead/bf2_better_M503

[2.0.x] Mesh export in Bilinear + UBL M503
This commit is contained in:
Scott Lahteine 2018-02-26 01:00:44 -06:00 committed by GitHub
commit 1c13cc9b48
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 61 additions and 23 deletions

View File

@ -44,6 +44,29 @@
SERIAL_PROTOCOLPGM_P(port, "Unified Bed Leveling"); SERIAL_PROTOCOLPGM_P(port, "Unified Bed Leveling");
} }
void unified_bed_leveling::report_current_mesh(
#if NUM_SERIAL > 1
const int8_t port/*= -1*/
#endif
) {
if (!leveling_is_valid()) return;
SERIAL_ECHO_START_P(port);
SERIAL_ECHOLNPGM_P(port, " G29 I 999");
for (uint8_t x = 0; x < GRID_MAX_POINTS_X; x++)
for (uint8_t y = 0; y < GRID_MAX_POINTS_Y; y++)
if (!isnan(z_values[x][y])) {
SERIAL_ECHO_START_P(port);
SERIAL_ECHOPAIR_P(port, " M421 I", x);
SERIAL_ECHOPAIR_P(port, " J", y);
SERIAL_ECHOPGM_P(port, " Z");
SERIAL_ECHO_F_P(port, z_values[x][y], 6);
SERIAL_ECHOPAIR_P(port, " ; X", LOGICAL_X_POSITION(mesh_index_to_xpos(x)));
SERIAL_ECHOPAIR_P(port, ", Y", LOGICAL_Y_POSITION(mesh_index_to_ypos(y)));
SERIAL_EOL_P(port);
safe_delay(75); // Prevent Printrun from exploding
}
}
void unified_bed_leveling::report_state( void unified_bed_leveling::report_state(
#if NUM_SERIAL > 1 #if NUM_SERIAL > 1
const int8_t port/*= -1*/ const int8_t port/*= -1*/

View File

@ -107,6 +107,11 @@ class unified_bed_leveling {
const int8_t port = -1 const int8_t port = -1
#endif #endif
); );
static void report_current_mesh(
#if NUM_SERIAL > 1
const int8_t port = -1
#endif
);
static void report_state( static void report_state(
#if NUM_SERIAL > 1 #if NUM_SERIAL > 1
const int8_t port = -1 const int8_t port = -1

View File

@ -600,21 +600,8 @@
if (parser.seen('S')) { // Store (or Save) Current Mesh Data if (parser.seen('S')) { // Store (or Save) Current Mesh Data
g29_storage_slot = parser.has_value() ? parser.value_int() : storage_slot; g29_storage_slot = parser.has_value() ? parser.value_int() : storage_slot;
if (g29_storage_slot == -1) { // Special case, we are going to 'Export' the mesh to the if (g29_storage_slot == -1) // Special case, we are going to 'Export' the mesh to the
SERIAL_ECHOLNPGM("G29 I 999"); // host in a form it can be reconstructed on a different machine return report_current_mesh();
for (uint8_t x = 0; x < GRID_MAX_POINTS_X; x++)
for (uint8_t y = 0; y < GRID_MAX_POINTS_Y; y++)
if (!isnan(z_values[x][y])) {
SERIAL_ECHOPAIR("M421 I ", x);
SERIAL_ECHOPAIR(" J ", y);
SERIAL_ECHOPGM(" Z ");
SERIAL_ECHO_F(z_values[x][y], 6);
SERIAL_ECHOPAIR(" ; X ", LOGICAL_X_POSITION(mesh_index_to_xpos(x)));
SERIAL_ECHOPAIR(", Y ", LOGICAL_Y_POSITION(mesh_index_to_ypos(y)));
SERIAL_EOL();
}
return;
}
int16_t a = settings.calc_num_meshes(); int16_t a = settings.calc_num_meshes();

View File

@ -2098,6 +2098,7 @@ void MarlinSettings::reset(
#if ENABLED(MESH_BED_LEVELING) #if ENABLED(MESH_BED_LEVELING)
if (leveling_is_valid()) {
for (uint8_t py = 0; py < GRID_MAX_POINTS_Y; py++) { for (uint8_t py = 0; py < GRID_MAX_POINTS_Y; py++) {
for (uint8_t px = 0; px < GRID_MAX_POINTS_X; px++) { for (uint8_t px = 0; px < GRID_MAX_POINTS_X; px++) {
CONFIG_ECHO_START; CONFIG_ECHO_START;
@ -2108,6 +2109,7 @@ void MarlinSettings::reset(
SERIAL_EOL_P(port); SERIAL_EOL_P(port);
} }
} }
}
#elif ENABLED(AUTO_BED_LEVELING_UBL) #elif ENABLED(AUTO_BED_LEVELING_UBL)
@ -2119,6 +2121,27 @@ void MarlinSettings::reset(
SERIAL_ECHOLNPGM_P(port, " meshes.\n"); SERIAL_ECHOLNPGM_P(port, " meshes.\n");
} }
ubl.report_current_mesh(
#if ADD_PORT_ARG
port
#endif
);
#elif ENABLED(AUTO_BED_LEVELING_BILINEAR)
if (leveling_is_valid()) {
for (uint8_t py = 0; py < GRID_MAX_POINTS_Y; py++) {
for (uint8_t px = 0; px < GRID_MAX_POINTS_X; px++) {
CONFIG_ECHO_START;
SERIAL_ECHOPAIR_P(port, " G29 W I", (int)px + 1);
SERIAL_ECHOPAIR_P(port, " J", (int)py + 1);
SERIAL_ECHOPGM_P(port, " Z");
SERIAL_PROTOCOL_F_P(port, LINEAR_UNIT(z_values[px][py]), 5);
SERIAL_EOL_P(port);
}
}
}
#endif #endif
#endif // HAS_LEVELING #endif // HAS_LEVELING