The cncjs server defines an API for sending and receiving events over websockets to a CNC controller. Clients of this API may wish to make use of the client library cncjs-controller.
websockets, send events
The CNC controller running on the server emits these events. One can use the cncjs-controller#addListener() to register callbacks for events.
| event | data |
|---|---|
| startup | {loadedControllers, baudrates, ports} |
| config:change | config |
| task:start | taskId |
| task:finish | (taskId, code) |
| task:error | (taskId, err) |
| serialport:list | ports |
| serialport:change | {port, inuse=true} |
| serialport:open | {port, baudrate, controllerType, inuse=true} |
| serialport:close | {port, inuse=false} |
| serialport:error | {err, port} |
| serialport:read | serial output |
| serialport:write | (data, {…context, source}) |
| gcode:load | (name, gcode, context) |
| gcode:unload | none |
| feeder:status | {hold, holdReason, queue, pending, changed} |
| sender:status | {sp, hold, holdReason, name, context, size, total, sent, received, startTime, finishTime, elapsedTime, remaniningTime} |
| workflow:state | workflow.state |
| controller:settings | (‘Grbl’, {version, parameters, settings) |
| controller:state | ‘Grbl’, {state, parserstate} |
| message |
The CNC controller listens for and handles these events. The cncjs-controller has functions that send these events to the server.
| Event | Controller function |
|---|---|
| open | openPort(port, options, callback) |
| close | closePort(port, callback) |
| list | listPorts(callback) |
| command | command(cmd, port, …args) |
| write | write(port, data, context) |
| writeln | writeln(port data, context) |
The ‘command’ event can be used to send the following commands to the controller.
| Command String | Parameters | Description |
|---|---|---|
| gcode:load | name, gcode, context, callback | load G-code |
| gcode:unload | none | unload G-code |
| gcode:start | none | start sending G-code |
| gcode:stop | { force: true } | stop sending G-code |
| gcode:pause | none | pause |
| gcode:resume | none | resume |
| feeder:feed | ||
| feeder:start | ||
| feeder:stop | ||
| feeder:clear | ||
| feedhold | feed hold | |
| cyclestart | ||
| statusreport | ||
| homing | start a homing cycle | |
| sleep | enter sleep | |
| unlock | unlock | |
| reset | reset | |
| feedOverride | ||
| spindleOverride | ||
| rapidOverride | ||
| energizeMotors:on | ||
| energizeMotors:off | ||
| gcode | gcode, context | |
| macro:load | ‘<macro-id>’, context, callback | |
| macro:run | ‘<macro-id>’, context, callback | |
| watchdir:load | ‘/path/to/file’, callback |
These events occur in the life cycle of the webocket connection. Full documentation at socket.io
| Event | Data |
|---|---|
| connect | none |
| connect_error | error |
| connect_timeout | none |
| error | error |
| disconnect | reason |
| reconnect | attempt |
| reconnect_attempt | attempt |
| reconnecting | attempt |
| reconnect_error | error |
| reconnect_failed |