//RepRap M Codes
// M0 – 等待用户操作 Unconditional stop – Wait for user to press a button on the LCD (Only if ULTRA_LCD is enabled)
// M1 – Same as M0
// M104 – 设置挤出机目标温度 Set extruder target temp
// M105 – 读取当前温度 Read current temp
// M106 – 开风扇 Fan on
// M107 – 关风扇 Fan off
// M109 – 等待挤出机达到目标温度 Wait for extruder current temp to reach target temp.
// M114 – 显示当前坐标 Display current position
//Custom M Codes
// M17 – 启动所有步进电机 Enable/Power all stepper motors
// M18 – 停止所有步进电机 Disable all stepper motors; same as M84
// M20 – 列出SD卡 List SD card
// M21 – 初始化SD卡 Init SD card
// M22 – 释放SD卡 Release SD card
// M23 – 选择SD卡中的文件 Select SD file (M23 filename.g)
// M24 – 开始/继续SD卡打印 Start/resume SD print
// M25 – 暂停SD卡打印 Pause SD print
// M26 – 设置读取SD卡中的文件中的位置 Set SD position in bytes (M26 S12345)
// M27 – 报告SD卡打印状态 Report SD print status
// M28 – 开始SD卡打印 Start SD write (M28 filename.g)
// M29 – 停止SD卡打印 Stop SD write
// M30 – 从SD卡删除文件 Delete file from SD (M30 filename.g)
// M31 – Output time since last M109 or SD card start to serial
// M42 – Change pin status via gcode Use M42 Px Sy to set pin x to value y, when omitting Px the onboard led will be used.
// M80 – 打开电源 Turn on Power Supply
// M81 – 关闭电源 Turn off Power Supply
// M82 – Set E codes absolute (default)
// M83 – Set E codes relative while in Absolute Coordinates (G90) mode
// M84 – Disable steppers until next move,
// or use S<seconds> to specify an inactivity timeout, after which the steppers will be disabled. S0 to disable the timeout.
// M85 – Set inactivity shutdown timer with parameter S<seconds>. To disable set zero (default)
// M92 – Set axis_steps_per_unit – same syntax as G92
// M114 – Output current position to serial port
// M115 – Capabilities string
// M117 – 显示信息 display message
// M119 – 输出结束状态到串口 Output Endstop status to serial port
// M140 – 设置热床目标温度 Set bed target temp
// M190 – 等待热床达到目标温度 Wait for bed current temp to reach target temp.
// M200 – Set filament diameter
// M201 – Set max acceleration in units/s^2 for print moves (M201 X1000 Y1000)
// M202 – Set max acceleration in units/s^2 for travel moves (M202 X1000 Y1000) Unused in Marlin!!
// M203 – Set maximum feedrate that your machine can sustain (M203 X200 Y200 Z300 E10000) in mm/sec
// M204 – Set default acceleration: S normal moves T filament only moves (M204 S3000 T7000) im mm/sec^2 also sets minimum segment time in ms (B20000) to prevent buffer underruns and M20 minimum feedrate
// M205 – advanced settings: minimum travel speed S=while printing T=travel only, B=minimum segment time X= maximum xy jerk, Z=maximum Z jerk, E=maximum E jerk
// M206 – set additional homeing offset
// M207 – set retract length S[positive mm] F[feedrate mm/sec] Z[additional zlift/hop]
// M208 – set recover=unretract length S[positive mm surplus to the M207 S*] F[feedrate mm/sec]
// M209 – S<1=true/0=false> enable automatic retract detect if the slicer did not support G10/11: every normal extrude-only move will be classified as retract depending on the direction.
// M218 – set hotend offset (in mm): T<extruder_number> X<offset_on_X> Y<offset_on_Y>
// M220 S<factor in percent>- set speed factor override percentage
// M221 S<factor in percent>- set extrude factor override percentage
// M240 – 触发摄像头照相 Trigger a camera to take a photograph
// M300 – 蜂鸣器发声 Play beepsound S<frequency Hz> P<duration ms>
// M301 – 设置PID参数 Set PID parameters P I and D
// M302 – 允许冷却挤出头 Allow cold extrudes
// M303 – PID relay autotune S<temperature> sets the target temperature. (default target temperature = 150C)
// M304 – 设置热床PID参数 Set bed PID parameters P I and D
// M400 – 完成所有的移动 Finish all moves
// M500 – 在EEPROM中存储参数 stores paramters in EEPROM
// M501 – 从EEPROM中读取参数 reads parameters from EEPROM (if you need reset them after you changed them temporarily).
// M502 – 恢复出厂设置 reverts to the default “factory settings”. You still need to store them in EEPROM afterwards if you want to.
// M503 – 输出当前设置 print the current settings (from memory not from eeprom)
// M540 – Use S[0|1] to enable or disable the stop SD card print on endstop hit (requires ABORT_ON_ENDSTOP_HIT_FEATURE_ENABLED)
// M600 – Pause for filament change X[pos] Y[pos] Z[relative lift] E[initial retract] L[later retract distance for removal]
// M907 – Set digital trimpot motor current using axis codes.
// M908 – 直接控制数字电位器 Control digital trimpot directly.
// M350 – 设置细分步进模式 Set microstepping mode.
// M351 – 直接切换MS1 MS2引脚 Toggle MS1 MS2 pins directly.
// M928 – 开始SD卡记录 Start SD logging (M928 filename.g) – ended by M29
// M999 – 在运行出错后重新启动 Restart after being stopped by error