Browse Source

update

change_pipette_api
zhaohe 1 year ago
parent
commit
e6af70ef8f
  1. 4
      api/api.hpp
  2. 94
      api/apibasic/cmdid.hpp
  3. 5
      api/apibasic/errorcode.hpp
  4. 4
      api/apibasic/module_type_index.hpp
  5. 65
      api/apibasic/reg_index.hpp
  6. 25
      api/zi_mini_servo.hpp

4
api/api.hpp

@ -13,4 +13,6 @@
//
#include "zi_a8000_optical_module.hpp"
//
#include "zi_pipette_ctrl_module.hpp"
#include "zi_pipette_ctrl_module.hpp"
//
#include "zi_mini_servo.hpp"

94
api/apibasic/cmdid.hpp

@ -13,43 +13,14 @@ typedef enum {
kboard_reset = CMDID(0, 0), // para:{}, ack:{}
kevent_bus_reg_change_report = CMDID(0, 100), // para:{}, ack:{}
#if 0
virtual int32_t module_get_state(int32_t state_id, int32_t *state_value) { return err::koperation_not_support; }
virtual int32_t module_read_raw(int32_t startadd, int32_t *data, int32_t *len) { return err::koperation_not_support; }
virtual int32_t module_enable(int32_t enable) { return err::koperation_not_support; }
virtual int32_t module_start() { return err::koperation_not_support; }
#endif
kmodule_ping = CMDID(1, 0), // para:{}, ack:{}
// kmodule_stop = CMDID(1, 1), // para:{}, ack:{}
// kmodule_break = CMDID(1, 2), // para:{}, ack:{}
// kmodule_get_last_exec_status = CMDID(1, 3), // para:{}, ack:{4}
kmodule_get_status = CMDID(1, 4), // para:{}, ack:{4}
kmodule_set_reg = CMDID(1, 5), // para:{4,4}, ack:{}
kmodule_get_reg = CMDID(1, 6), // para:{4}, ack:{4}I
// kmodule_readio = CMDID(1, 7), // para:{}, ack:{4}
// kmodule_writeio = CMDID(1, 8), // para:{4}, ack:{}
// kmodule_read_adc = CMDID(1, 9), // para:{4}, ack:{4}
kmodule_ping = CMDID(1, 0), // para:{}, ack:{}
kmodule_get_status = CMDID(1, 4), // para:{}, ack:{4}
kmodule_set_reg = CMDID(1, 5), // para:{4,4}, ack:{}
kmodule_get_reg = CMDID(1, 6), // para:{4}, ack:{4}I
kmodule_get_error = CMDID(1, 10), // para:{}, ack:{1}
kmodule_clear_error = CMDID(1, 11), // para:{}, ack:{}
// kmodule_set_inited_flag = CMDID(1, 12), // para:{4}, ack:{}
// kmodule_get_inited_flag = CMDID(1, 13), // para:{}, ack:{4}
// kmodule_factory_reset = CMDID(1, 14), // para:{}, ack:{}
// kmodule_flush_cfg = CMDID(1, 15), // para:{}, ack:{}
// kmodule_active_cfg = CMDID(1, 16), // para:{}, ack:{}
// kmodule_read_raw = CMDID(1, 19), // para:{4,4}, ack:{4}
// kmodule_enable = CMDID(1, 20), // para:{4}, ack:{}
// kmodule_start = CMDID(1, 21), // para:{4}, ack:{}
#if 0
virtual ~ZIXYMotor() {}
virtual int32_t xymotor_enable(int32_t enable) { return err::koperation_not_support; }
virtual int32_t xymotor_move_by(int32_t dx, int32_t dy, int32_t motor_velocity) { return err::koperation_not_support; }
virtual int32_t xymotor_move_to(int32_t x, int32_t y, int32_t motor_velocity) { return err::koperation_not_support; }
virtual int32_t xymotor_move_to_zero() { return err::koperation_not_support; }
virtual int32_t xymotor_move_to_zero_and_calculated_shift() { return err::koperation_not_support; }
virtual int32_t xymotor_read_pos(int32_t *x, int32_t *y) { return err::koperation_not_support; }
virtual int32_t xymotor_calculated_pos_by_move_to_zero() { return err::koperation_not_support; }
#endif
kxymotor_enable = CMDID(3, 1), // para:{1}, ack:{}
kxymotor_move_by = CMDID(3, 2), // para:{4,4,4}, ack:{}
kxymotor_move_to = CMDID(3, 3), // para:{4,4,4}, ack:{}
@ -58,36 +29,14 @@ typedef enum {
kxymotor_read_pos = CMDID(3, 6), // para:{}, ack:{4,4}
kxymotor_calculated_pos_by_move_to_zero = CMDID(3, 7), // para:{}, ack:{}
#if 0
virtual int32_t code_scaner_start_scan() { return err::koperation_not_support; }
virtual int32_t code_scaner_stop_scan() { return err::koperation_not_support; }
virtual int32_t code_scaner_read_scaner_result(int32_t startadd, uint8_t *data, int32_t *len) { return err::koperation_not_support; }
#endif
kcode_scaner_start_scan = CMDID(4, 1), // para:{}, ack:{}
kcode_scaner_stop_scan = CMDID(4, 2), // para:{}, ack:{}
kcode_scaner_read_scaner_result = CMDID(4, 3), // para:{4,4}, ack:{4}
#if 0
virtual int32_t pipette_ctrl_init_device() { return err::koperation_not_support; };
virtual int32_t pipette_ctrl_put_tip() { return err::koperation_not_support; };
virtual int32_t pipette_ctrl_move_to_ul(int32_t ul) { return err::koperation_not_support; };
#endif
kpipette_ctrl_init_device = CMDID(5, 1), // para:{}, ack:{}
kpipette_ctrl_put_tip = CMDID(5, 2), // para:{}, ack:{}
kpipette_ctrl_move_to_ul = CMDID(5, 3), // para:{4}, ack:{}
#if 0
virtual int32_t a8000_optical_module_power_ctrl(int32_t state) = 0;
virtual int32_t a8000_optical_open_laser(int32_t type) = 0;
virtual int32_t a8000_optical_close_laser(int32_t type) = 0;
virtual int32_t a8000_optical_set_laster_gain(int32_t type, int32_t gain) = 0;
virtual int32_t a8000_optical_set_scan_amp_gain(int32_t type, int32_t gain) = 0;
virtual int32_t a8000_optical_read_scanner_adc_val(int32_t type, int32_t* adcval) = 0;
virtual int32_t a8000_optical_read_laster_adc_val(int32_t type, int32_t* adcval) = 0;
virtual int32_t a8000_optical_scan_current_point_amp_adc_val(int32_t type, int32_t lastergain, int32_t ampgain, int32_t* laster_fb_val, int32_t* adcval) = 0;
#endif
ka8000_optical_module_power_ctrl = CMDID(6, 0), // para:{4}, ack:{}
ka8000_optical_open_laser = CMDID(6, 1), // para:{4}, ack:{}
ka8000_optical_close_laser = CMDID(6, 2), // para:{4}, ack:{}
@ -100,18 +49,29 @@ typedef enum {
/***********************************************************************************************************************
* STEP_MOTOR *
***********************************************************************************************************************/
kstep_motor_enable = CMDID(10, 1), // para:{1}, ack:{}
kstep_motor_read_pos = CMDID(10, 2), // para:{}, ack:{4}
kstep_motor_easy_rotate = CMDID(10, 3), // para:{4}, ack:{}
kstep_motor_easy_move_by = CMDID(10, 4), // para:{4}, ack:{}
kstep_motor_easy_move_to = CMDID(10, 5), // para:{4}, ack:{}
kstep_motor_easy_move_to_zero = CMDID(10, 6), // para:{1}, ack:{}
kstep_motor_easy_set_current_pos = CMDID(10, 7), // para:{4}, ack:{}
kstep_motor_easy_move_to_io = CMDID(10, 8), // para:{4,4}, ack:{}
kstep_motor_active_cfg = CMDID(10, 9), // para:{4,4}, ack:{}
kstep_motor_stop = CMDID(10, 10), // para:{4}, ack:{}
kstep_motor_read_io_state = CMDID(10, 11), // para:{4}, ack:{}
kstep_motor_enable = CMDID(2, 1), // para:{1}, ack:{}
kstep_motor_read_pos = CMDID(2, 11), // para:{}, ack:{4}
kstep_motor_easy_rotate = CMDID(2, 17), // para:{4}, ack:{}
kstep_motor_easy_move_by = CMDID(2, 18), // para:{4}, ack:{}
kstep_motor_easy_move_to = CMDID(2, 19), // para:{4}, ack:{}
kstep_motor_easy_move_to_zero = CMDID(2, 20), // para:{1}, ack:{}
kstep_motor_easy_set_current_pos = CMDID(2, 21), // para:{4}, ack:{}
kstep_motor_easy_move_to_io = CMDID(2, 22), // para:{4,4}, ack:{}
kstep_motor_active_cfg = CMDID(2, 23), // para:{4,4}, ack:{}
kstep_motor_stop = CMDID(2, 24), // para:{4}, ack:{}
kstep_motor_read_io_state = CMDID(2, 25), // para:{4}, ack:{}
/***********************************************************************************************************************
* MINI_SERVO *
***********************************************************************************************************************/
kmini_servo_enable = CMDID(11, 1),
kmini_servo_read_pos = CMDID(11, 2),
kmini_servo_active_cfg = CMDID(11, 3),
kmini_servo_stop = CMDID(11, 4),
kmini_servo_rotate = CMDID(11, 5),
kmini_servo_move_to = CMDID(11, 6),
kmini_servo_set_mid_point = CMDID(11, 7),
kmini_servo_read_io_state = CMDID(11, 8),
} cmdid_t;

5
api/apibasic/errorcode.hpp

@ -114,6 +114,11 @@ typedef enum {
kstep_motor_not_enable = ERROR_CODE(600, 5), // 电机未使能
kstep_motor_ioindex_out_of_range = ERROR_CODE(600, 6), // IO超出范围
/**
* @brief mini servo error
*/
kmini_servo_not_enable = ERROR_CODE(700, 0), // 未找到零点
} error_t;
const char* error2str(int32_t code);

4
api/apibasic/module_type_index.hpp

@ -7,14 +7,14 @@ typedef enum {
khbot_module = 1, // hbot模块
kmotor_module = 2, // 电机控制
ktemperature_ctrl_module = 3, // 温度控制
kmini_servo_motor_module = 4, // 舵机
kfan_ctrl_module = 5, // 风扇控制
kcode_scaner = 6, // 风扇控制
kpipette_ctrl_module = 7, // 移液体枪控制
ka8000_optical_module = 8, // a8000光学模组
klaster_scaner_module = 9, // a8000光学模组
ktmc_step_motor = 10,
ktmc_step_motor = 10, // 步进电机
kmini_servo_motor_module = 11, // 舵机
} module_type_t;
}

65
api/apibasic/reg_index.hpp

@ -122,35 +122,6 @@ typedef enum {
kreg_laster_scaner_adc_result_overflow = REG_INDEX(43, 0, 13),
kreg_laster_scaner_laster_intensity = REG_INDEX(43, 0, 14),
/*******************************************************************************
* MOTOR_DEFAULT *
*******************************************************************************/
kreg_step_motor_pos = REG_INDEX(10, 0, 1), // 机器人x坐标
kreg_step_motor_io_state = REG_INDEX(10, 0, 2), // IO状态
kreg_step_motor_dpos = REG_INDEX(10, 0, 3), // 执行完上一条指令后的相对位移
kreg_step_motor_shift = REG_INDEX(10, 50, 0), // x偏移
kreg_step_motor_shaft = REG_INDEX(10, 50, 1), // x轴是否反转
kreg_step_motor_one_circle_pulse = REG_INDEX(10, 50, 2), // x轴一圈脉冲数
kreg_step_motor_one_circle_pulse_denominator = REG_INDEX(10, 50, 3), // 设置一圈脉冲数的分母
kreg_step_motor_default_velocity = REG_INDEX(10, 50, 4), // 默认速度
kreg_step_motor_default_acc = REG_INDEX(10, 50, 5), // 默认加速度
kreg_step_motor_default_dec = REG_INDEX(10, 50, 6), // 默认减速度
kreg_step_motor_default_break_dec = REG_INDEX(10, 50, 7), // 默认减速度
kreg_step_motor_ihold = REG_INDEX(10, 50, 8), // 步进电机电流配置
kreg_step_motor_irun = REG_INDEX(10, 50, 9), // 步进电机电流配置
kreg_step_motor_iholddelay = REG_INDEX(10, 50, 10), // 步进电机电流配置
kreg_step_motor_iglobalscaler = REG_INDEX(10, 50, 11), // 步进电机电流配置
kreg_step_motor_run_to_zero_max_d = REG_INDEX(10, 50, 21), // x轴回零最大距离
kreg_step_motor_look_zero_edge_max_d = REG_INDEX(10, 50, 22), // x轴找零边缘最大距离
kreg_step_motor_run_to_zero_speed = REG_INDEX(10, 50, 23), // 回零速度
kreg_step_motor_run_to_zero_dec = REG_INDEX(10, 50, 24), // 回零减速度
kreg_step_motor_look_zero_edge_speed = REG_INDEX(10, 50, 25), // 找零边缘速度
kreg_step_motor_look_zero_edge_dec = REG_INDEX(10, 50, 26), // 找零边缘减速度
kreg_step_motor_default_torque = REG_INDEX(10, 50, 27), // 默认扭矩
kreg_step_motor_max_d = REG_INDEX(10, 50, 28), // 最大限制距离
kreg_step_motor_min_d = REG_INDEX(10, 50, 29), // 最小限制距离
/***********************************************************************************************************************
* XYROBOT *
***********************************************************************************************************************/
@ -181,6 +152,42 @@ typedef enum {
kreg_xyrobot_io_state0 = REG_INDEX(100, 50, 11), // IO状态
kreg_xyrobot_io_state1 = REG_INDEX(100, 50, 12), // IO状态
/***********************************************************************************************************************
* 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_default_acc = REG_INDEX(101, 50, 5), // 默认加速度
kreg_step_motor_default_dec = REG_INDEX(101, 50, 6), // 默认减速度
kreg_step_motor_default_break_dec = REG_INDEX(101, 50, 7), // 默认减速度
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_max_d = REG_INDEX(101, 50, 21), // x轴回零最大距离
kreg_step_motor_look_zero_edge_max_d = REG_INDEX(101, 50, 22), // x轴找零边缘最大距离
kreg_step_motor_run_to_zero_speed = REG_INDEX(101, 50, 23), // 回零速度
kreg_step_motor_run_to_zero_dec = REG_INDEX(101, 50, 24), // 回零减速度
kreg_step_motor_look_zero_edge_speed = REG_INDEX(101, 50, 25), // 找零边缘速度
kreg_step_motor_look_zero_edge_dec = REG_INDEX(101, 50, 26), // 找零边缘减速度
kreg_step_motor_max_d = REG_INDEX(101, 50, 28), // 最大限制距离
kreg_step_motor_min_d = REG_INDEX(101, 50, 29), // 最小限制距离
/***********************************************************************************************************************
* MINI_STEP_MOTOR *
***********************************************************************************************************************/
kreg_mini_servo_pos = REG_INDEX(101, 0, 1), // 位置
kreg_mini_servo_limit_velocity = REG_INDEX(101, 50, 1), // 限制速度
kreg_mini_servo_limit_torque = REG_INDEX(101, 50, 2), // 限制扭矩
kreg_mini_servo_protective_torque = REG_INDEX(101, 50, 3), // 保护扭矩
} reg_index_t;
} // namespace iflytop

25
api/zi_mini_servo.hpp

@ -0,0 +1,25 @@
#pragma once
#include <stdint.h>
#include <functional>
#include "apibasic/basic.hpp"
namespace iflytop {
using namespace std;
class ZIMiniServo {
public:
virtual ~ZIMiniServo() {}
virtual int32_t mini_servo_enable(int32_t enable) = 0;
virtual int32_t mini_servo_read_pos(int32_t* pos) = 0;
virtual int32_t mini_servo_active_cfg() = 0;
virtual int32_t mini_servo_stop(int32_t breakstop) = 0;
virtual int32_t mini_servo_rotate(int32_t direction) = 0;
virtual int32_t mini_servo_move_to(int32_t position) = 0;
virtual int32_t mini_servo_set_mid_point() = 0;
virtual int32_t mini_servo_read_io_state(int32_t ioindex) = 0;
};
} // namespace iflytop
Loading…
Cancel
Save