From 17d6e416ed2dd3e350eefa61032c042f08c126ae Mon Sep 17 00:00:00 2001 From: Sophia Beluli Date: Thu, 15 Feb 2024 14:55:44 -0500 Subject: [PATCH 01/15] added disconnect recovery for alarms; if job is running when alarm happens, force workflow stop --- src/app/sagas/controllerSagas.js | 13 +++++++++++-- src/server/controllers/Grblhal/GrblHalController.js | 6 +++++- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/src/app/sagas/controllerSagas.js b/src/app/sagas/controllerSagas.js index 04f48a357..4b9acfc9e 100644 --- a/src/app/sagas/controllerSagas.js +++ b/src/app/sagas/controllerSagas.js @@ -59,6 +59,7 @@ import { ERROR, JOB_TYPES, JOB_STATUS, + GRBL, } from 'app/constants'; import { connectToLastDevice } from 'app/containers/Firmware/utils/index'; import { updateWorkspaceMode } from 'app/lib/rotary'; @@ -616,7 +617,9 @@ export function* initialize() { pubsub.publish('firmware:update', status); }); - controller.addListener('error', (error) => { + controller.addListener('error', (error, wasRunning) => { + const homingEnabled = _get(reduxStore.getState(), 'controller.settings.settings.$22'); + if (ALARM_ERROR_TYPES.includes(error.type)) { updateAlarmsErrors(error); } @@ -624,6 +627,12 @@ export function* initialize() { // window.ipcRenderer.send('logError:electron', error); // } pubsub.publish('error', error); + + // set need recovery for start from line when alarm happens + if (error.type === ALARM && wasRunning) { + console.log(error.lineNumber); + pubsub.publish('disconnect:recovery', error.lineNumber, homingEnabled); + } }); controller.addListener('wizard:next', (stepIndex, substepIndex) => { @@ -647,7 +656,7 @@ export function* initialize() { } } - if (type === FILE_TYPE.FOUR_AXIS && controller.type === 'Grbl') { + if (type === FILE_TYPE.FOUR_AXIS && controller.type === GRBL) { Confirm({ title: '4 Axis File Loaded', content: 'G-Code contains 4 simultaneous axis commands which are not supported at this time and cannot be run.', diff --git a/src/server/controllers/Grblhal/GrblHalController.js b/src/server/controllers/Grblhal/GrblHalController.js index bb1edd439..dc32e380c 100644 --- a/src/server/controllers/Grblhal/GrblHalController.js +++ b/src/server/controllers/Grblhal/GrblHalController.js @@ -816,6 +816,10 @@ class GrblHalController { if (alarm) { // Grbl v1.1 + const isRunning = this.workflow.isRunning(); + if (isRunning) { + this.workflow.stop(); + } this.emit('serialport:read', `ALARM:${code} (${alarm.message})`); this.emit('error', { type: ALARM, @@ -825,7 +829,7 @@ class GrblHalController { lineNumber: isFileError ? received + 1 : '', origin: errorOrigin, controller: GRBLHAL, - }); + }, isRunning); // Force propogation of current state on alarm this.state = this.runner.state; From ee8b697346d855cc62c864cf257eb8fb19dfdf01 Mon Sep 17 00:00:00 2001 From: Sophia Beluli Date: Wed, 28 Feb 2024 15:14:25 -0500 Subject: [PATCH 02/15] fix jog stop shortcut --- src/app/widgets/JogControl/index.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/app/widgets/JogControl/index.jsx b/src/app/widgets/JogControl/index.jsx index 1083e9d5b..f842e38e5 100644 --- a/src/app/widgets/JogControl/index.jsx +++ b/src/app/widgets/JogControl/index.jsx @@ -743,7 +743,7 @@ class AxesWidget extends PureComponent { preventDefault(event); } - this.handleShortcutStop(payload); + controller.command('jog:stop'); }, }, SET_R_JOG_PRESET: { From 1983b8147bafe6100c92b02847b4ae88e2d8df70 Mon Sep 17 00:00:00 2001 From: Sophia Beluli Date: Thu, 29 Feb 2024 11:17:52 -0500 Subject: [PATCH 03/15] fix shortcut repeating problem with debounce --- src/app/lib/gamepad/index.js | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/app/lib/gamepad/index.js b/src/app/lib/gamepad/index.js index 0c9529f4a..edbfa8974 100644 --- a/src/app/lib/gamepad/index.js +++ b/src/app/lib/gamepad/index.js @@ -2,9 +2,11 @@ import { GamepadListener } from 'gamepad.js'; import shuttleEvents from 'app/lib/shuttleEvents'; import store from 'app/store'; import { Toaster, TOASTER_INFO } from 'app/lib/toaster/ToasterLib'; -import { debounce } from 'lodash'; +import { debounce, noop } from 'lodash'; const macroCallbackDebounce = debounce((action) => shuttleEvents.allShuttleControlEvents.MACRO(null, { macroID: action }), 500); +let buttonPressDebounce = noop; +let currentShuttleEvent = {}; class Gamepad extends GamepadListener { constructor() { @@ -183,7 +185,12 @@ export const runAction = ({ event }) => { const shuttleEvent = shuttleControlEvents[action]; if (shuttleEvent?.callback) { - shuttleEvent.callback(null, shuttleEvent.payload); + // gamepads emit many signals on button press, so this stops the shortcut from running a bunch of times + if (currentShuttleEvent.cmd !== shuttleEvent.cmd) { + currentShuttleEvent = shuttleEvent; + buttonPressDebounce = debounce(() => shuttleEvent.callback(null, shuttleEvent.payload)); + } + buttonPressDebounce(); } } else { macroCallbackDebounce(action); From b4020b4e8536db28e2a9657a241b81d61ec7abb3 Mon Sep 17 00:00:00 2001 From: Sophia Beluli Date: Thu, 29 Feb 2024 14:01:47 -0500 Subject: [PATCH 04/15] fix jog stop for all situations --- src/app/widgets/JogControl/index.jsx | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/app/widgets/JogControl/index.jsx b/src/app/widgets/JogControl/index.jsx index f842e38e5..fe825d131 100644 --- a/src/app/widgets/JogControl/index.jsx +++ b/src/app/widgets/JogControl/index.jsx @@ -743,7 +743,11 @@ class AxesWidget extends PureComponent { preventDefault(event); } - controller.command('jog:stop'); + if (this.joggingHelper) { + this.handleShortcutStop(payload); + } else { + controller.command('jog:stop'); + } }, }, SET_R_JOG_PRESET: { From bee04b26d7600684d44500f2cbef07b83ab84d15 Mon Sep 17 00:00:00 2001 From: Sophia Beluli Date: Fri, 1 Mar 2024 11:15:56 -0500 Subject: [PATCH 05/15] fix jog stop shortcut (again lol) --- src/app/widgets/JogControl/index.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/app/widgets/JogControl/index.jsx b/src/app/widgets/JogControl/index.jsx index fe825d131..85dfc6b66 100644 --- a/src/app/widgets/JogControl/index.jsx +++ b/src/app/widgets/JogControl/index.jsx @@ -743,7 +743,7 @@ class AxesWidget extends PureComponent { preventDefault(event); } - if (this.joggingHelper) { + if (this.state.isContinuousJogging) { this.handleShortcutStop(payload); } else { controller.command('jog:stop'); From 59abf4aae142fdae7ddad4b7e58a7432f2954893 Mon Sep 17 00:00:00 2001 From: KGN Date: Sat, 2 Mar 2024 11:46:48 -0500 Subject: [PATCH 06/15] Semver --- src/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/package.json b/src/package.json index 5f612e399..e45afb7dc 100644 --- a/src/package.json +++ b/src/package.json @@ -1,6 +1,6 @@ { "name": "gSender", - "version": "1.4.4", + "version": "1.4.4-RC1", "productName": "gSender", "description": "CNC Milling Controller", "author": { From a7505495b12e61a0a566db6fab7148e796b2b769 Mon Sep 17 00:00:00 2001 From: KGN Date: Mon, 4 Mar 2024 09:51:40 -0500 Subject: [PATCH 07/15] Semver --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index b56a86f54..1fa736ca4 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "gSender", - "version": "1.4.4-RC1", + "version": "1.4.4-RC2", "description": "Electron sender for GRBL based CNC machines", "author": { "name": "Sienci Labs ", From 4c0ae8b69cce3d87aeecb0661a4351dbb4096e7d Mon Sep 17 00:00:00 2001 From: Sophia Beluli Date: Wed, 6 Mar 2024 11:00:29 -0500 Subject: [PATCH 08/15] terminate color worker and fix laser colors bug --- src/app/widgets/Visualizer/Visualizer.jsx | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/app/widgets/Visualizer/Visualizer.jsx b/src/app/widgets/Visualizer/Visualizer.jsx index 215968c70..41e9c653e 100644 --- a/src/app/widgets/Visualizer/Visualizer.jsx +++ b/src/app/widgets/Visualizer/Visualizer.jsx @@ -138,6 +138,8 @@ class Visualizer extends Component { vizualization = null; + colorsWorker = null; + renderCallback = null; machineProfile = store.get('workspace.machineProfile'); @@ -829,6 +831,7 @@ class Visualizer extends Component { pubsub.subscribe('colors:load', (_, data) => { const { colorArray, savedColors } = data; this.handleSceneRender(this.vizualization, colorArray, savedColors, this.renderCallback); + this.colorsWorker.terminate(); }) ]; this.pubsubTokens = this.pubsubTokens.concat(tokens); @@ -1764,15 +1767,16 @@ class Visualizer extends Component { const shouldRenderVisualization = liteMode ? !disabledLite : !disabled; if (shouldRenderVisualization) { + console.log(vizualization); this.vizualization = vizualization; this.renderCallback = callback; - let colorsWorker = new ColorsWorker(); - colorsWorker.onmessage = colorsResponse; - colorsWorker.postMessage({ + this.colorsWorker = new ColorsWorker(); + this.colorsWorker.onmessage = colorsResponse; + this.colorsWorker.postMessage({ colors: vizualization.colors, frames: vizualization.frames, spindleSpeeds: vizualization.spindleSpeeds, - isLazer: vizualization.isLazer, + isLaser: vizualization.isLaser, spindleChanges: vizualization.spindleChanges, theme: currentTheme }); From 40017a1e39160eefe999c2484014681066e1f859 Mon Sep 17 00:00:00 2001 From: Sophia Beluli Date: Thu, 7 Mar 2024 15:13:11 -0500 Subject: [PATCH 09/15] [MI-1394]: fix issue with weird artifacts in visualization --- src/app/lib/GCodeVirtualizer.js | 74 ++++++++--------------------- src/app/workers/Visualize.worker.js | 15 +----- 2 files changed, 22 insertions(+), 67 deletions(-) diff --git a/src/app/lib/GCodeVirtualizer.js b/src/app/lib/GCodeVirtualizer.js index e4e87978d..01ee71d4d 100644 --- a/src/app/lib/GCodeVirtualizer.js +++ b/src/app/lib/GCodeVirtualizer.js @@ -205,8 +205,6 @@ class GCodeVirtualizer extends EventEmitter { ]; feedrateCounter = 0; - hasSetV1 = false; - handlers = { // G0: Rapid Linear Move 'G0': (params) => { @@ -244,19 +242,11 @@ class GCodeVirtualizer extends EventEmitter { this.updateBounds(targetPosition); this.setPosition(targetPosition.x, targetPosition.y, targetPosition.z, targetPosition.a); - if (!this.hasSetV1) { - this.data[this.totalLines].lineData = { - v1: this.offsetG92(v1), - v2: this.offsetG92(v2), - shouldUseAddCurve: isCurvedLine && angleDiff > ANGLE_THRESHOLD, - }; - this.hasSetV1 = true; - } else { - this.data[this.totalLines].lineData = { - v2: this.offsetG92(v2), - shouldUseAddCurve: isCurvedLine && angleDiff > ANGLE_THRESHOLD, - }; - } + this.data[this.totalLines].lineData = { + v1: this.offsetG92(v1), + v2: this.offsetG92(v2), + shouldUseAddCurve: isCurvedLine && angleDiff > ANGLE_THRESHOLD, + }; }, // G1: Linear Move // Usage @@ -307,19 +297,11 @@ class GCodeVirtualizer extends EventEmitter { this.updateBounds(targetPosition); this.setPosition(targetPosition.x, targetPosition.y, targetPosition.z, targetPosition.a); - if (!this.hasSetV1) { - this.data[this.totalLines].lineData = { - v1: this.offsetG92(v1), - v2: this.offsetG92(v2), - shouldUseAddCurve: isCurvedLine && angleDiff > ANGLE_THRESHOLD, - }; - this.hasSetV1 = true; - } else { - this.data[this.totalLines].lineData = { - v2: this.offsetG92(v2), - shouldUseAddCurve: isCurvedLine && angleDiff > ANGLE_THRESHOLD, - }; - } + this.data[this.totalLines].lineData = { + v1: this.offsetG92(v1), + v2: this.offsetG92(v2), + shouldUseAddCurve: isCurvedLine && angleDiff > ANGLE_THRESHOLD, + }; }, // G2 & G3: Controlled Arc Move // Usage @@ -410,19 +392,11 @@ class GCodeVirtualizer extends EventEmitter { this.updateBounds(targetPosition); this.setPosition(targetPosition.x, targetPosition.y, targetPosition.z); - if (!this.hasSetV1) { - this.data[this.totalLines].lineData = { - v1: this.offsetG92(v1), - v2: this.offsetG92(v2), - v0: this.offsetG92(v0) - }; - this.hasSetV1 = true; - } else { - this.data[this.totalLines].lineData = { - v2: this.offsetG92(v2), - v0: this.offsetG92(v0) - }; - } + this.data[this.totalLines].lineData = { + v1: this.offsetG92(v1), + v2: this.offsetG92(v2), + v0: this.offsetG92(v0) + }; }, 'G3': (params) => { if (this.modal.motion !== 'G3') { @@ -494,19 +468,11 @@ class GCodeVirtualizer extends EventEmitter { this.updateBounds(targetPosition); this.setPosition(targetPosition.x, targetPosition.y, targetPosition.z); - if (!this.hasSetV1) { - this.data[this.totalLines].lineData = { - v1: this.offsetG92(v1), - v2: this.offsetG92(v2), - v0: this.offsetG92(v0) - }; - this.hasSetV1 = true; - } else { - this.data[this.totalLines].lineData = { - v2: this.offsetG92(v2), - v0: this.offsetG92(v0) - }; - } + this.data[this.totalLines].lineData = { + v1: this.offsetG92(v1), + v2: this.offsetG92(v2), + v0: this.offsetG92(v0) + }; }, // G4: Dwell // Parameters diff --git a/src/app/workers/Visualize.worker.js b/src/app/workers/Visualize.worker.js index 3d943f55b..76e3e497e 100644 --- a/src/app/workers/Visualize.worker.js +++ b/src/app/workers/Visualize.worker.js @@ -406,21 +406,10 @@ onmessage = function({ data }) { const entry = data[i]; if (entry.lineData) { - const { v2, v0, shouldUseAddCurve } = entry.lineData; - // use previous v2 as v1 unless there is no previous entry - let v1 = entry.lineData.v1; - if (!v1) { - // sometimes the last line doesn't have movements, so we must search for the last line with a movement - for (let x = i - 1; x >= 0; x--) { - if (data[x].lineData && data[x].lineData.v2) { - v1 = data[x].lineData.v2; - break; - } - } - } + const { v1, v2, v0, shouldUseAddCurve, dwellTime } = entry.lineData; if (modal.motion === 'G4') { - vm.addToTotalTime(entry.lineData.dwellTime); + vm.addToTotalTime(dwellTime); } else { const targetPosition = { x: v2.x, y: v2.y, z: v2.z }; if (modal.motion === 'G1' || modal.motion === 'G0') { From d9824073942b91e697b23a67dc7d9cee1c3f3cf9 Mon Sep 17 00:00:00 2001 From: Walid Kayhan Date: Fri, 8 Mar 2024 10:10:06 -0500 Subject: [PATCH 10/15] Change macOS build name to universal for better clarity that it can run on any mac chipset --- .github/workflows/CI.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 4db68f612..df58050e0 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -160,7 +160,7 @@ jobs: PACKAGE_VERSION=`node -e "console.log(require('./src/package.json').version)"` mkdir -p releases/macos ls -al output - cp -af "output/${PACKAGE_NAME}-${PACKAGE_VERSION}-x64.dmg" "releases/macos/gSender-${PACKAGE_VERSION}-Mac-Intel-64Bit.dmg" + cp -af "output/${PACKAGE_NAME}-${PACKAGE_VERSION}-universal.dmg" "releases/macos/gSender-${PACKAGE_VERSION}-Mac-Universal.dmg" ls -al output releases/macos if [[ "$GITHUB_REF_TYPE" == "branch" && "$GITHUB_REF_NAME" == "master" ]]; then yarn github-release delete \ From a7e09345f967826f05b6292153d16dbcd410a3fe Mon Sep 17 00:00:00 2001 From: KGN Date: Mon, 11 Mar 2024 10:12:20 -0400 Subject: [PATCH 11/15] use EEPROM for SLB laser offsets --- src/app/widgets/Spindle/index.jsx | 44 ++++++++++++++++--- src/package.json | 2 +- .../Grblhal/GrblHalLineParserResultSpindle.js | 2 + 3 files changed, 40 insertions(+), 8 deletions(-) diff --git a/src/app/widgets/Spindle/index.jsx b/src/app/widgets/Spindle/index.jsx index 24bb66e7c..66836402a 100644 --- a/src/app/widgets/Spindle/index.jsx +++ b/src/app/widgets/Spindle/index.jsx @@ -409,8 +409,6 @@ class SpindleWidget extends PureComponent { const { wpos, $13 } = this.props; let { x, y } = wpos; - console.log(units); - if ($13 === '1' || units === 'G20') { units = 'G20'; x /= 25.4; @@ -421,11 +419,20 @@ class SpindleWidget extends PureComponent { getLaserOffsetCode(preferredUnits) { const laser = this.config.get('laser'); + const { controllerType, laserXOffset, laserYOffset } = this.props; this.setState({ laser }); let { xOffset, yOffset } = laser; + + // If using grblHAL AND SLB_LASER, use the eeprom laser offset values + if (controllerType === GRBLHAL) { + xOffset = laserXOffset; + yOffset = laserYOffset; + } + + if (preferredUnits === 'G20') { xOffset = convertToImperial(xOffset); yOffset = convertToImperial(yOffset); @@ -434,7 +441,6 @@ class SpindleWidget extends PureComponent { yOffset = roundMetric(yOffset); } const [xoffsetAdjusted, yOffsetAdjusted] = this.calculateAdjustedOffsets(xOffset, yOffset, preferredUnits); - console.log(`x: ${xoffsetAdjusted}, y: ${yOffsetAdjusted}`); let offsetQuery = []; if (xOffset === 0 && yOffset !== 0) { @@ -454,12 +460,22 @@ class SpindleWidget extends PureComponent { } getSpindleOffsetCode(preferredUnits) { + const { controllerType, laserXOffset, laserYOffset } = this.props; + const laser = this.config.get('laser'); this.setState({ laser }); let offsetQuery = []; + let { xOffset, yOffset } = laser; + + // If using grblHAL AND SLB_LASER, use the eeprom laser offset values + if (controllerType === GRBLHAL) { + xOffset = laserXOffset; + yOffset = laserYOffset; + } + xOffset = Number(xOffset) * -1; yOffset = Number(yOffset) * -1; if (preferredUnits === 'G20') { @@ -541,7 +557,7 @@ class SpindleWidget extends PureComponent { } render() { - const { embedded, spindleModal, spindleMin, spindleMax, availableSpindles, spindle } = this.props; + const { embedded, spindleModal, spindleMin, spindleMax, availableSpindles, spindle, laserMax, laserMin, controllerType } = this.props; const { minimized, isFullscreen } = this.state; const controllerType = store.get('widgets.connection.controller.type', '-'); @@ -550,6 +566,9 @@ class SpindleWidget extends PureComponent { spindleModal, spindleMin, spindleMax, + laserMax, + laserMin, + controllerType, spindle, canClick: this.canClick(), }; @@ -598,6 +617,7 @@ class SpindleWidget extends PureComponent { } export default connect((store) => { + const controllerType = get(store, 'controller.type', 'grbl'); const workflow = get(store, 'controller.workflow'); const state = get(store, 'controller.state'); const isConnected = get(store, 'connection.isConnected'); @@ -612,8 +632,12 @@ export default connect((store) => { const units = get(store, 'controller.modal.units', {}); const availableSpindles = get(store, 'controller.spindles', []); const $13 = get(store, 'controller.settings.settings.$13', '0'); - - + // 730 max, 731 min laser + // 741 laser X offset, 742 laser Y offset + const laserMax = Number(get(store, 'controller.settings.settings.$730', 255)); + const laserMin = Number(get(store, 'controller.settings.settings.$731', 0)); + const laserXOffset = Number(get(store, 'controller.settings.settings.$741', 0)); + const laserYOffset = Number(get(store, 'controller.settings.settings.$742', 0)); let enabledSpindle; const enabledSpindleIndex = findIndex(availableSpindles, o => o.enabled); @@ -641,6 +665,12 @@ export default connect((store) => { units, availableSpindles, $13, - spindle: enabledSpindle + spindle: enabledSpindle, + // SLB specific laser values + laserMax, + laserMin, + laserXOffset, + laserYOffset, + controllerType }; })(SpindleWidget); diff --git a/src/package.json b/src/package.json index e45afb7dc..68a122248 100644 --- a/src/package.json +++ b/src/package.json @@ -1,6 +1,6 @@ { "name": "gSender", - "version": "1.4.4-RC1", + "version": "1.4.4-RC2", "productName": "gSender", "description": "CNC Milling Controller", "author": { diff --git a/src/server/controllers/Grblhal/GrblHalLineParserResultSpindle.js b/src/server/controllers/Grblhal/GrblHalLineParserResultSpindle.js index b24ae834c..de8949845 100644 --- a/src/server/controllers/Grblhal/GrblHalLineParserResultSpindle.js +++ b/src/server/controllers/Grblhal/GrblHalLineParserResultSpindle.js @@ -19,6 +19,8 @@ class GrblHalLineParserResultSpindle { payload.id = Number(parts[1].slice(-1)); // Last value is ID to use, convert to number payload.capabilities = parts[2].trim(); // Capabilities string payload.enabled = !!parts[3]; // "Current" text parsed - true if exists, false otherwise + // Do we have a laser potential + payload.laser = payload.capabilities.indexOf('L') > -1; } return { From 087d7fc65854daf1456387089c3aa9f7b990850f Mon Sep 17 00:00:00 2001 From: KGN Date: Mon, 11 Mar 2024 14:16:45 -0400 Subject: [PATCH 12/15] Laser max on text --- src/app/widgets/Spindle/index.jsx | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/src/app/widgets/Spindle/index.jsx b/src/app/widgets/Spindle/index.jsx index 66836402a..ec5fa1d87 100644 --- a/src/app/widgets/Spindle/index.jsx +++ b/src/app/widgets/Spindle/index.jsx @@ -202,7 +202,15 @@ class SpindleWidget extends PureComponent { }, runLaserTest: () => { const { laser } = this.state; - const { power, duration, maxPower } = laser; + const { laserMax, spindle } = this.props; + let { power, duration, maxPower } = laser; + + if (spindle.label === 'SLB_LASER') { + console.log('in branch'); + maxPower = laserMax; + } + + console.log(maxPower); controller.command('lasertest:on', power, duration, maxPower); setTimeout(() => { @@ -212,7 +220,6 @@ class SpindleWidget extends PureComponent { }, laser.duration); }, handleHALSpindleSelect: (spindle) => { - console.log(spindle); controller.command('gcode', [ `M104 Q${spindle.value}`, '$spindles' @@ -557,7 +564,7 @@ class SpindleWidget extends PureComponent { } render() { - const { embedded, spindleModal, spindleMin, spindleMax, availableSpindles, spindle, laserMax, laserMin, controllerType } = this.props; + const { embedded, spindleModal, spindleMin, spindleMax, availableSpindles, spindle, laserMax, laserMin } = this.props; const { minimized, isFullscreen } = this.state; const controllerType = store.get('widgets.connection.controller.type', '-'); @@ -632,8 +639,8 @@ export default connect((store) => { const units = get(store, 'controller.modal.units', {}); const availableSpindles = get(store, 'controller.spindles', []); const $13 = get(store, 'controller.settings.settings.$13', '0'); - // 730 max, 731 min laser - // 741 laser X offset, 742 laser Y offset + // SLB - 730 max, 731 min laser + // SLB - 741 laser X offset, 742 laser Y offset const laserMax = Number(get(store, 'controller.settings.settings.$730', 255)); const laserMin = Number(get(store, 'controller.settings.settings.$731', 0)); const laserXOffset = Number(get(store, 'controller.settings.settings.$741', 0)); From 36f3e8c5b90aeebfd190e3455b701f7f836c1024 Mon Sep 17 00:00:00 2001 From: KGN Date: Mon, 11 Mar 2024 14:25:52 -0400 Subject: [PATCH 13/15] Laser mode SLB Changes --- src/app/widgets/Spindle/index.jsx | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/app/widgets/Spindle/index.jsx b/src/app/widgets/Spindle/index.jsx index ec5fa1d87..da03ba770 100644 --- a/src/app/widgets/Spindle/index.jsx +++ b/src/app/widgets/Spindle/index.jsx @@ -177,7 +177,15 @@ class SpindleWidget extends PureComponent { }, handleLaserPowerChange: (e) => { const { laser } = this.state; - const { power, maxPower } = laser; + const { spindle, laserMax} = this.props; + + + let { power, maxPower } = laser; + + if (spindle.value === 'SLB_LASER') { + maxPower = laserMax; + } + const value = Number(e.target.value); if (this.isLaserOn) { this.debounceLaserPower(power, maxPower); @@ -206,12 +214,9 @@ class SpindleWidget extends PureComponent { let { power, duration, maxPower } = laser; if (spindle.label === 'SLB_LASER') { - console.log('in branch'); maxPower = laserMax; } - console.log(maxPower); - controller.command('lasertest:on', power, duration, maxPower); setTimeout(() => { this.setState({ From 0180b9fd309fbe0f8b6dde39e199c089ccf4fb68 Mon Sep 17 00:00:00 2001 From: walidkayhan Date: Mon, 11 Mar 2024 15:44:35 -0400 Subject: [PATCH 14/15] Fix macOS output name --- .github/workflows/CI.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index df58050e0..e2634e4e8 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -160,7 +160,7 @@ jobs: PACKAGE_VERSION=`node -e "console.log(require('./src/package.json').version)"` mkdir -p releases/macos ls -al output - cp -af "output/${PACKAGE_NAME}-${PACKAGE_VERSION}-universal.dmg" "releases/macos/gSender-${PACKAGE_VERSION}-Mac-Universal.dmg" + cp -af "output/${PACKAGE_NAME}-${PACKAGE_VERSION}-x64.dmg" "releases/macos/gSender-${PACKAGE_VERSION}-Mac-Universal.dmg" ls -al output releases/macos if [[ "$GITHUB_REF_TYPE" == "branch" && "$GITHUB_REF_NAME" == "master" ]]; then yarn github-release delete \ From c80d2087577338860e08f0cf95a992f515154880 Mon Sep 17 00:00:00 2001 From: KGN Date: Mon, 11 Mar 2024 16:11:40 -0400 Subject: [PATCH 15/15] Spacing --- src/app/widgets/Spindle/index.jsx | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/app/widgets/Spindle/index.jsx b/src/app/widgets/Spindle/index.jsx index da03ba770..9f49c77a1 100644 --- a/src/app/widgets/Spindle/index.jsx +++ b/src/app/widgets/Spindle/index.jsx @@ -177,10 +177,9 @@ class SpindleWidget extends PureComponent { }, handleLaserPowerChange: (e) => { const { laser } = this.state; - const { spindle, laserMax} = this.props; + const { spindle, laserMax } = this.props; - - let { power, maxPower } = laser; + let { power, maxPower } = laser; if (spindle.value === 'SLB_LASER') { maxPower = laserMax;