Giter Site home page Giter Site logo

dwc-cnc's Introduction

DWC-CNC Merging With Duet Web Control

DWC-CNC's changes have been merged into Duet Web Control 3.4-b2. In Duet Web Control 3.4 there is a menu option to select which dashboard you want to use or by default it will use the dashboard based on the Duet's mode. This project will no longer be receiving updates.

Duet Web Control - EXPERIMENTAL CNC version

Duet Web Control is a fully-responsive HTML5-based web interface for RepRapFirmware which utilizes the Bootstrap framework, JQuery and a few other libraries to allow easy control of Duet-based 3D printer electronics.

It is designed to communicate with RepRapFirmware using WebSockets and RESTful HTTP requests. One goal of the core application is to keep things compact, so a good loading speed can be achieved even on slow networks. Another one is to communicate to the firmware using only AJAX calls, which either return JSON objects, plain texts or binary blobs.

Duet Web Control is free software; it is licensed under the terms of the GNU Public License v3.

Please note, this CNC version of DWC is experimental and it may not be maintained. Some or all of the features of this version may in future be made available as options in the regular version of Duet Web Control. The CNC dashboard will only be visible when the Duet is in CNC mode.

Supported electronics

At this time the following platforms are officially supported:

  • Duet 2 Maestro
  • Duet 2 WiFi
  • Duet 2 Ethernet
  • Duet 3 MB 6HC
  • Duet 3 Mini 5+ Ethernet
  • Duet 3 Mini 5+ WiFi

Build variants

There are two build variants available:

  • DuetWebControl-SD for Duet Maestro, Duet 2 series, and Duet 3 series in standalone mode
  • DuetWebControl-SBC for Duet 3 series in SBC mode

Project setup

npm install

Compiles and hot-reloads for development

npm run serve

In order to use the local development setup with software versions >= 3.2.0, it is possible to add M586 C"*" to your config.g. However, this is a potential security issue because it permits cross-origin requests from ALL foreign sites.

Compiles and minifies for production

npm run build

dwc-cnc's People

Contributors

chrishamm avatar dc42 avatar dependabot[bot] avatar garethky avatar gonalonso avatar idevelouk avatar mak0t0san avatar mbgroot avatar moonlight63 avatar nicholasfeldman avatar ningjiazun avatar pfn avatar sindarius avatar whosrdaddy avatar wilriker avatar x0rtrunks avatar zombiron avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

dwc-cnc's Issues

Wrong code version?

Might be a silly question but when I fork this to allow me to deploy to an azure status site for testing before putting on a trea board I get what looks like the normal 3d Printer interface and NOT the CNC one

Violation error in UI (may be affecting machine level plugins)

_callee$ @ SettingsMachinePluginsTab.vue:155

iziToast.js:1250 [Violation] Added non-passive event listener to a scroll-blocking 'touchstart' event. Consider marking event handler as 'passive' to make the page more responsive. See https://www.chromestatus.com/feature/5745543795965952
v.show @ iziToast.js:1250
v. @ iziToast.js:420
makeNotification @ toast.js:51
log @ logging.js:12
logGlobal @ logging.js:52
_callee$ @ index.js:70
tryCatch @ runtime.js:63
invoke @ runtime.js:293
(anonymous) @ runtime.js:118
asyncGeneratorStep @ asyncToGenerator.js:3
_next @ asyncToGenerator.js:25
DevTools failed to load source map: Could not load content for http://10.0.1.127/js/OnScreenKeyboard.8d3fafac.js.map: Connection error: net::ERR_CONNECTION_RESET
iziToast.js:1250 [Violation] Added non-passive event listener to a scroll-blocking 'touchstart' event. Consider marking event handler as 'passive' to make the page more responsive. See https://www.chromestatus.com/feature/5745543795965952
v.show @ iziToast.js:1250
v. @ iziToast.js:420
makeNotification @ toast.js:51
_callee$ @ SettingsMachinePluginsTab.vue:155
tryCatch @ runtime.js:63
invoke @ runtime.js:293
(anonymous) @ runtime.js:118
asyncGeneratorStep @ asyncToGenerator.js:3
_next @ asyncToGenerator.js:25

Spindle not showing in Dashboard. Object model shows configured = false

Which Duet products are you using?

  • Duet2-Wifi
  • Duet2-Ethernet
  • Duet Expansion Breakout Board
  • Duex2
  • Duex5
  • Duet2-Maestro
  • Maestro Dual Driver Expansion
  • Duet3-6HC
  • Duet3-3HC
  • Duet3-1XD
  • Duet3-1LC
  • Duet3-Tool Distribution Board
  • Duet3-Mini5+
  • Duet3-Mini2+
  • Raspberry Pi or other SBC
  • SmartEffector
  • Magnetic Filament Sensor
  • Laser Filament Sensor
  • PT100 Daughterboard
  • Thermocouple Daughterboard
  • PanelDue
  • Other
  • None

Firmware Version

RepRap 3.3

Duet Web Control Version

Duet Web Control 3.3.0-CNC07

Are you using a Single Board Computer (RaspberryPi) with your Duet?

  • Yes I use a SBC.
  • No I do not use a SBC.

Please upload the results of sending M122 in the gcode console.

m122
=== Diagnostics ===
RepRapFirmware for Duet 2 WiFi/Ethernet version 3.3 (2021-06-15 21:44:54) running on Duet WiFi 1.02 or later
Board ID: 0JD0M-9K662-MG5TD-6J1D6-3SJ6N-1AL6W
Used output buffers: 3 of 24 (11 max)
=== RTOS ===
Static ram: 23876
Dynamic ram: 74520 of which 12 recycled
Never used RAM 16008, free system stack 184 words
Tasks: NETWORK(ready,10.8%,257) HEAT(delaying,0.0%,386) Move(notifyWait,0.1%,319) MAIN(running,83.9%,635) IDLE(ready,5.2%,29), total 100.0%
Owned mutexes:
=== Platform ===
Last reset 00:00:17 ago, cause: software
Last software reset at 2021-08-06 22:13, reason: User, GCodes spinning, available RAM 16008, slot 1
Software reset code 0x0003 HFSR 0x00000000 CFSR 0x00000000 ICSR 0x0041f000 BFAR 0xe000ed38 SP 0x00000000 Task MAIN Freestk 0 n/a
Error status: 0x00
Step timer max interval 0
MCU temperature: min 31.3, current 32.1, max 32.2
Supply voltage: min 23.7, current 23.8, max 23.9, under voltage events: 0, over voltage events: 0, power good: yes
Heap OK, handles allocated/used 0/0, heap memory allocated/used/recyclable 0/0/0, gc cycles 0
Driver 0: position 0, standstill, SG min/max not available
Driver 1: position 0, standstill, SG min/max not available
Driver 2: position 0, standstill, SG min/max not available
Driver 3: position 0, standstill, SG min/max not available
Driver 4: position 0, standstill, SG min/max not available
Driver 5: position 0
Driver 6: position 0
Driver 7: position 0
Driver 8: position 0
Driver 9: position 0
Driver 10: position 0
Driver 11: position 0
Date/time: 2021-08-06 22:13:59
Cache data hit count 655549432
Slowest loop: 3.25ms; fastest: 0.16ms
I2C nak errors 0, send timeouts 0, receive timeouts 0, finishTimeouts 0, resets 0
=== Storage ===
Free file entries: 10
SD card 0 detected, interface speed: 12.0MBytes/sec
SD card longest read time 0.4ms, write time 0.0ms, max retries 0
=== Move ===
DMs created 83, maxWait 0ms, bed compensation in use: none, comp offset 0.000
=== MainDDARing ===
Scheduled moves 0, completed moves 0, hiccups 0, stepErrors 0, LaErrors 0, Underruns [0, 0, 0], CDDA state -1
=== AuxDDARing ===
Scheduled moves 0, completed moves 0, hiccups 0, stepErrors 0, LaErrors 0, Underruns [0, 0, 0], CDDA state -1
=== Heat ===
Bed heaters = -1 -1 -1 -1, chamberHeaters = -1 -1 -1 -1
=== GCodes ===
Segments left: 0
Movement lock held by null
HTTP is idle in state(s) 0
Telnet is idle in state(s) 0
File is idle in state(s) 0
USB is idle in state(s) 0
Aux is idle in state(s) 0
Trigger is idle in state(s) 0
Queue is idle in state(s) 0
LCD is idle in state(s) 0
Daemon is idle in state(s) 0
Autopause is idle in state(s) 0
Code queue is empty.
=== Network ===
Slowest loop: 15.98ms; fastest: 0.00ms
Responder states: HTTP(2) HTTP(0) HTTP(0) HTTP(0) FTP(0) Telnet(0), 0 sessions
HTTP sessions: 1 of 8
- WiFi -
Network state is active
WiFi module is connected to access point 
Failed messages: pending 0, notready 0, noresp 0
WiFi firmware version 1.23
WiFi MAC address d8:bf:c0:fe:70:4d
WiFi Vcc 3.38, reset reason Turned on by main processor
WiFi flash size 4194304, free heap 23728
WiFi IP address 192.168.1.121
WiFi signal strength -56dBm, mode none, reconnections 0, sleep mode modem
Clock register ffffffff
Socket states: 4 0 0 0 0 0 0 0

Please upload the content of your config.g file.

; Configuration file for Duet WiFi (firmware version 3)
; executed by the firmware on start-up
;
; generated by RepRapFirmware Configuration Tool v3.3.0 on Fri Aug 06 2021 16:15:35 GMT+0100 (BST)

; Tools
M950 R0 C"exp.13" Q2000 L0:22000                  ; Create spindle index 0, PWM frequency 2KHz, 
                                                  ; Lmin:max rpm ranges from 0rpm at PWM=0% to 22000rpm at 100% PWM
                                                  ; spindle speed PWM pin	: exp.13 
 
M563 P0 R0 S"AMB FME-U 1050"                      ; Create Tool 0 with Spindle 0 and call it Spindle
T0	                                              ; Select Tool 0 (or make sure generated by CAM)

M453                                    ; CNC Mode

; General preferences
G90                                     ; send absolute coordinates...
M83                                     ; ...but relative extruder moves
M550 P"Mini Mill"                       ; set printer name

; Network
M552 S1                                 ; enable network
M586 P0 S1                              ; enable HTTP
M586 P1 S0                              ; disable FTP
M586 P2 S0                              ; disable Telnet

; Drives
M569 P0 S1                              ; physical drive 0 goes forwards
M569 P1 S1                              ; physical drive 1 goes forwards
M569 P2 S1                              ; physical drive 2 goes forwards
M569 P3 S1                              ; physical drive 3 goes forwards
M584 X0 Y1 Z2 E3                        ; set drive mapping
M350 X16 Y16 Z16 E16 I1                 ; configure microstepping with interpolation
M92 X80.00 Y80.00 Z400.00 E420.00       ; set steps per mm
M566 X900.00 Y900.00 Z60.00 E120.00     ; set maximum instantaneous speed changes (mm/min)
M203 X6000.00 Y6000.00 Z180.00 E1200.00 ; set maximum speeds (mm/min)
M201 X500.00 Y500.00 Z20.00 E250.00     ; set accelerations (mm/s^2)
M906 X800 Y800 Z800 E800 I30            ; set motor currents (mA) and motor idle factor in per cent
M84 S30                                 ; Set idle timeout

; Axis Limits
M208 X0 Y0 Z0 S1                        ; set axis minima
M208 X120 Y120 Z120 S0                  ; set axis maxima

; Endstops
M574 X1 S1 P"xstop"                     ; configure active-high endstop for low end on X via pin xstop
M574 Y1 S1 P"ystop"                     ; configure active-high endstop for low end on Y via pin ystop
M574 Z1 S1 P"zstop"                     ; configure active-high endstop for low end on Z via pin zstop

; Z-Probe
M558 P5 C"^zprobe.in" H5 F120 T6000     ; set Z probe type to switch and the dive height + speeds
G31 P500 X0 Y0 Z2.5                     ; set Z probe trigger value, offset and trigger height
M557 X15:120 Y15:120 S20                ; define mesh grid

; Heaters
M140 H-1                                ; disable heated bed (overrides default heater mapping)

; Fans

; Custom settings are not defined

Please upload the content of any other releveant macro files.

No response

Details specific to your printer.

No response

Links to additional info.

https://forum.duet3d.com/topic/24521/spindle-not-showing-in-dwc-cnc-rrf3-on-duet-wifi/22?_=1628281597779

What happened?

As discussed on the forum and apparently a know issue, when adding a spindle to the config file using M950 and M563 it should appear as a spindle in the dashboard.

Spindles pane on dashboard is empty.

[FeatureRequest]:

Is your feature request related to a problem? Please describe.

there is something missing on the set work zero button. and i think that is m500 it will not save new cordinates to config-override.g

as long the machine is powered on it will remember but a power off/on cycle it does not so the m500 command is required here.

Describe the solution you propose.

i had to make macros to get it to save , used the same commmands that the work zero button outputs but added m500 to
ot so it saves workzero to config-override.g file

Describe alternatives you've considered

Ex. A workaround exists but it is tedius, for example...

Provide any additional context or information.

93A24F21-787D-4A33-A81F-CA97F67AC3BD
Ex. Photos, mockups, etc.

[Bug]: Set work XYZ button not including M500 to store the set values in config-override.g

Which Duet products are you using?

  • Duet2-Wifi
  • Duet2-Ethernet
  • Duet Expansion Breakout Board
  • Duex2
  • Duex5
  • Duet2-Maestro
  • Maestro Dual Driver Expansion
  • Duet3-6HC
  • Duet3-3HC
  • Duet3-1XD
  • Duet3-1LC
  • Duet3-Tool Distribution Board
  • Duet3-Mini5+
  • Duet3-Mini2+
  • Raspberry Pi or other SBC
  • SmartEffector
  • Magnetic Filament Sensor
  • Laser Filament Sensor
  • PT100 Daughterboard
  • Thermocouple Daughterboard
  • PanelDue
  • Other
  • None

Firmware Version

WiFi/Ethernet 3.3 (2021-06-15), Duet WiFi Server Version: 1.26

Duet Web Control Version

Duet Web Control 3.3.0-CNC08

Are you using a Single Board Computer (RaspberryPi) with your Duet?

  • Yes I use a SBC.
  • No I do not use a SBC.

Please upload the results of sending M122 in the gcode console.

M122 Report
m122
=== Diagnostics ===
RepRapFirmware for Duet 2 WiFi/Ethernet version 3.3 (2021-06-15 21:44:54) running on Duet WiFi 1.02 or later
Board ID: 0JD0M-9P6M2-NW4SS-6J9FD-3S86M-KAZBL
Used output buffers: 3 of 24 (13 max)
=== RTOS ===
Static ram: 23876
Dynamic ram: 74684 of which 0 recycled
Never used RAM 15856, free system stack 184 words
Tasks: NETWORK(ready,13.8%,257) HEAT(delaying,0.0%,357) Move(notifyWait,0.1%,364) MAIN(running,85.1%,525) IDLE(ready,0.9%,29), total 100.0%
Owned mutexes:
=== Platform ===
Last reset 00:03:13 ago, cause: power up
Last software reset at 2021-09-28 23:20, reason: User, GCodes spinning, available RAM 15856, slot 0
Software reset code 0x0003 HFSR 0x00000000 CFSR 0x00000000 ICSR 0x0041f000 BFAR 0xe000ed38 SP 0x00000000 Task MAIN Freestk 0 n/a
Error status: 0x00
Step timer max interval 0
MCU temperature: min 7.2, current 11.3, max 11.7
Supply voltage: min 24.0, current 24.1, max 24.3, under voltage events: 0, over voltage events: 0, power good: yes
Heap OK, handles allocated/used 0/0, heap memory allocated/used/recyclable 0/0/0, gc cycles 0
Driver 0: position 0, standstill, SG min/max not available
Driver 1: position 0, standstill, SG min/max not available
Driver 2: position 0, standstill, SG min/max not available
Driver 3: position 0, standstill, SG min/max not available
Driver 4: position 0, standstill, SG min/max not available
Driver 5: position 0
Driver 6: position 0
Driver 7: position 0
Driver 8: position 0
Driver 9: position 0
Driver 10: position 0
Driver 11: position 0
Date/time: 2021-09-30 17:11:15
Cache data hit count 4294967295
Slowest loop: 29.48ms; fastest: 0.17ms
I2C nak errors 0, send timeouts 0, receive timeouts 0, finishTimeouts 0, resets 0
=== Storage ===
Free file entries: 10
SD card 0 detected, interface speed: 20.0MBytes/sec
SD card longest read time 1.4ms, write time 0.0ms, max retries 0
=== Move ===
DMs created 83, maxWait 0ms, bed compensation in use: none, comp offset 0.000
=== MainDDARing ===
Scheduled moves 0, completed moves 0, hiccups 0, stepErrors 0, LaErrors 0, Underruns [0, 0, 0], CDDA state -1
=== AuxDDARing ===
Scheduled moves 0, completed moves 0, hiccups 0, stepErrors 0, LaErrors 0, Underruns [0, 0, 0], CDDA state -1
=== Heat ===
Bed heaters = -1 -1 -1 -1, chamberHeaters = -1 -1 -1 -1
=== GCodes ===
Segments left: 0
Movement lock held by null
HTTP is idle in state(s) 0
Telnet is idle in state(s) 0
File is idle in state(s) 0
USB is idle in state(s) 0
Aux is idle in state(s) 0
Trigger is idle in state(s) 0
Queue is idle in state(s) 0
LCD is idle in state(s) 0
Daemon is idle in state(s) 0
Autopause is idle in state(s) 0
Code queue is empty.
=== Network ===
Slowest loop: 29.93ms; fastest: 0.00ms
Responder states: HTTP(1) HTTP(2) HTTP(0) HTTP(0) FTP(0) Telnet(0), 0 sessions
HTTP sessions: 1 of 8
- WiFi -
Network state is active
WiFi module is connected to access point 
Failed messages: pending 0, notready 0, noresp 0
WiFi firmware version 1.26
WiFi MAC address 24:a1:60:2f:8b:7d
WiFi Vcc 3.36, reset reason Turned on by main processor
WiFi flash size 4194304, free heap 19384
WiFi IP address 192.168.8.200
WiFi signal strength -51dBm, mode 802.11n, reconnections 0, sleep mode modem
Clock register 00002002
Socket states: 0 2 4 0 0 0 0 0

Please upload the content of your config.g file.

Config.g
; Configuration file for Duet WiFi (firmware version 3)
; executed by the firmware on start-up
;
; generated by RepRapFirmware Configuration Tool v3.2.3 on Tue Apr 20 2021 01:19:12 GMT-0600 (Mountain Daylight Time)
; Monkeyed with by SupraGuy because obviously I know better than the configuration tool, lol!
; Pinouts https://duet3d.dozuki.com/Wiki/RepRapFirmware_3_overview#Section_Pin_names
; General preferences
G21						; Work in millimetres
G90                                             ; send absolute coordinates...
M83                                             ; ...but relative extruder moves
M550 P"CNC"										; set printer name

; Network
M552 S1                                         ; enable network
M586 P0 S1                                      ; enable HTTP
M586 P1 S0                                      ; disable FTP
M586 P2 S0                                      ; disable Telnet


M453 											; Put the machine into CNC Modes

; Drives
;M669 K0										; explicitly set Cartesian kinematics, even if I should not need to
M569 P0 S1                                      ; physical drive 0 goes backwards (oops, made the connector the wrong way)
M569 P1 S1                                      ; physical drive 1 goes forwards
M569 P2 S0                                      ; physical drive 2 goes forwards
M569 P3 S1                                      ; physical drive 3 goes backwards
M569 P4 S0                                      ; physical drive 4 goes forwards
M584 X0 Y1:4 Z2:3 U4 V3 P3 						; Apply custom drive mapping. X on 0, y on 1&4, Z on 2:3, Y2(U) on 4, Z2(V) on 3
;M584 X0 Y1:3 Z2:4								; set drive mapping: X on drives 0 and 3, Y on 1 and 4, Z on 2

M350 X16 Y16 Z16 U16 V16 I1							; configure microstepping with interpolation
M92 X99.559 Y99.654 U99.654 V402.832 Z402.832		; set steps per mm
M566 X500.00 Y500.00 U500.00 V200.00 Z200.00		; set maximum instantaneous speed changes (mm/min)
M203 X6000.00 Y6000.00 U6000.00 V800.00 Z800.00		; set maximum speeds (mm/min) 5 centimeters per second, lol
M201 X200.00 Y50.00 U50.00 V20.00 Z20.00			; set accelerations (mm/s^2)
M906 X1800.00 Y1800.00 U1800.00 I70					; set motor currents (mA) and motor idle factor in per cent. Idle is high to keep it in place when I change tools.
M906 V1600.00 Z1600.00 I50							; set motor currents (mA) and motor idle factor in per cent. Idle is high to keep it in place when I change tools.
M84 S3000                                        	; Set idle timeout

; Endstops
;M574 X1 Y1 Z2 U1 V2 S1 							; Set active high endstops
M574 X1 S1 P"^xstop"								 ; configure active-high endstop for low end on X via pin xstop
M574 Y1 S1 P"^ystop"
M574 Z2 S1 P"^zstop"
M574 U1 S1 P"^e1stop"
M574 V1 S1 P"^e0stop"
;M574 X1 S1 C0
;M574 Y1 S1 C1
;M574 Z2 S1 C2
;M574 U1 S1 C4
;M574 V1 S1 C3
;M574 U1 S1 P"e0stop"



; Axis Limits
M208 X0 Y0 Z0 U0 V0 S1									; set axis minima (I want to lower Z to -2.5 when I can get tool change sussed)
M208 X1255 Y2435 Z114 U2435 V114 S0						; set axis maxima 

;zprobe
;M558 P8 I1 C"exp.14" H10 F220 T10000							; Z probe connected to Z endstop input
M558 P5 C"!zprobe.in" s0 H15 F220 T10000	
G31 P1000 X0 Y0 Z2.22										; set Z probe trigger value, offset and trigger height
M557 X15:1200 Y15:2400 S300							; define mesh grid

; Heaters
M140 H-1                                        ; disable heated bed (overrides default heater mapping)
M308 S2 Y"drivers" A"DRIVERS"                   ; configure sensor 2 as temperature warning and overheat flags on the TMC2660 on Duet
;M308 S3 Y"mcu-temp" A"MCU"						; configure sensor 3 as thermistor on pin e1temp for left stepper

; Fans
M950 F0 C"fan0" Q500                            ; create fan 0 on pin fan0 and set its frequency
M106 P0 S0 H-1                                  ; set fan 0 value. Thermostatic control is turned off
M950 F1 C"fan1" Q500                            ; create fan 1 on pin fan1 and set its frequency
M106 P1 S1 H-1									; set fan 1 value. Thermostatic control is turned off
;M950 F2 C"fan2" Q500							; create fan 2 on pin fan2 and set its frequency
;M106 P2 H2:3 L0.15 X1 B0.3 T25:60				; set fan 2 value. Thermostatic control is turned on Should cool the driver chips if the MCU temp exceeds 25 degrees or thermostatic trigger on the drivers goes off

; Tools
;M453 C"exp.heater3" Q100			; Set CNC Mode spindle on heater 3, frequency 100Hz not that it's connected.
;M563 P0 D0							; Define tool 1

; Automatic power saving
M911 S10 R11 P"M913 X0 Y0 G91 M83 G1 Z3 E-5 F1000" 			; Set voltage thresholds and actions to run on power loss

; Custom settings are not defined
;M575 P1 S1 B57600							; Enable PanelDUE at 57600 BPS
;G54										; Select Workspace Coordinate 1 for DWC CNC mode display
M501

Please upload the content of any other releveant macro files.

No response

Details specific to your printer.

Lowrider 2 CNC

Links to additional info.

https://forum.duet3d.com/topic/24724/set-work-xyz-button-cnc-gui-missing-m500

What happened?

Expected result
After pressing SET WORK XYZ the values are saved to config-override.g so they can be recalled after power loss or restart.

Observed result
Config-override.g has no updated coordinates.

Steps to reproduce
Press SET WORK XYZ button and see if the values change in the config-override.g file. If not then use M500 and see that the values in config-override.g have changed.

Macros on dashboard confused by cancel on M291

I tried to use the macro below for some testing. When I run it from the dashboard's macros widget, it properly prompts me.

  • If I press "OK", it works as expected.
  • If I press "Cancel" it shows the macro as running and never stops and will not let me re-run the macro.
    • Refreshing the page seems to correct the issue so I can run again
; Prompt user to confirm
M291 P"Are you sure you want to turn ON power?" R"Turn on power" S3

; Set GPIO pin on
M42 P1 S1

Goto Work zero does not act in the most safe method

In other UI's the goto work zero function will for safety raise the Z to max before moving and then after at location move the Z to the correct height, Could you adopt this method as well,

The macro run in other UI's would be like this I believe

G1 H1 Z1500 F1500 ; raise the Z to the highest position
G1 X0 Y0 F1500 ; go directly above the work zero position
G1 Z0 F1500 ; go to the work Z zero position

Too many leftovers

I'm really hoping this is continued as the idea is great. I'm currently building a router which will be using a Duet2. I'm also building a CO2 laser which will use a Duet3 with SBC. With either of these two systems, there are features of the DWC which are not needed or required. Filament, Layer chart, Extrusion, and Fan control. Collected Data could be modified for CNC operations.. Babystepping might be useful. Tool, Bed and Chamber Temps are not needed or required but are hidden on another screen, so not as important as ripping out the other's. I'm not familiar with vue at all to even begin on helping here, but I may end up learning.

Error in CNC screens?

I see this using the current release (3.3)

TypeError: m.probeSpanClasses is not a function
at CNCContainerPanel.vue?666e:7
at VueComponent.renderList [as _l] (vue.runtime.esm.js:2630)
at VueComponent.render (CNCContainerPanel.vue?666e:7)
at VueComponent.m._render (vue.runtime.esm.js:3548)
at VueComponent.w (vue.runtime.esm.js:4066)
at Watcher.get (vue.runtime.esm.js:4479)
at Watcher.run (vue.runtime.esm.js:4554)
at flushSchedulerQueue (vue.runtime.esm.js:4310)
at Array. (vue.runtime.esm.js:1980)
at flushCallbacks (vue.runtime.esm.js:1906)
logError @ vue.runtime.esm.js:1888
globalHandleError @ vue.runtime.esm.js:1879
handleError @ vue.runtime.esm.js:1839
m._render @ vue.runtime.esm.js:3550
w @ vue.runtime.esm.js:4066
get @ vue.runtime.esm.js:4479
run @ vue.runtime.esm.js:4554
flushSchedulerQueue @ vue.runtime.esm.js:4310
(anonymous) @ vue.runtime.esm.js:1980
flushCallbacks @ vue.runtime.esm.js:1906
Promise.then (async)
Ae @ vue.runtime.esm.js:1933
nextTick @ vue.runtime.esm.js:1990
queueWatcher @ vue.runtime.esm.js:4402
update @ vue.runtime.esm.js:4544
notify @ vue.runtime.esm.js:730
reactiveSetter @ vue.runtime.esm.js:1055
set @ vue.runtime.esm.js:1077
patch @ patch.js:106
patch @ patch.js:104
patch @ patch.js:73
patch @ patch.js:102
update @ model.js:423
wrappedMutationHandler @ vuex.esm.js:844
commitIterator @ vuex.esm.js:466
(anonymous) @ vuex.esm.js:465
_withCommit @ vuex.esm.js:624
commit @ vuex.esm.js:464
boundCommit @ vuex.esm.js:409
M.commit @ vuex.esm.js:796
_callee8$ @ index.js:466
tryCatch @ runtime.js:63
invoke @ runtime.js:293
(anonymous) @ runtime.js:118
asyncGeneratorStep @ asyncToGenerator.js:3
_next @ asyncToGenerator.js:25
(anonymous) @ asyncToGenerator.js:32
(anonymous) @ asyncToGenerator.js:21
update @ index.js:433
wrappedActionHandler @ vuex.esm.js:851
dispatch @ vuex.esm.js:516
boundDispatch @ vuex.esm.js:406
_callee$ @ BaseConnector.js:122
tryCatch @ runtime.js:63
invoke @ runtime.js:293
(anonymous) @ runtime.js:118
asyncGeneratorStep @ asyncToGenerator.js:3
_next @ asyncToGenerator.js:25
(anonymous) @ asyncToGenerator.js:32
(anonymous) @ asyncToGenerator.js:21
dispatch @ app.de0417ba.js:42
_callee6$ @ PollConnector.js:882
tryCatch @ runtime.js:63
invoke @ runtime.js:293
(anonymous) @ runtime.js:118
asyncGeneratorStep @ asyncToGenerator.js:3
_next @ asyncToGenerator.js:25
Promise.then (async)
asyncGeneratorStep @ asyncToGenerator.js:13
_next @ asyncToGenerator.js:25
(anonymous) @ asyncToGenerator.js:32
(anonymous) @ asyncToGenerator.js:21
updateLoopModel @ app.de0417ba.js:42
_callee7$ @ PollConnector.js:1061
tryCatch @ runtime.js:63
invoke @ runtime.js:293
(anonymous) @ runtime.js:118
asyncGeneratorStep @ asyncToGenerator.js:3
_next @ asyncToGenerator.js:25
(anonymous) @ asyncToGenerator.js:32
(anonymous) @ asyncToGenerator.js:21
doUpdate @ app.de0417ba.js:42
setTimeout (async)
scheduleUpdate @ PollConnector.js:1074
_callee6$ @ PollConnector.js:948
tryCatch @ runtime.js:63
invoke @ runtime.js:293
(anonymous) @ runtime.js:118
asyncGeneratorStep @ asyncToGenerator.js:3
_next @ asyncToGenerator.js:25
Promise.then (async)
asyncGeneratorStep @ asyncToGenerator.js:13
_next @ asyncToGenerator.js:25
Promise.then (async)
asyncGeneratorStep @ asyncToGenerator.js:13
_next @ asyncToGenerator.js:25
(anonymous) @ asyncToGenerator.js:32
(anonymous) @ asyncToGenerator.js:21
updateLoopModel @ app.de0417ba.js:42
_callee7$ @ PollConnector.js:1061
tryCatch @ runtime.js:63
invoke @ runtime.js:293
(anonymous) @ runtime.js:118
asyncGeneratorStep @ asyncToGenerator.js:3
_next @ asyncToGenerator.js:25
(anonymous) @ asyncToGenerator.js:32
(anonymous) @ asyncToGenerator.js:21
doUpdate @ app.de0417ba.js:42
setTimeout (async)
scheduleUpdate @ PollConnector.js:1074
_callee6$ @ PollConnector.js:948
tryCatch @ runtime.js:63
invoke @ runtime.js:293
(anonymous) @ runtime.js:118
asyncGeneratorStep @ asyncToGenerator.js:3
_next @ asyncToGenerator.js:25
Promise.then (async)
asyncGeneratorStep @ asyncToGenerator.js:13
_next @ asyncToGenerator.js:25
Promise.then (async)
asyncGeneratorStep @ asyncToGenerator.js:13
_next @ asyncToGenerator.js:25
(anonymous) @ asyncToGenerator.js:32
(anonymous) @ asyncToGenerator.js:21
updateLoopModel @ app.de0417ba.js:42
_callee7$ @ PollConnector.js:1061
tryCatch @ runtime.js:63
invoke @ runtime.js:293
(anonymous) @ runtime.js:118
asyncGeneratorStep @ asyncToGenerator.js:3
_next @ asyncToGenerator.js:25
(anonymous) @ asyncToGenerator.js:32
(anonymous) @ asyncToGenerator.js:21
doUpdate @ app.de0417ba.js:42
setTimeout (async)
scheduleUpdate @ PollConnector.js:1074
_callee6$ @ PollConnector.js:948
tryCatch @ runtime.js:63
invoke @ runtime.js:293
(anonymous) @ runtime.js:118
asyncGeneratorStep @ asyncToGenerator.js:3
_next @ asyncToGenerator.js:25
Promise.then (async)
asyncGeneratorStep @ asyncToGenerator.js:13
_next @ asyncToGenerator.js:25
Promise.then (async)
asyncGeneratorStep @ asyncToGenerator.js:13
_next @ asyncToGenerator.js:25
(anonymous) @ asyncToGenerator.js:32
(anonymous) @ asyncToGenerator.js:21
updateLoopModel @ app.de0417ba.js:42
_callee7$ @ PollConnector.js:1061
tryCatch @ runtime.js:63
invoke @ runtime.js:293
(anonymous) @ runtime.js:118
asyncGeneratorStep @ asyncToGenerator.js:3
_next @ asyncToGenerator.js:25
(anonymous) @ asyncToGenerator.js:32
(anonymous) @ asyncToGenerator.js:21
doUpdate @ app.de0417ba.js:42
setTimeout (async)
scheduleUpdate @ PollConnector.js:1074
_callee6$ @ PollConnector.js:948
tryCatch @ runtime.js:63
invoke @ runtime.js:293
(anonymous) @ runtime.js:118
asyncGeneratorStep @ asyncToGenerator.js:3
_next @ asyncToGenerator.js:25
Promise.then (async)
asyncGeneratorStep @ asyncToGenerator.js:13
_next @ asyncToGenerator.js:25
Promise.then (async)
asyncGeneratorStep @ asyncToGenerator.js:13
_next @ asyncToGenerator.js:25
(anonymous) @ asyncToGenerator.js:32
(anonymous) @ asyncToGenerator.js:21
updateLoopModel @ app.de0417ba.js:42
_callee7$ @ PollConnector.js:1061
tryCatch @ runtime.js:63
invoke @ runtime.js:293
(anonymous) @ runtime.js:118
asyncGeneratorStep @ asyncToGenerator.js:3
_next @ asyncToGenerator.js:25
(anonymous) @ asyncToGenerator.js:32
(anonymous) @ asyncToGenerator.js:21
doUpdate @ app.de0417ba.js:42
setTimeout (async)
scheduleUpdate @ PollConnector.js:1074
_callee6$ @ PollConnector.js:948
tryCatch @ runtime.js:63
invoke @ runtime.js:293
(anonymous) @ runtime.js:118
asyncGeneratorStep @ asyncToGenerator.js:3
_next @ asyncToGenerator.js:25
Promise.then (async)
asyncGeneratorStep @ asyncToGenerator.js:13
_next @ asyncToGenerator.js:25
Promise.then (async)
asyncGeneratorStep @ asyncToGenerator.js:13
_next @ asyncToGenerator.js:25
(anonymous) @ asyncToGenerator.js:32
(anonymous) @ asyncToGenerator.js:21
updateLoopModel @ app.de0417ba.js:42
_callee7$ @ PollConnector.js:1061
tryCatch @ runtime.js:63
invoke @ runtime.js:293
(anonymous) @ runtime.js:118
asyncGeneratorStep @ asyncToGenerator.js:3
_next @ asyncToGenerator.js:25
(anonymous) @ asyncToGenerator.js:32
(anonymous) @ asyncToGenerator.js:21
doUpdate @ app.de0417ba.js:42
setTimeout (async)
scheduleUpdate @ PollConnector.js:1074
_callee6$ @ PollConnector.js:948
tryCatch @ runtime.js:63
invoke @ runtime.js:293
(anonymous) @ runtime.js:118
asyncGeneratorStep @ asyncToGenerator.js:3
_next @ asyncToGenerator.js:25
Promise.then (async)
asyncGeneratorStep @ asyncToGenerator.js:13
_next @ asyncToGenerator.js:25
Promise.then (async)
asyncGeneratorStep @ asyncToGenerator.js:13
_next @ asyncToGenerator.js:25
(anonymous) @ asyncToGenerator.js:32
(anonymous) @ asyncToGenerator.js:21
updateLoopModel @ app.de0417ba.js:42
_callee7$ @ PollConnector.js:1061
tryCatch @ runtime.js:63
invoke @ runtime.js:293
(anonymous) @ runtime.js:118
asyncGeneratorStep @ asyncToGenerator.js:3
_next @ asyncToGenerator.js:25
(anonymous) @ asyncToGenerator.js:32
(anonymous) @ asyncToGenerator.js:21
doUpdate @ app.de0417ba.js:42
setTimeout (async)
scheduleUpdate @ PollConnector.js:1074
_callee6$ @ PollConnector.js:948
tryCatch @ runtime.js:63
invoke @ runtime.js:293
(anonymous) @ runtime.js:118
asyncGeneratorStep @ asyncToGenerator.js:3
_next @ asyncToGenerator.js:25
Promise.then (async)
asyncGeneratorStep @ asyncToGenerator.js:13
_next @ asyncToGenerator.js:25
Promise.then (async)
asyncGeneratorStep @ asyncToGenerator.js:13
_next @ asyncToGenerator.js:25
(anonymous) @ asyncToGenerator.js:32
(anonymous) @ asyncToGenerator.js:21
updateLoopModel @ app.de0417ba.js:42
_callee7$ @ PollConnector.js:1061
tryCatch @ runtime.js:63
invoke @ runtime.js:293
(anonymous) @ runtime.js:118
asyncGeneratorStep @ asyncToGenerator.js:3
_next @ asyncToGenerator.js:25
(anonymous) @ asyncToGenerator.js:32
(anonymous) @ asyncToGenerator.js:21
doUpdate @ app.de0417ba.js:42
setTimeout (async)
scheduleUpdate @ PollConnector.js:1074
_callee6$ @ PollConnector.js:948
tryCatch @ runtime.js:63
invoke @ runtime.js:293
(anonymous) @ runtime.js:118
asyncGeneratorStep @ asyncToGenerator.js:3
_next @ asyncToGenerator.js:25
Promise.then (async)
asyncGeneratorStep @ asyncToGenerator.js:13
_next @ asyncToGenerator.js:25
Promise.then (async)
asyncGeneratorStep @ asyncToGenerator.js:13
_next @ asyncToGenerator.js:25
(anonymous) @ asyncToGenerator.js:32
(anonymous) @ asyncToGenerator.js:21
updateLoopModel @ app.de0417ba.js:42
_callee7$ @ PollConnector.js:1061
tryCatch @ runtime.js:63
invoke @ runtime.js:293
(anonymous) @ runtime.js:118
asyncGeneratorStep @ asyncToGenerator.js:3
_next @ asyncToGenerator.js:25
(anonymous) @ asyncToGenerator.js:32
(anonymous) @ asyncToGenerator.js:21
doUpdate @ app.de0417ba.js:42
setTimeout (async)
scheduleUpdate @ PollConnector.js:1074
_callee6$ @ PollConnector.js:948
tryCatch @ runtime.js:63
invoke @ runtime.js:293
(anonymous) @ runtime.js:118
asyncGeneratorStep @ asyncToGenerator.js:3
_next @ asyncToGenerator.js:25
Promise.then (async)
asyncGeneratorStep @ asyncToGenerator.js:13
_next @ asyncToGenerator.js:25
Promise.then (async)
asyncGeneratorStep @ asyncToGenerator.js:13
_next @ asyncToGenerator.js:25
(anonymous) @ asyncToGenerator.js:32
(anonymous) @ asyncToGenerator.js:21
updateLoopModel @ app.de0417ba.js:42
_callee7$ @ PollConnector.js:1061
tryCatch @ runtime.js:63
invoke @ runtime.js:293
(anonymous) @ runtime.js:118
asyncGeneratorStep @ asyncToGenerator.js:3
_next @ asyncToGenerator.js:25
(anonymous) @ asyncToGenerator.js:32
(anonymous) @ asyncToGenerator.js:21
doUpdate @ app.de0417ba.js:42
setTimeout (async)
scheduleUpdate @ PollConnector.js:1074
_callee6$ @ PollConnector.js:948
tryCatch @ runtime.js:63
invoke @ runtime.js:293
(anonymous) @ runtime.js:118
asyncGeneratorStep @ asyncToGenerator.js:3
_next @ asyncToGenerator.js:25
Promise.then (async)
asyncGeneratorStep @ asyncToGenerator.js:13
_next @ asyncToGenerator.js:25
Promise.then (async)
asyncGeneratorStep @ asyncToGenerator.js:13
_next @ asyncToGenerator.js:25
(anonymous) @ asyncToGenerator.js:32
(anonymous) @ asyncToGenerator.js:21
updateLoopModel @ app.de0417ba.js:42
_callee7$ @ PollConnector.js:1061
tryCatch @ runtime.js:63
invoke @ runtime.js:293
(anonymous) @ runtime.js:118
asyncGeneratorStep @ asyncToGenerator.js:3
_next @ asyncToGenerator.js:25
(anonymous) @ asyncToGenerator.js:32
(anonymous) @ asyncToGenerator.js:21
doUpdate @ app.de0417ba.js:42
Show 26 more frames

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.