Browse Source

update

change_pipette_api
zhaohe 2 years ago
parent
commit
d330270593
  1. 58
      api/errorcode.cpp
  2. 113
      api/errorcode.hpp
  3. 20
      api/zi_module.hpp
  4. 10
      api/zi_motor.hpp
  5. 6
      api/zi_xymotor.hpp
  6. 4
      cmdid.hpp
  7. 31
      protocol_parser.cpp
  8. 29
      protocol_proxy.cpp
  9. 37
      protocol_proxy.hpp
  10. 30
      zmodule_device_manager.cpp
  11. 35
      zmodule_device_manager.hpp
  12. 43
      zmodule_device_script_cmder_paser.cpp

58
api/errorcode.cpp

@ -9,6 +9,20 @@ const char* error2str(int32_t code) {
switch (code) {
ERR2STR(ksucc);
ERR2STR(kfail);
ERR2STR(kparam_out_of_range);
ERR2STR(koperation_not_support);
ERR2STR(kdevice_is_busy);
ERR2STR(kdevice_is_offline);
ERR2STR(kovertime);
ERR2STR(knoack);
ERR2STR(kerrorack);
ERR2STR(kdevice_offline);
ERR2STR(kparse_json_err);
ERR2STR(ksubdevice_overtime);
ERR2STR(kbuffer_not_enough);
ERR2STR(kcmd_not_found);
ERR2STR(kcmd_param_num_error);
ERR2STR(kcheckcode_is_error);
ERR2STR(ksys_error);
ERR2STR(ksys_create_file_error);
ERR2STR(ksys_create_dir_error);
@ -21,36 +35,17 @@ const char* error2str(int32_t code) {
ERR2STR(ksys_delete_file_error);
ERR2STR(ksys_delete_dir_error);
ERR2STR(ksys_copy_file_error);
ERR2STR(kce_device_not_zero);
ERR2STR(kce_over_temperature);
ERR2STR(kce_over_voltage);
ERR2STR(kce_param_out_of_range);
ERR2STR(kce_not_found_zero_point);
ERR2STR(kce_not_found_x_zero_point);
ERR2STR(kce_not_found_y_zero_point);
ERR2STR(kce_x_leave_away_zero_point_fail);
ERR2STR(kce_y_leave_away_zero_point_fail);
ERR2STR(kce_operation_not_support);
ERR2STR(kce_device_is_busy);
ERR2STR(kce_device_is_offline);
ERR2STR(kce_break_by_user);
ERR2STR(kce_overtime);
ERR2STR(kce_noack);
ERR2STR(kce_errorack);
ERR2STR(kce_device_offline);
ERR2STR(kce_parse_json_err);
ERR2STR(kce_subdevice_overtime);
ERR2STR(kdbe_user_not_exist);
ERR2STR(kdbe_catch_exception);
ERR2STR(kharde_unfound);
ERR2STR(kre_catch_exception);
ERR2STR(kinteraction_error_passwd_error);
ERR2STR(kinteraction_error_user_not_exist);
ERR2STR(kce_buffer_not_enough);
ERR2STR(kce_cmd_not_found);
ERR2STR(kce_cmd_param_num_error);
ERR2STR(kce_no_such_module);
ERR2STR(kmodule_not_inited);
ERR2STR(kmodule_not_found);
ERR2STR(kmodule_opeation_break_by_user);
ERR2STR(kmotor_not_found_zero_point);
ERR2STR(kmotor_did_not_go_zero);
ERR2STR(kmotor_over_temperature);
ERR2STR(kmotor_over_voltage);
ERR2STR(kxymotor_not_found_x_zero_point);
ERR2STR(kxymotor_not_found_y_zero_point);
ERR2STR(kxymotor_x_find_zero_edge_fail);
ERR2STR(kxymotor_y_find_zero_edge_fail);
ERR2STR(kSMTP2_NoError);
ERR2STR(kSMTP2_InitFail);
ERR2STR(kSMTP2_InvalidCmd);
@ -73,6 +68,9 @@ const char* error2str(int32_t code) {
ERR2STR(kSMTP2_VolumeError);
ERR2STR(kSMTP2_TipAlreadyLoad);
ERR2STR(kSMTP2_TipLoadFail);
ERR2STR(kmicro_noErr);
ERR2STR(kmicro_uartSendFail);
ERR2STR(kmicro_uartRecvFail);
default:
return "known";
break;

113
api/errorcode.hpp

@ -10,6 +10,20 @@ using namespace std;
typedef enum {
ksucc = ERROR_CODE(0, 0),
kfail = ERROR_CODE(0, 1),
kparam_out_of_range = ERROR_CODE(0, 2), // 参数超出范围
koperation_not_support = ERROR_CODE(0, 3), // 操作不支持
kdevice_is_busy = ERROR_CODE(0, 4), // 设备忙
kdevice_is_offline = ERROR_CODE(0, 5), // 设备离线
kovertime = ERROR_CODE(0, 6),
knoack = ERROR_CODE(0, 7),
kerrorack = ERROR_CODE(0, 8),
kdevice_offline = ERROR_CODE(0, 9),
kparse_json_err = ERROR_CODE(0, 10),
ksubdevice_overtime = ERROR_CODE(0, 11),
kbuffer_not_enough = ERROR_CODE(0, 12),
kcmd_not_found = ERROR_CODE(0, 13),
kcmd_param_num_error = ERROR_CODE(0, 14),
kcheckcode_is_error = ERROR_CODE(0, 15),
/**
* @brief
@ -28,75 +42,56 @@ typedef enum {
ksys_copy_file_error = ERROR_CODE(100, 11),
/**
* @brief 50000
* @brief module error
*/
kce_device_not_zero = ERROR_CODE(10000, 0), // 设备未归零
kce_over_temperature = ERROR_CODE(10000, 1), // 过温
kce_over_voltage = ERROR_CODE(10000, 2), // 过压
kce_param_out_of_range = ERROR_CODE(10000, 3), // 参数超出范围
kce_not_found_zero_point = ERROR_CODE(10000, 4), // 未找到零点
kce_not_found_x_zero_point = ERROR_CODE(10000, 5), // 未找到零点
kce_not_found_y_zero_point = ERROR_CODE(10000, 6), // 未找到零点
kce_x_leave_away_zero_point_fail = ERROR_CODE(10000, 7), // 离开零点失败
kce_y_leave_away_zero_point_fail = ERROR_CODE(10000, 8), // 离开零点失败
kce_operation_not_support = ERROR_CODE(10000, 9), // 操作不支持
kce_device_is_busy = ERROR_CODE(10000, 10), // 设备忙
kce_device_is_offline = ERROR_CODE(10000, 11), // 设备离线
kce_break_by_user = ERROR_CODE(10000, 12), // 用户中断
kce_overtime = ERROR_CODE(10000, 13),
kce_noack = ERROR_CODE(10000, 14),
kce_errorack = ERROR_CODE(10000, 15),
kce_device_offline = ERROR_CODE(10000, 16),
kce_parse_json_err = ERROR_CODE(10000, 17),
kce_subdevice_overtime = ERROR_CODE(10000, 18),
kdbe_user_not_exist = ERROR_CODE(10000, 19),
kdbe_catch_exception = ERROR_CODE(10000, 20),
kharde_unfound = ERROR_CODE(10000, 21),
kre_catch_exception = ERROR_CODE(10000, 22),
kinteraction_error_passwd_error = ERROR_CODE(10000, 23), // 密码错误
kinteraction_error_user_not_exist = ERROR_CODE(10000, 24), // 用户不存在
kce_buffer_not_enough = ERROR_CODE(10000, 25),
kce_cmd_not_found = ERROR_CODE(10000, 26),
kce_cmd_param_num_error = ERROR_CODE(10000, 27),
kce_no_such_module = ERROR_CODE(10000, 28),
kce_modbusCRC16checkfail = ERROR_CODE(10000, 29),
kmodule_not_inited = ERROR_CODE(200, 0),
kmodule_not_found = ERROR_CODE(200, 1),
kmodule_opeation_break_by_user = ERROR_CODE(200, 2), // 用户中断
/**
* @brief STMP2错误
* @brief motor error
*/
kSMTP2_NoError = ERROR_CODE(20000, 0), // 无错误
kSMTP2_InitFail = ERROR_CODE(20000, 1), // 初始化失败
kSMTP2_InvalidCmd = ERROR_CODE(20000, 2), // 无效命令
kSMTP2_InvalidArg = ERROR_CODE(20000, 3), // 无效参数
kSMTP2_PressureSensorError = ERROR_CODE(20000, 4), // 压力传感器故障
kSMTP2_OverPressure = ERROR_CODE(20000, 5), // 超过压力
kSMTP2_LLDError = ERROR_CODE(20000, 6), // LLD 错误
kSMTP2_DeviceNotInit = ERROR_CODE(20000, 7), // 设备未初始化
kSMTP2_TipPopError = ERROR_CODE(20000, 8), // Tip 弹出错误
kSMTP2_PumpOverload = ERROR_CODE(20000, 9), // 泵过载
kSMTP2_TipDrop = ERROR_CODE(20000, 10), // Tip 脱落
kSMTP2_CanBusError = ERROR_CODE(20000, 11), // CAN 总线故障
kSMTP2_InvalidChecksum = ERROR_CODE(20000, 12), // 无效校验和
kSMTP2_EEPROMError = ERROR_CODE(20000, 13), // EEPROM 故障
kSMTP2_CmdBufferEmpty = ERROR_CODE(20000, 14), // 命令缓冲区为空
kSMTP2_CmdBufferOverflow = ERROR_CODE(20000, 15), // 命令溢出
kSMTP2_TipBlock = ERROR_CODE(20000, 16), // Tip 堵塞
kSMTP2_AirSuction = ERROR_CODE(20000, 17), // 吸入空气
kSMTP2_Bubble = ERROR_CODE(20000, 18), // 液体中有气泡/泡沫
kSMTP2_VolumeError = ERROR_CODE(20000, 19), // 吸取/分配量不准确
kSMTP2_TipAlreadyLoad = ERROR_CODE(20000, 20), // Tip已经装载
kSMTP2_TipLoadFail = ERROR_CODE(20000, 21),
kmotor_not_found_zero_point = ERROR_CODE(300, 0), // 未找到零点
kmotor_did_not_go_zero = ERROR_CODE(300, 1), // 设备未归零
kmotor_over_temperature = ERROR_CODE(300, 2), // 过温
kmotor_over_voltage = ERROR_CODE(300, 3), // 过压
kxymotor_not_found_x_zero_point = ERROR_CODE(300, 4), // 未找到零点
kxymotor_not_found_y_zero_point = ERROR_CODE(300, 5), // 未找到零点
kxymotor_x_find_zero_edge_fail = ERROR_CODE(300, 6), // 离开零点失败
kxymotor_y_find_zero_edge_fail = ERROR_CODE(300, 7), // 离开零点失败
/**
* @brief
* @brief STMP2错误
*/
kmicro_noErr = ERROR_CODE(20050, 0), //
kmicro_uartSendFail = ERROR_CODE(20050, 1), //
kmicro_uartRecvFail = ERROR_CODE(20050, 2), //
kSMTP2_NoError = ERROR_CODE(400, 0), // 无错误
kSMTP2_InitFail = ERROR_CODE(400, 1), // 初始化失败
kSMTP2_InvalidCmd = ERROR_CODE(400, 2), // 无效命令
kSMTP2_InvalidArg = ERROR_CODE(400, 3), // 无效参数
kSMTP2_PressureSensorError = ERROR_CODE(400, 4), // 压力传感器故障
kSMTP2_OverPressure = ERROR_CODE(400, 5), // 超过压力
kSMTP2_LLDError = ERROR_CODE(400, 6), // LLD 错误
kSMTP2_DeviceNotInit = ERROR_CODE(400, 7), // 设备未初始化
kSMTP2_TipPopError = ERROR_CODE(400, 8), // Tip 弹出错误
kSMTP2_PumpOverload = ERROR_CODE(400, 9), // 泵过载
kSMTP2_TipDrop = ERROR_CODE(400, 10), // Tip 脱落
kSMTP2_CanBusError = ERROR_CODE(400, 11), // CAN 总线故障
kSMTP2_InvalidChecksum = ERROR_CODE(400, 12), // 无效校验和
kSMTP2_EEPROMError = ERROR_CODE(400, 13), // EEPROM 故障
kSMTP2_CmdBufferEmpty = ERROR_CODE(400, 14), // 命令缓冲区为空
kSMTP2_CmdBufferOverflow = ERROR_CODE(400, 15), // 命令溢出
kSMTP2_TipBlock = ERROR_CODE(400, 16), // Tip 堵塞
kSMTP2_AirSuction = ERROR_CODE(400, 17), // 吸入空气
kSMTP2_Bubble = ERROR_CODE(400, 18), // 液体中有气泡/泡沫
kSMTP2_VolumeError = ERROR_CODE(400, 19), // 吸取/分配量不准确
kSMTP2_TipAlreadyLoad = ERROR_CODE(400, 20), // Tip已经装载
kSMTP2_TipLoadFail = ERROR_CODE(400, 21),
/**
* @brief modbus错误
* @brief
*/
kmicro_noErr = ERROR_CODE(500, 0), //
kmicro_uartSendFail = ERROR_CODE(500, 1), //
kmicro_uartRecvFail = ERROR_CODE(500, 2), //
} error_t;

20
api/zi_module.hpp

@ -13,17 +13,19 @@ class ZIModule {
virtual int32_t getid(int32_t *id) = 0;
virtual int32_t stop() = 0;
virtual int32_t brake() = 0;
virtual int32_t get_last_exec_status(int32_t *status) = 0;
virtual int32_t get_status(int32_t *status) = 0;
virtual int32_t module_stop() = 0;
virtual int32_t module_break() = 0;
virtual int32_t module_get_last_exec_status(int32_t *status) = 0;
virtual int32_t module_get_status(int32_t *status) = 0;
virtual int32_t module_get_error(int32_t *iserror) = 0;
virtual int32_t module_clear_error() = 0;
virtual int32_t set_param( int32_t param_id, int32_t param_value) { return err::kce_operation_not_support; }
virtual int32_t get_param( int32_t param_id, int32_t *param_value) { return err::kce_operation_not_support; }
virtual int32_t module_set_param(int32_t param_id, int32_t param_value) { return err::koperation_not_support; }
virtual int32_t module_get_param(int32_t param_id, int32_t *param_value) { return err::koperation_not_support; }
virtual int32_t readio(int32_t *io) { return err::kce_operation_not_support; }
virtual int32_t writeio(int32_t io) { return err::kce_operation_not_support; }
virtual int32_t module_readio(int32_t *io) { return err::koperation_not_support; }
virtual int32_t module_writeio(int32_t io) { return err::koperation_not_support; }
virtual int32_t read_adc(int adcindex, int32_t *adc) { return err::kce_operation_not_support; }
virtual int32_t module_read_adc(int32_t adcindex, int32_t *adc) { return err::koperation_not_support; }
};
} // namespace iflytop

10
api/zi_motor.hpp

@ -10,11 +10,11 @@ using namespace std;
class ZIMotor {
public:
virtual ~ZIMotor() {}
virtual int32_t motor_enable(int32_t enable) { return err::kce_operation_not_support; }
virtual int32_t motor_rotate(int32_t direction, int32_t velocitylevel) { return err::kce_operation_not_support; }
virtual int32_t motor_move_by(int32_t distance, int32_t velocitylevel) { return err::kce_operation_not_support; }
virtual int32_t motor_move_to(int32_t position, int32_t velocitylevel) { return err::kce_operation_not_support; }
virtual int32_t motor_move_to_with_torque(int32_t pos, int32_t torque) { return err::kce_operation_not_support; }
virtual int32_t motor_enable(int32_t enable) { return err::koperation_not_support; }
virtual int32_t motor_rotate(int32_t direction, int32_t motor_velocity, int32_t acc) { return err::koperation_not_support; }
virtual int32_t motor_move_by(int32_t distance, int32_t motor_velocity, int32_t acc) { return err::koperation_not_support; }
virtual int32_t motor_move_to(int32_t position, int32_t motor_velocity, int32_t acc) { return err::koperation_not_support; }
virtual int32_t motor_move_to_with_torque(int32_t pos, int32_t torque) { return err::koperation_not_support; }
// s32 pos, s32 speed, s32 torque,
};

6
api/zi_xymotor.hpp

@ -10,8 +10,8 @@ using namespace std;
class ZIXYMotor {
public:
virtual ~ZIXYMotor() {}
virtual int32_t xymotor_enable(bool enable) { return err::kce_operation_not_support; }
virtual int32_t xymotor_move_by(int32_t dx, int32_t dy, int32_t velocitylevel) { return err::kce_operation_not_support; }
virtual int32_t xymotor_move_to(int32_t x, int32_t y, int32_t velocitylevel) { return err::kce_operation_not_support; }
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; }
};
} // namespace iflytop

4
cmdid.hpp

@ -5,7 +5,7 @@ namespace iflytop {
namespace zcr {
typedef enum {
kmodule_stop = CMDID(1, 1), // para:{}, ack:{}
kmodule_brake = CMDID(1, 2), // 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_param = CMDID(1, 5), // para:{4,4}, ack:{}
@ -13,6 +13,8 @@ typedef enum {
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_get_error = CMDID(1, 10), // para:{}, ack:{1}
kmodule_clear_error = CMDID(1, 11), // para:{}, ack:{}
kmotor_enable = CMDID(2, 1), // para:{1}, ack:{}
kmotor_rotate = CMDID(2, 2), // para:{1,4}, ack:{}

31
protocol_parser.cpp

@ -10,13 +10,13 @@ using namespace std;
if (cmdid == var_cmdid) { \
auto* mod = dynamic_cast<var_moduleType*>(module); \
if (mod == nullptr) { \
m_cancmder->sendErrorAck(rxcmd, err::kce_operation_not_support); \
m_cancmder->sendErrorAck(rxcmd, err::koperation_not_support); \
return; \
}
#define CHECK_PARAM_NUM(num) \
if (paramNum != num) { \
m_cancmder->sendErrorAck(rxcmd, err::kce_cmd_param_num_error); \
m_cancmder->sendErrorAck(rxcmd, err::kcmd_param_num_error); \
return; \
}
@ -76,22 +76,25 @@ void ZIProtocolParser::onRceivePacket(cmd_header_t* rxcmd, uint8_t* data, int32_
/*******************************************************************************
* module *
*******************************************************************************/
PROCESS_PACKET_00(kmodule_stop, ZIModule, stop);
PROCESS_PACKET_00(kmodule_brake, ZIModule, brake);
PROCESS_PACKET_01(kmodule_get_last_exec_status, ZIModule, get_last_exec_status);
PROCESS_PACKET_01(kmodule_get_status, ZIModule, get_status);
PROCESS_PACKET_20(kmodule_set_param, ZIModule, set_param);
PROCESS_PACKET_11(kmodule_get_param, ZIModule, get_param);
PROCESS_PACKET_01(kmodule_readio, ZIModule, readio);
PROCESS_PACKET_10(kmodule_writeio, ZIModule, writeio);
PROCESS_PACKET_11(kmodule_read_adc, ZIModule, read_adc);
PROCESS_PACKET_00(kmodule_stop, ZIModule, module_stop);
PROCESS_PACKET_00(kmodule_break, ZIModule, module_break);
PROCESS_PACKET_01(kmodule_get_last_exec_status, ZIModule, module_get_last_exec_status);
PROCESS_PACKET_01(kmodule_get_status, ZIModule, module_get_status);
PROCESS_PACKET_20(kmodule_set_param, ZIModule, module_set_param);
PROCESS_PACKET_11(kmodule_get_param, ZIModule, module_get_param);
PROCESS_PACKET_01(kmodule_readio, ZIModule, module_readio);
PROCESS_PACKET_10(kmodule_writeio, ZIModule, module_writeio);
PROCESS_PACKET_11(kmodule_read_adc, ZIModule, module_read_adc);
PROCESS_PACKET_01(kmodule_get_error, ZIModule, module_get_error);
PROCESS_PACKET_00(kmodule_clear_error, ZIModule, module_clear_error);
/*******************************************************************************
* motor *
*******************************************************************************/
PROCESS_PACKET_10(kmotor_enable, ZIMotor, motor_enable);
PROCESS_PACKET_20(kmotor_rotate, ZIMotor, motor_rotate);
PROCESS_PACKET_20(kmotor_move_by, ZIMotor, motor_move_by);
PROCESS_PACKET_20(kmotor_move_to, ZIMotor, motor_move_to);
PROCESS_PACKET_30(kmotor_rotate, ZIMotor, motor_rotate);
PROCESS_PACKET_30(kmotor_move_by, ZIMotor, motor_move_by);
PROCESS_PACKET_30(kmotor_move_to, ZIMotor, motor_move_to);
PROCESS_PACKET_20(kmotor_move_to_with_torque, ZIMotor, motor_move_to_with_torque);
/*******************************************************************************
* xymotor *

29
protocol_proxy.cpp

@ -68,29 +68,28 @@ using namespace iflytop;
#define PROXY_IMPL_32(cmdindex) PROXY_IMPL_XX(cmdindex, 3, 2, PROXY_IMPL_3X_PARA(), PROXY_IMPL_X2_ACK());
#define PROXY_IMPL_33(cmdindex) PROXY_IMPL_XX(cmdindex, 3, 3, PROXY_IMPL_3X_PARA(), PROXY_IMPL_X3_ACK());
int32_t ZIProtocolProxy::module_stop() { PROXY_IMPL_00(kmodule_stop); }
int32_t ZIProtocolProxy::module_break() { PROXY_IMPL_00(kmodule_break); }
int32_t ZIProtocolProxy::module_get_last_exec_status(int32_t *ack0) { PROXY_IMPL_01(kmodule_get_last_exec_status); }
int32_t ZIProtocolProxy::module_get_status(int32_t *ack0) { PROXY_IMPL_01(kmodule_get_status); }
int32_t ZIProtocolProxy::module_set_param(int32_t para0, int32_t para1) { PROXY_IMPL_20(kmodule_set_param); }
int32_t ZIProtocolProxy::module_get_param(int32_t para0, int32_t *ack0) { PROXY_IMPL_11(kmodule_get_param); }
int32_t ZIProtocolProxy::module_readio(int32_t *ack0) { PROXY_IMPL_01(kmodule_readio); }
int32_t ZIProtocolProxy::module_writeio(int32_t para0) { PROXY_IMPL_10(kmodule_writeio); }
int32_t ZIProtocolProxy::stop() { PROXY_IMPL_00(kmodule_stop); }
int32_t ZIProtocolProxy::brake() { PROXY_IMPL_00(kmodule_brake); }
int32_t ZIProtocolProxy::get_last_exec_status(int32_t *ack0) { PROXY_IMPL_01(kmodule_get_last_exec_status); }
int32_t ZIProtocolProxy::get_status(int32_t *ack0) { PROXY_IMPL_01(kmodule_get_status); }
int32_t ZIProtocolProxy::set_param(int32_t para0, int32_t para1) { PROXY_IMPL_20(kmodule_set_param); }
int32_t ZIProtocolProxy::get_param(int32_t para0, int32_t *ack0) { PROXY_IMPL_11(kmodule_get_param); }
int32_t ZIProtocolProxy::readio(int32_t *ack0) { PROXY_IMPL_01(kmodule_readio); }
int32_t ZIProtocolProxy::writeio(int32_t para0) { PROXY_IMPL_10(kmodule_writeio); }
int32_t ZIProtocolProxy::read_adc(int para0, int32_t *ack0) { PROXY_IMPL_11(kmodule_read_adc); }
int32_t ZIProtocolProxy::module_read_adc(int32_t para0, int32_t *ack0) { PROXY_IMPL_11(kmodule_read_adc); }
int32_t ZIProtocolProxy::module_get_error(int32_t *ack0) { PROXY_IMPL_01(kmodule_get_error); }
int32_t ZIProtocolProxy::module_clear_error() { PROXY_IMPL_00(kmodule_clear_error); }
/*******************************************************************************
* ZIMotor *
*******************************************************************************/
int32_t ZIProtocolProxy::motor_enable(int32_t para0) { PROXY_IMPL_10(kmotor_enable); }
int32_t ZIProtocolProxy::motor_rotate(int32_t para0, int32_t para1) { PROXY_IMPL_20(kmotor_rotate); }
int32_t ZIProtocolProxy::motor_move_by(int32_t para0, int32_t para1) { PROXY_IMPL_20(kmotor_move_by); }
int32_t ZIProtocolProxy::motor_move_to(int32_t para0, int32_t para1) { PROXY_IMPL_20(kmotor_move_to); }
int32_t ZIProtocolProxy::motor_rotate(int32_t para0, int32_t para1, int32_t para2) { PROXY_IMPL_30(kmotor_rotate); }
int32_t ZIProtocolProxy::motor_move_by(int32_t para0, int32_t para1, int32_t para2) { PROXY_IMPL_30(kmotor_move_by); }
int32_t ZIProtocolProxy::motor_move_to(int32_t para0, int32_t para1, int32_t para2) { PROXY_IMPL_30(kmotor_move_to); }
int32_t ZIProtocolProxy::motor_move_to_with_torque(int32_t para0, int32_t para1) { PROXY_IMPL_20(kmotor_move_to_with_torque); }
/*******************************************************************************

37
protocol_proxy.hpp

@ -24,35 +24,38 @@ class ZIProtocolProxy : public ZIMotor, //
/*******************************************************************************
* ZIModule *
*******************************************************************************/
virtual int32_t stop();
virtual int32_t brake();
virtual int32_t get_last_exec_status(int32_t *status);
virtual int32_t get_status(int32_t *status);
virtual int32_t module_stop() override;
virtual int32_t module_break() override;
virtual int32_t module_get_last_exec_status(int32_t *status) override;
virtual int32_t module_get_status(int32_t *status) override;
virtual int32_t set_param(int32_t param_id, int32_t param_value);
virtual int32_t get_param(int32_t param_id, int32_t *param_value);
virtual int32_t module_set_param(int32_t param_id, int32_t param_value) override;
virtual int32_t module_get_param(int32_t param_id, int32_t *param_value) override;
virtual int32_t readio(int32_t *io);
virtual int32_t writeio(int32_t io);
virtual int32_t module_readio(int32_t *io) override;
virtual int32_t module_writeio(int32_t io) override;
virtual int32_t read_adc(int adcindex, int32_t *adc);
virtual int32_t module_read_adc(int32_t adcindex, int32_t *adc) override;
virtual int32_t module_get_error(int32_t *iserror) override;
virtual int32_t module_clear_error() override;
/*******************************************************************************
* ZIMotor *
*******************************************************************************/
virtual int32_t motor_enable(int32_t enable);
virtual int32_t motor_rotate(int32_t direction, int32_t velocitylevel);
virtual int32_t motor_move_by(int32_t distance, int32_t velocitylevel);
virtual int32_t motor_move_to(int32_t position, int32_t velocitylevel);
virtual int32_t motor_move_to_with_torque(int32_t pos, int32_t torque);
virtual int32_t motor_enable(int32_t enable) override;
virtual int32_t motor_rotate(int32_t direction, int32_t motor_velocity, int32_t acc) override;
virtual int32_t motor_move_by(int32_t direction, int32_t motor_velocity, int32_t acc) override;
virtual int32_t motor_move_to(int32_t direction, int32_t motor_velocity, int32_t acc) override;
virtual int32_t motor_move_to_with_torque(int32_t pos, int32_t torque) override;
/*******************************************************************************
* ZIXYMotor *
*******************************************************************************/
virtual int32_t xymotor_enable(int32_t enable);
virtual int32_t xymotor_move_by(int32_t dx, int32_t dy, int32_t velocitylevel);
virtual int32_t xymotor_move_to(int32_t x, int32_t y, int32_t velocitylevel);
virtual int32_t xymotor_enable(int32_t enable) override;
virtual int32_t xymotor_move_by(int32_t dx, int32_t dy, int32_t motor_velocity) override;
virtual int32_t xymotor_move_to(int32_t x, int32_t y, int32_t motor_velocity) override;
};
} // namespace iflytop

30
zmodule_device_manager.cpp

@ -12,26 +12,28 @@ using namespace std;
/*******************************************************************************
* ZIModule *
*******************************************************************************/
int32_t ZModuleDeviceManager::stop(uint16_t id) { PROXY_IMPL(ZIModule, stop); }
int32_t ZModuleDeviceManager::brake(uint16_t id) { PROXY_IMPL(ZIModule, brake); }
int32_t ZModuleDeviceManager::get_last_exec_status(uint16_t id, int32_t *ack0) { PROXY_IMPL(ZIModule, get_last_exec_status, ack0); }
int32_t ZModuleDeviceManager::get_status(uint16_t id, int32_t *status) { PROXY_IMPL(ZIModule, get_status, status); }
int32_t ZModuleDeviceManager::set_param(uint16_t id, int32_t param_id, int32_t param_value) { PROXY_IMPL(ZIModule, set_param, param_id, param_value); }
int32_t ZModuleDeviceManager::get_param(uint16_t id, int32_t param_id, int32_t *param_value) { PROXY_IMPL(ZIModule, get_param, param_id, param_value); }
int32_t ZModuleDeviceManager::readio(uint16_t id, int32_t *io) { PROXY_IMPL(ZIModule, readio, io); }
int32_t ZModuleDeviceManager::writeio(uint16_t id, int32_t io) { PROXY_IMPL(ZIModule, writeio, io); }
int32_t ZModuleDeviceManager::read_adc(uint16_t id, int adcindex, int32_t *adc) { PROXY_IMPL(ZIModule, read_adc, adcindex, adc); }
int32_t ZModuleDeviceManager::module_stop(uint16_t id) { PROXY_IMPL(ZIModule, module_stop); }
int32_t ZModuleDeviceManager::module_break(uint16_t id) { PROXY_IMPL(ZIModule, module_break); }
int32_t ZModuleDeviceManager::module_get_last_exec_status(uint16_t id, int32_t *ack0) { PROXY_IMPL(ZIModule, module_get_last_exec_status, ack0); }
int32_t ZModuleDeviceManager::module_get_status(uint16_t id, int32_t *status) { PROXY_IMPL(ZIModule, module_get_status, status); }
int32_t ZModuleDeviceManager::module_set_param(uint16_t id, int32_t param_id, int32_t param_value) { PROXY_IMPL(ZIModule, module_set_param, param_id, param_value); }
int32_t ZModuleDeviceManager::module_get_param(uint16_t id, int32_t param_id, int32_t *param_value) { PROXY_IMPL(ZIModule, module_get_param, param_id, param_value); }
int32_t ZModuleDeviceManager::module_readio(uint16_t id, int32_t *io) { PROXY_IMPL(ZIModule, module_readio, io); }
int32_t ZModuleDeviceManager::module_writeio(uint16_t id, int32_t io) { PROXY_IMPL(ZIModule, module_writeio, io); }
int32_t ZModuleDeviceManager::module_read_adc(uint16_t id, int32_t adcindex, int32_t *adc) { PROXY_IMPL(ZIModule, module_read_adc, adcindex, adc); }
int32_t ZModuleDeviceManager::module_get_error(uint16_t id, int32_t *iserror) { PROXY_IMPL(ZIModule, module_get_error, iserror); }
int32_t ZModuleDeviceManager::module_clear_error(uint16_t id) { PROXY_IMPL(ZIModule, module_clear_error); }
/*******************************************************************************
* ZIMotor *
*******************************************************************************/
int32_t ZModuleDeviceManager::motor_enable(uint16_t id, int32_t enable) { PROXY_IMPL(ZIMotor, motor_enable, enable); }
int32_t ZModuleDeviceManager::motor_rotate(uint16_t id, int32_t direction, int32_t velocitylevel) { PROXY_IMPL(ZIMotor, motor_rotate, direction, velocitylevel); }
int32_t ZModuleDeviceManager::motor_move_by(uint16_t id, int32_t distance, int32_t velocitylevel) { PROXY_IMPL(ZIMotor, motor_move_by, distance, velocitylevel); }
int32_t ZModuleDeviceManager::motor_move_to(uint16_t id, int32_t position, int32_t velocitylevel) { PROXY_IMPL(ZIMotor, motor_move_to, position, velocitylevel); }
int32_t ZModuleDeviceManager::motor_rotate(uint16_t id, int32_t direction, int32_t motor_velocity, int32_t acc) { PROXY_IMPL(ZIMotor, motor_rotate, direction, motor_velocity, acc); }
int32_t ZModuleDeviceManager::motor_move_by(uint16_t id, int32_t distance, int32_t motor_velocity, int32_t acc) { PROXY_IMPL(ZIMotor, motor_move_by, distance, motor_velocity, acc); }
int32_t ZModuleDeviceManager::motor_move_to(uint16_t id, int32_t position, int32_t motor_velocity, int32_t acc) { PROXY_IMPL(ZIMotor, motor_move_to, position, motor_velocity, acc); }
int32_t ZModuleDeviceManager::motor_move_to_with_torque(uint16_t id, int32_t pos, int32_t torque) { PROXY_IMPL(ZIMotor, motor_move_to_with_torque, pos, torque); }
/*******************************************************************************
* ZIXYMotor *
*******************************************************************************/
int32_t ZModuleDeviceManager::xymotor_enable(uint16_t id, int32_t enable) { PROXY_IMPL(ZIXYMotor, xymotor_enable, enable); }
int32_t ZModuleDeviceManager::xymotor_move_by(uint16_t id, int32_t dx, int32_t dy, int32_t velocitylevel) { PROXY_IMPL(ZIXYMotor, xymotor_move_by, dx, dy, velocitylevel); }
int32_t ZModuleDeviceManager::xymotor_move_to(uint16_t id, int32_t x, int32_t y, int32_t velocitylevel) { PROXY_IMPL(ZIXYMotor, xymotor_move_to, x, y, velocitylevel); }
int32_t ZModuleDeviceManager::xymotor_move_by(uint16_t id, int32_t dx, int32_t dy, int32_t motor_velocity) { PROXY_IMPL(ZIXYMotor, xymotor_move_by, dx, dy, motor_velocity); }
int32_t ZModuleDeviceManager::xymotor_move_to(uint16_t id, int32_t x, int32_t y, int32_t motor_velocity) { PROXY_IMPL(ZIXYMotor, xymotor_move_to, x, y, motor_velocity); }

35
zmodule_device_manager.hpp

@ -17,47 +17,50 @@ class ZModuleDeviceManager {
/*******************************************************************************
* ZIModule *
*******************************************************************************/
int32_t stop(uint16_t id);
int32_t brake(uint16_t id);
int32_t module_stop(uint16_t id);
int32_t module_break(uint16_t id);
int32_t get_last_exec_status(uint16_t id, int32_t *status);
int32_t get_status(uint16_t id, int32_t *status);
int32_t module_get_last_exec_status(uint16_t id, int32_t *status);
int32_t module_get_status(uint16_t id, int32_t *status);
int32_t set_param(uint16_t id, int32_t param_id, int32_t param_value);
int32_t get_param(uint16_t id, int32_t param_id, int32_t *param_value);
int32_t module_set_param(uint16_t id, int32_t param_id, int32_t param_value);
int32_t module_get_param(uint16_t id, int32_t param_id, int32_t *param_value);
int32_t readio(uint16_t id, int32_t *io);
int32_t writeio(uint16_t id, int32_t io);
int32_t module_readio(uint16_t id, int32_t *io);
int32_t module_writeio(uint16_t id, int32_t io);
int32_t read_adc(uint16_t id, int adcindex, int32_t *adc);
int32_t module_read_adc(uint16_t id, int adcindex, int32_t *adc);
int32_t module_get_error(uint16_t id, int32_t *iserror);
int32_t module_clear_error(uint16_t id);
/*******************************************************************************
* ZIMotor *
*******************************************************************************/
int32_t motor_enable(uint16_t id, int32_t enable);
int32_t motor_rotate(uint16_t id, int32_t direction, int32_t velocitylevel);
int32_t motor_move_by(uint16_t id, int32_t distance, int32_t velocitylevel);
int32_t motor_move_to(uint16_t id, int32_t position, int32_t velocitylevel);
int32_t motor_rotate(uint16_t id, int32_t direction, int32_t motor_velocity, int32_t acc);
int32_t motor_move_by(uint16_t id, int32_t distance, int32_t motor_velocity, int32_t acc);
int32_t motor_move_to(uint16_t id, int32_t position, int32_t motor_velocity, int32_t acc);
int32_t motor_move_to_with_torque(uint16_t id, int32_t pos, int32_t torque);
/*******************************************************************************
* ZIXYMotor *
*******************************************************************************/
int32_t xymotor_enable(uint16_t id, int32_t enable);
int32_t xymotor_move_by(uint16_t id, int32_t dx, int32_t dy, int32_t velocitylevel);
int32_t xymotor_move_to(uint16_t id, int32_t x, int32_t y, int32_t velocitylevel);
int32_t xymotor_move_by(uint16_t id, int32_t dx, int32_t dy, int32_t motor_velocity);
int32_t xymotor_move_to(uint16_t id, int32_t x, int32_t y, int32_t motor_velocity);
private:
template <typename T>
int32_t findModule(uint16_t id, T **module) {
auto it = m_modulers.find(id);
if (it == m_modulers.end()) {
return err::kce_no_such_module;
return err::kmodule_not_found;
}
T *_module = dynamic_cast<T *>(it->second);
if (_module == nullptr) {
return err::kce_operation_not_support;
return err::koperation_not_support;
}
*module = _module;
return 0;

43
zmodule_device_script_cmder_paser.cpp

@ -1,4 +1,5 @@
#include "zmodule_device_script_cmder_paser.hpp"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
@ -12,8 +13,6 @@ using namespace std;
ack->rawlen = XACK * 4; \
});
#define PROCESS_PACKET_00(var_funcname, cmdhelp) PROCESS_PACKET_XX(var_funcname, cmdhelp, 0, 0)
#define PROCESS_PACKET_01(var_funcname, cmdhelp) PROCESS_PACKET_XX(var_funcname, cmdhelp, 0, 1, ack->getAck(0))
#define PROCESS_PACKET_02(var_funcname, cmdhelp) PROCESS_PACKET_XX(var_funcname, cmdhelp, 0, 2, ack->getAck(0), ack->getAck(1))
@ -40,23 +39,25 @@ using namespace std;
#define PROCESS_PACKET_43(var_funcname, cmdhelp) PROCESS_PACKET_XX(var_funcname, cmdhelp, 4, 3, atoi(paraV[0]), atoi(paraV[1]), atoi(paraV[2]), atoi(paraV[3]), ack->getAck(0), ack->getAck(1), ack->getAck(2))
void ZModuleDeviceScriptCmderPaser::initialize(ICmdParser* cancmder, ZModuleDeviceManager* deviceManager) {
PROCESS_PACKET_10(stop, "stop (id)");
PROCESS_PACKET_10(brake, "brake (id)");
PROCESS_PACKET_11(get_last_exec_status, "get_last_exec_status (id)");
PROCESS_PACKET_11(get_status, "get_status (id)");
PROCESS_PACKET_30(set_param, "set_param (id, param_id, param_value)");
PROCESS_PACKET_21(get_param, "get_param (id, param_id)");
PROCESS_PACKET_11(readio, "readio (id)");
PROCESS_PACKET_20(writeio, "writeio (id, io)");
PROCESS_PACKET_21(read_adc, "read_adc (id, adcindex)");
PROCESS_PACKET_20(motor_enable, "motor_enable (id, enable)");
PROCESS_PACKET_30(motor_rotate, "motor_rotate (id, direction, velocitylevel)");
PROCESS_PACKET_30(motor_move_by, "motor_move_by (id, distance, velocitylevel)");
PROCESS_PACKET_30(motor_move_to, "motor_move_to (id, position, velocitylevel)");
PROCESS_PACKET_30(motor_move_to_with_torque, "motor_move_to_with_torque (id, pos, torque)");
PROCESS_PACKET_20(xymotor_enable, "xymotor_enable (id, enable)");
PROCESS_PACKET_40(xymotor_move_by, "xymotor_move_by (id, dx, dy, velocitylevel)");
PROCESS_PACKET_40(xymotor_move_to, "xymotor_move_to (id, x, y, velocitylevel)");
PROCESS_PACKET_10(module_stop, "stop (mid)");
PROCESS_PACKET_10(module_break, "module_break (mid)");
PROCESS_PACKET_11(module_get_last_exec_status, "get_last_exec_status (mid)");
PROCESS_PACKET_11(module_get_status, "get_status (mid)");
PROCESS_PACKET_30(module_set_param, "set_param (mid, param_id, param_value)");
PROCESS_PACKET_21(module_get_param, "get_param (mid, param_id)");
PROCESS_PACKET_11(module_readio, "readio (mid)");
PROCESS_PACKET_20(module_writeio, "writeio (mid, io)");
PROCESS_PACKET_21(module_read_adc, "read_adc (mid,adc_id, adcindex)");
PROCESS_PACKET_11(module_get_error, "get_error (mid)");
PROCESS_PACKET_10(module_clear_error, "clear_error (mid)");
PROCESS_PACKET_20(motor_enable, "motor_enable (mid, enable)");
PROCESS_PACKET_40(motor_rotate, "motor_rotate (mid, direction, motor_velocity, acc)");
PROCESS_PACKET_40(motor_move_by, "motor_move_by (mid, distance, motor_velocity, acc)");
PROCESS_PACKET_40(motor_move_to, "motor_move_to (mid, position, motor_velocity, acc)");
PROCESS_PACKET_30(motor_move_to_with_torque, "motor_move_to_with_torque (mid, pos, torque)");
PROCESS_PACKET_20(xymotor_enable, "xymotor_enable (mid, enable)");
PROCESS_PACKET_40(xymotor_move_by, "xymotor_move_by (mid, dx, dy, motor_velocity)");
PROCESS_PACKET_40(xymotor_move_to, "xymotor_move_to (mid, x, y, motor_velocity)");
}
Loading…
Cancel
Save