-
Notifications
You must be signed in to change notification settings - Fork 296
JSON Active Comments
Alden Hart edited this page Jul 7, 2016
·
21 revisions
This page describes using Gcode comments to carry JSON commands such that they can extend existing Gcode functions or insert control functions that execute synchronously with the Gcode.
##Gcode Comments
Gcode comments possess a number of features that extend their capabilities beyond classic Gcode. Classic Gcode only defines parentheses comments (...)
and message comments (msg...)
. Additionally, a slash character /
in the first character is a block delete, which can be considered a type of comment. G2 handles comments as so:
- Comments that start with a semicolon ';' end the line -- everything including and after the ';' will be ignored
- Comments that start with a '(' and end with a ')', known as "inline comments", will be removed, UNLESS they are an active comment (described next)
- JSON Active comments are comments with JSON immediately inside the parentheses:
({...})
- If there's a space or anything else between the '(' and the '{' then it will be treated as a normal comment.
- Active comments carry content that GCode can't express, but is intrinsically part of the command on that line.
- Gcode message active comments are comments with the letters
msg
(case insensitive) immediately following the open parenthesis:(Msg....)
- The string enclosed by the trailing
g
and the closing paren will be returned in the next status report as a"msg":"...."
tag
- The string enclosed by the trailing
- Multiple inline comments
(...)
are allowed, and gcode and active comments in between will be retained. - Multiple active comments are allowed, and will be combined and treated as if they were separated by commas.
- Ex:
M100 ({he1st:200}) ({he2st:210})
will be treated the same asM100 ({he1st:200, he2st:210})
- Ex:
Valid comment cases | Notes: |
---|---|
G0X10 |
command only - no comment |
G0X10 (comment text) |
command with comment |
G0X10 (comment text |
acceptable, but a warning may be issued for the comment not being terminated |
G0X10 ;comment text |
comment delimited by semicolon |
(MSGSend this string) |
will report back as "msg":"Send this string"
|
(comment text) |
there is no command on this line |
G0 (traverse) X10 (to X ten) Y12 (and Y twelve) |
Command G0X10Y12 with multiple inline comments |
M100 (set heater temp to 210:) ({he1st:210}) |
Command with inline comment and active comment |
Getting Started Pages
- Home
- What is g2core?
- Who uses g2core?
- Jerk-Controlled Motion
- Getting Started with g2core
- Connecting to g2core
- Configuring g2core
- Flashing g2core
- Troubleshooting
Reference Pages
- Gcodes
- Mcodes
- Text Mode
- JSON Communications
- GPIO Digital IO
- Alarms & Exceptions
- Power Management
- Coordinate Systems
- Status Reports
- Status Codes
- G2 Communications
- Tool Offsets and Selection
- Probing
- Feedhold, Resume, Job Kill
- Marlin Compatibility
- 9 Axis UVW Operation
- gQuintic Specs
Discussion Topics
- Roadmap
- GPIO for 1.X Releases
- Toolheads
- Raster Streaming Prototol
- g2core REST Interface
- Gcode Parsing
- G2 3DP Dialect
- Consensus Gcode
- Digital DRO
- Overview of Motion Processing
Developer Pages
- Development & Contribution
- Branching and Release - DRAFT
- Getting Started with g2core Development
- Project Structure & Motate
- Compiling G2
- OSX w/Xcode
- OSX/Linux Command Line
- Windows10 w/AtmelStudio7
- Debugging G2 on OSX
- Board and Machine Profiles
- Arduino Due Pinout
- Arduino DUE External Interfaces
- Diagnostics
- Debugging w/Motate Pins
- Development Troubleshooting
- g2core Communications
- Git Procedures
- Windows 10 / VMware 8 Issues
- Dual Endpoint USB Internals
- G2core License
- VSCode Setup
- Compatibility Axioms
- Wiki History