解析包括
- 去除指令行中的注释文字, //okay
- 去除指令代码前后多余的空格,//
- 将指令代码小写字母全部变成大写字母,//
- 检查必须存在的断号是否存在,
- 检查程序段字符长度是否超过最大限制,
- 检查输入参数格式是否合法等。
typedef struct block_struct { unsigned char sequence_number; // 段号 unsigned char line_number; // 自然行号 unsigned char g_codes[2]; // g 命令 一个程序段中最多可有两个 g 命令 unsigned char m_codes[1]; // m 命令 一个程序段中最多可有一个 m 命令 unsigned char t_flag:1; // T:刀具选择 unsigned char s_flag:1; // S:spindle 转速 unsigned char f_flag:1; // F:进给速度 unsigned char x_flag:1; // x z 轴坐标 unsigned char z_flag:1; unsigned char u_flag:1; // u w 相对坐标 unsigned char w_flag:1; unsigned char i_flag:1; // 圆弧圆心坐标 unsigned char k_flag:1; unsigned char r_flag:1; // 圆弧半径 unsigned char e_flag:1; // 英制螺纹导程 unsigned char d_flag:1; // 延时 unsigned char p_flag:1; // 公制螺纹导程或者跳转入口 unsigned char l_flag:1; // 循环次数 或螺纹头数 或轮廓段数 unsigned char h_flag:1; // for g40 g41 g42 unsigned char g_no:1; // 1 - 无 unsigned char t_number; unsigned char l_number; float s_number; float f_number; union{ float x_number; float u_number; }x_u; union{ float z_n