From 3a271d7786d05815f44342baf53363811314e27d Mon Sep 17 00:00:00 2001 From: Joacim Breiler Date: Sun, 9 Apr 2023 19:57:47 +0200 Subject: [PATCH 1/2] Now parses snapshot from GRBL version --- .../firmware/grbl/GrblVersion.java | 4 ++-- .../firmware/grbl/GrblVersionTest.java | 18 ++++++++++++++++++ 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/ugs-core/src/com/willwinder/universalgcodesender/firmware/grbl/GrblVersion.java b/ugs-core/src/com/willwinder/universalgcodesender/firmware/grbl/GrblVersion.java index 4ea5f1890a..7e66a3eaf4 100644 --- a/ugs-core/src/com/willwinder/universalgcodesender/firmware/grbl/GrblVersion.java +++ b/ugs-core/src/com/willwinder/universalgcodesender/firmware/grbl/GrblVersion.java @@ -10,7 +10,7 @@ */ public class GrblVersion { public static final GrblVersion NO_VERSION = new GrblVersion(""); - public static final String VERSION_REGEX = "^\\[VER:[v]?(?(?\\d+)\\.(?\\d+))?(?.)?(\\.(?\\d+))?(:(?.*))?]$"; + public static final String VERSION_REGEX = "^\\[VER:[v]?(?(?\\d+)\\.(?\\d+)(?.)?(-(?[a-bA-Z]+))?)?(\\.(?[0-9a-z]+))?(:(?.*))?]$"; private final double versionNumber; // The 0.8 in '[VER:0.8c.20220620:Machine1]' private final Character versionLetter; // The c in '[VER:0.8c.20220620:Machine1]' private final String buildDate; // The 20220620 in '[VER:0.8c.20220620:Machine1]' @@ -25,7 +25,7 @@ public GrblVersion(String versionString) { Pattern versionPattern = Pattern.compile(VERSION_REGEX); Matcher matcher = versionPattern.matcher(versionString); if (matcher.matches()) { - versionNumber = Double.parseDouble(StringUtils.defaultString(matcher.group("version"), "0.0")); + versionNumber = Double.parseDouble(StringUtils.defaultString(matcher.group("major"), "0") + "." + StringUtils.defaultString(matcher.group("minor"), "0")); versionLetter = StringUtils.defaultString(matcher.group("char"), "-").charAt(0); buildDate = StringUtils.defaultString(matcher.group("date"), ""); machineName = StringUtils.defaultString(matcher.group("name"), ""); diff --git a/ugs-core/test/com/willwinder/universalgcodesender/firmware/grbl/GrblVersionTest.java b/ugs-core/test/com/willwinder/universalgcodesender/firmware/grbl/GrblVersionTest.java index fb5ccbfdfd..98c6dc5d19 100644 --- a/ugs-core/test/com/willwinder/universalgcodesender/firmware/grbl/GrblVersionTest.java +++ b/ugs-core/test/com/willwinder/universalgcodesender/firmware/grbl/GrblVersionTest.java @@ -51,6 +51,24 @@ public void parseVersionStringWithoutChar() { assertEquals("Some string", version.getMachineName()); } + @Test + public void parseVersionStringWithSnapshotBuildDateAndMachine() { + GrblVersion version = new GrblVersion("[VER:1.1h-XCP.20220314a:abc]"); + assertEquals(1.1d, version.getVersionNumber(), 0.001); + assertEquals('h', version.getVersionLetter().charValue()); + assertEquals("20220314a", version.getBuildDate()); + assertEquals("abc", version.getMachineName()); + } + + @Test + public void parseVersionStringWithSnapshot() { + GrblVersion version = new GrblVersion("[VER:1.1h-XCP]"); + assertEquals(1.1d, version.getVersionNumber(), 0.001); + assertEquals('h', version.getVersionLetter().charValue()); + assertEquals("", version.getBuildDate()); + assertEquals("", version.getMachineName()); + } + @Test public void parseOldVersion() { GrblVersion version = new GrblVersion("[VER:0.7]"); From 23239e1bac4fcfe4842f46daf820072b99e1282a Mon Sep 17 00:00:00 2001 From: Joacim Breiler Date: Tue, 11 Apr 2023 17:44:26 +0200 Subject: [PATCH 2/2] Prevent the action from overwriting the firmware setting --- .../willwinder/ugs/nbp/core/actions/FirmwareAction.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/ugs-platform/ugs-platform-ugscore/src/main/java/com/willwinder/ugs/nbp/core/actions/FirmwareAction.java b/ugs-platform/ugs-platform-ugscore/src/main/java/com/willwinder/ugs/nbp/core/actions/FirmwareAction.java index db064947dc..055b6f8ea5 100644 --- a/ugs-platform/ugs-platform-ugscore/src/main/java/com/willwinder/ugs/nbp/core/actions/FirmwareAction.java +++ b/ugs-platform/ugs-platform-ugscore/src/main/java/com/willwinder/ugs/nbp/core/actions/FirmwareAction.java @@ -75,6 +75,7 @@ private void setFirmware() { } private void firmwareUpdated() { + System.out.println("firmware updated " + backend.getSettings().getFirmwareVersion()); firmwareCombo.setSelectedItem( backend.getSettings().getFirmwareVersion()); } @@ -99,9 +100,10 @@ public Component getToolbarPresenter() { // Load firmware configuration in its own thread to make sure that // the splash screen is not covering any firmware upgrade dialogs - ThreadHelper.invokeLater(this::loadFirmwareSelector); - - firmwareCombo.addActionListener(a -> setFirmware()); + ThreadHelper.invokeLater(() -> { + loadFirmwareSelector(); + firmwareCombo.addActionListener(a -> setFirmware()); + }); } return c; }