#pragma once #include namespace iflytop { using namespace std; #define REG_INDEX(type, offset, subconfigindex) (type * 100 + offset + subconfigindex) typedef enum { /******************************************************************************* * 模块通用配置和状态 * *******************************************************************************/ kreg_module_version = REG_INDEX(0, 0, 0), // 模块版本 kreg_module_type = REG_INDEX(0, 0, 1), // 模块类型 kreg_module_status = REG_INDEX(0, 0, 2), // 0idle,1busy,2error kreg_module_errorcode = REG_INDEX(0, 0, 3), // inited_flag /*********************************************************************************************************************** * 光学模组私有方法 * ***********************************************************************************************************************/ kreg_opt_module_do_action0 = REG_INDEX(0, 0, 40), // 方法0 kreg_opt_module_action_param1 = REG_INDEX(0, 0, 41), // 方法1 kreg_opt_module_action_param2 = REG_INDEX(0, 0, 42), // 方法2 kreg_opt_module_action_param3 = REG_INDEX(0, 0, 43), // 方法3 kreg_opt_module_action_ack1 = REG_INDEX(0, 0, 51), // ACK1 kreg_opt_module_action_ack2 = REG_INDEX(0, 0, 52), // ACK2 /*********************************************************************************************************************** * step_motor * ***********************************************************************************************************************/ kreg_step_motor_pos = REG_INDEX(101, 0, 1), // 机器人x坐标 kreg_step_motor_dpos = REG_INDEX(101, 0, 3), // 执行完上一条指令后的相对位移 kreg_step_motor_shift = REG_INDEX(101, 50, 0), // x偏移 kreg_step_motor_shaft = REG_INDEX(101, 50, 1), // x轴是否反转 kreg_step_motor_one_circle_pulse = REG_INDEX(101, 50, 2), // x轴一圈脉冲数 kreg_step_motor_one_circle_pulse_denominator = REG_INDEX(101, 50, 3), // 设置一圈脉冲数的分母 kreg_step_motor_default_velocity = REG_INDEX(101, 50, 4), // 默认速度 kreg_step_motor_ihold = REG_INDEX(101, 50, 8), // 步进电机电流配置 kreg_step_motor_irun = REG_INDEX(101, 50, 9), // 步进电机电流配置 kreg_step_motor_iholddelay = REG_INDEX(101, 50, 10), // 步进电机电流配置 kreg_step_motor_iglobalscaler = REG_INDEX(101, 50, 11), // 步进电机电流配置 kreg_step_motor_run_to_zero_speed = REG_INDEX(101, 50, 23), // 回零速度 kreg_step_motor_look_zero_edge_speed = REG_INDEX(101, 50, 25), // 找零边缘速度 kreg_step_motor_max_d = REG_INDEX(101, 50, 28), // 最大限制距离 kreg_step_motor_min_d = REG_INDEX(101, 50, 29), // 最小限制距离 kreg_step_motor_in_debug_mode = REG_INDEX(101, 50, 30), // 驱动器处于调试模式 kreg_step_motor_vstart = REG_INDEX(101, 50, 31), // a1起作用的速度 kreg_step_motor_a1 = REG_INDEX(101, 50, 32), // kreg_step_motor_amax = REG_INDEX(101, 50, 33), kreg_step_motor_v1 = REG_INDEX(101, 50, 34), kreg_step_motor_dmax = REG_INDEX(101, 50, 35), kreg_step_motor_d1 = REG_INDEX(101, 50, 36), kreg_step_motor_vstop = REG_INDEX(101, 50, 37), kreg_step_motor_tzerowait = REG_INDEX(101, 50, 38), /*********************************************************************************************************************** * MINI_STEP_MOTOR * ***********************************************************************************************************************/ kreg_mini_servo_pos = REG_INDEX(102, 0, 1), // 位置 kreg_mini_servo_limit_velocity = REG_INDEX(102, 50, 1), // 限制速度 kreg_mini_servo_limit_torque = REG_INDEX(102, 50, 2), // 限制扭矩 kreg_mini_servo_protective_torque = REG_INDEX(102, 50, 3), // 保护扭矩 } reg_index_t; typedef struct { int index; const char* regname; } reginfo_t; const char* regindex2str(int32_t code); reginfo_t* reg_get_table(); int reg_get_table_size(); } // namespace iflytop