diff --git a/src/app/widgets/NavbarConnection/FirmwareSelector.jsx b/src/app/widgets/NavbarConnection/FirmwareSelector.jsx index 4a42c03bb..b3b70e61d 100644 --- a/src/app/widgets/NavbarConnection/FirmwareSelector.jsx +++ b/src/app/widgets/NavbarConnection/FirmwareSelector.jsx @@ -24,9 +24,11 @@ import React from 'react'; import cx from 'classnames'; import { uniqueId } from 'lodash'; +import { GRBL } from 'app/constants'; import styles from './Index.styl'; const FirmwareSelector = ({ options = [], selectedFirmware, handleSelect }) => { + selectedFirmware = selectedFirmware || GRBL; // null check return (
diff --git a/src/server/controllers/Grblhal/GrblHalController.js b/src/server/controllers/Grblhal/GrblHalController.js index 76f5bab71..1869b5f04 100644 --- a/src/server/controllers/Grblhal/GrblHalController.js +++ b/src/server/controllers/Grblhal/GrblHalController.js @@ -679,7 +679,7 @@ class GrblHalController { this.sender.unhold(); } this.sender.ack(); - this.sender.next(); + this.sender.next({ isOk: true }); return; } @@ -692,7 +692,7 @@ class GrblHalController { log.debug(`Stop sending G-code: hold=${hold}, sent=${sent}, received=${received + 1}`); } this.sender.ack(); - this.sender.next(); + this.sender.next({ isOk: true }); return; } @@ -1633,7 +1633,7 @@ class GrblHalController { } else { this.workflow.pause(); await delay(100); - this.write('!'); + this.write(GRBLHAL_REALTIME_COMMANDS.FEED_HOLD); } }, 'resume': () => { @@ -1642,24 +1642,15 @@ class GrblHalController { }, 'gcode:resume': async () => { log.debug('gcode:resume called - program to continue sending'); - const [type] = args; if (this.event.hasEnabledEvent(PROGRAM_RESUME)) { this.feederCB = () => { - if (type === GRBLHAL) { - this.write(GRBLHAL_REALTIME_COMMANDS.CYCLE_START); - } else { - this.write('~'); - } + this.write(GRBLHAL_REALTIME_COMMANDS.CYCLE_START); this.workflow.resume(); this.feederCB = null; }; this.event.trigger(PROGRAM_RESUME); } else { - if (type === GRBLHAL) { - this.write(GRBLHAL_REALTIME_COMMANDS.CYCLE_START); - } else { - this.write('~'); - } + this.write(GRBLHAL_REALTIME_COMMANDS.CYCLE_START); await delay(1000); this.workflow.resume(); } diff --git a/src/server/lib/Sender.js b/src/server/lib/Sender.js index 994d3b76a..21bbdeadd 100644 --- a/src/server/lib/Sender.js +++ b/src/server/lib/Sender.js @@ -85,8 +85,8 @@ class SPCharCounting { } } - process() { - this.callback && this.callback(this); + process(isOk) { + this.callback && this.callback(this, isOk); } reset() { @@ -195,8 +195,8 @@ class Sender extends events.EventEmitter { // character-counting if (type === SP_TYPE_CHAR_COUNTING) { - this.sp = new SPCharCounting(options, (sp) => { - if (sp.queue.length > 0) { + this.sp = new SPCharCounting(options, (sp, isOk) => { + if (sp.queue.length > 0 && isOk) { // only remove line length from buffer if ok was sent const lineLength = sp.queue.shift(); sp.dataLength -= lineLength; } @@ -410,7 +410,7 @@ class Sender extends events.EventEmitter { // Tells the sender to send more data. // @return {boolean} Returns true on success, false otherwise. next(options = {}) { - const { startFromLine, timePaused, forceEnd } = options; + const { startFromLine, timePaused, forceEnd, isOk } = options; if (!this.state.gcode) { return false; @@ -451,7 +451,7 @@ class Sender extends events.EventEmitter { } if (this.sp) { - this.sp.process(); + this.sp.process(isOk); } // Elapsed Time