diff --git a/api/errorcode.hpp b/api/errorcode.hpp index ebf4c15..d04c23d 100644 --- a/api/errorcode.hpp +++ b/api/errorcode.hpp @@ -63,6 +63,7 @@ typedef enum { 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), // 离开零点失败 + kmotor_run_overtime = ERROR_CODE(300, 8), // 运行超时 /** * @brief STMP2错误 diff --git a/api/zi_motor.hpp b/api/zi_motor.hpp index 11bc028..7e9be4d 100644 --- a/api/zi_motor.hpp +++ b/api/zi_motor.hpp @@ -19,7 +19,8 @@ class ZIMotor { virtual int32_t motor_move_by_acctime(int32_t distance, int32_t motor_velocity, int32_t acctime) { return err::koperation_not_support; } virtual int32_t motor_move_to_acctime(int32_t position, int32_t motor_velocity, int32_t acctime) { return err::koperation_not_support; } - virtual int32_t motor_move_to_with_torque(int32_t direction, int32_t torque) { return err::koperation_not_support; } + virtual int32_t motor_rotate_with_torque(int32_t direction, int32_t torque) { return err::koperation_not_support; } + virtual int32_t motor_move_to_torque(int32_t pos, int32_t torque, int32_t overtime) { return err::koperation_not_support; } virtual int32_t motor_move_to_zero_forward(int32_t findzerospeed, int32_t findzeroedge_speed, int32_t acc, int32_t overtime) { return err::koperation_not_support; } virtual int32_t motor_move_to_zero_backward(int32_t findzerospeed, int32_t findzeroedge_speed, int32_t acc, int32_t overtime) { return err::koperation_not_support; } diff --git a/cmdid.hpp b/cmdid.hpp index c24c1ff..a8e02cd 100644 --- a/cmdid.hpp +++ b/cmdid.hpp @@ -7,6 +7,7 @@ typedef enum { #if 0 virtual int32_t module_set_state(int32_t state_id, int32_t state_value) { return err::koperation_not_support; } virtual int32_t module_get_state(int32_t state_id, int32_t *state_value) { return err::koperation_not_support; } + #endif kmodule_stop = CMDID(1, 1), // para:{}, ack:{} kmodule_break = CMDID(1, 2), // para:{}, ack:{} @@ -27,6 +28,29 @@ typedef enum { kmodule_set_state = CMDID(1, 17), // para:{4,4}, ack:{} kmodule_get_state = CMDID(1, 18), // para:{4}, ack:{4} +#if 0 + 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_rotate_acctime(int32_t direction, int32_t motor_velocity, int32_t acctime) { return err::koperation_not_support; } + virtual int32_t motor_move_by_acctime(int32_t distance, int32_t motor_velocity, int32_t acctime) { return err::koperation_not_support; } + virtual int32_t motor_move_to_acctime(int32_t position, int32_t motor_velocity, int32_t acctime) { return err::koperation_not_support; } + + virtual int32_t motor_rotate_with_torque(int32_t direction, int32_t torque) { return err::koperation_not_support; } + virtual int32_t motor_move_to_torque(int32_t pos, int32_t torque, int32_t overtime) { return err::koperation_not_support; } + + virtual int32_t motor_move_to_zero_forward(int32_t findzerospeed, int32_t findzeroedge_speed, int32_t acc, int32_t overtime) { return err::koperation_not_support; } + virtual int32_t motor_move_to_zero_backward(int32_t findzerospeed, int32_t findzeroedge_speed, int32_t acc, int32_t overtime) { return err::koperation_not_support; } + + virtual int32_t motor_move_to_zero_forward_and_calculated_shift(int32_t findzerospeed, int32_t findzeroedge_speed, int32_t acc, int32_t overtime) { return err::koperation_not_support; } + virtual int32_t motor_move_to_zero_backward_and_calculated_shift(int32_t findzerospeed, int32_t findzeroedge_speed, int32_t acc, int32_t overtime) { return err::koperation_not_support; } + + virtual int32_t motor_read_pos(int32_t* pos) { return err::koperation_not_support; } + virtual int32_t motor_set_current_pos_by_change_shift(int32_t pos) { return err::koperation_not_support; } // 一般用于舵机 +#endif + kmotor_enable = CMDID(2, 1), // para:{1}, ack:{} kmotor_rotate = CMDID(2, 2), // para:{1,4}, ack:{} kmotor_move_by = CMDID(2, 3), // para:{4,4}, ack:{} @@ -34,13 +58,14 @@ typedef enum { kmotor_rotate_acctime = CMDID(2, 5), // para:{4,4}, ack:{} kmotor_move_by_acctime = CMDID(2, 6), // para:{4,4}, ack:{} kmotor_move_to_acctime = CMDID(2, 7), // para:{4,4}, ack:{} - kmotor_move_to_with_torque = CMDID(2, 8), // para:{4,4}, ack:{} + kmotor_rotate_with_torque = CMDID(2, 8), // para:{4,4}, ack:{} kmotor_move_to_zero_forward = CMDID(2, 9), // para:{4,4,4,4}, ack:{} //int32_t findzerospeed, int32_t findzeroedge_speed, int32_t acc, int32_t overtime kmotor_move_to_zero_backward = CMDID(2, 10), // para:{4,4,4,4}, ack:{} //int32_t findzerospeed, int32_t findzeroedge_speed, int32_t acc, int32_t overtime kmotor_read_pos = CMDID(2, 11), // para:{}, ack:{4} kmotor_set_current_pos_by_change_shift = CMDID(2, 12), // para:{4}, ack:{} kmotor_motor_move_to_zero_forward_and_calculated_shift = CMDID(2, 13), // para:{4,4,4,4}, ack:{} //int32_t findzerospeed, int32_t findzeroedge_speed, int32_t acc, int32_t overtime kmotor_motor_move_to_zero_backward_and_calculated_shift = CMDID(2, 14), // para:{4,4,4,4}, ack:{} //int32_t findzerospeed, int32_t findzeroedge_speed, int32_t acc, int32_t overtime + kmotor_move_to_torque = CMDID(2, 15), // para:{4,4,4}, ack:{} #if 0 virtual ~ZIXYMotor() {} diff --git a/protocol_parser.cpp b/protocol_parser.cpp index 0d7e76f..108d43a 100644 --- a/protocol_parser.cpp +++ b/protocol_parser.cpp @@ -6,14 +6,14 @@ using namespace iflytop; using namespace std; #define TAG "ZIProtocolParser" -#define PROCESS_PACKET_BEGIN(var_cmdid, var_moduleType) \ - int32_t* param __attribute__((__unused__)) = (int32_t*)data; \ +#define PROCESS_PACKET_BEGIN(var_cmdid, var_moduleType) \ + int32_t* param __attribute__((__unused__)) = (int32_t*)data; \ int paramNum __attribute__((__unused__)) = (len) / sizeof(int32_t); \ - if (cmdid == var_cmdid) { \ - auto* mod = dynamic_cast(module); \ - if (mod == nullptr) { \ - m_cancmder->sendErrorAck(rxcmd, err::koperation_not_support); \ - return; \ + if (cmdid == var_cmdid) { \ + auto* mod = dynamic_cast(module); \ + if (mod == nullptr) { \ + m_cancmder->sendErrorAck(rxcmd, err::koperation_not_support); \ + return; \ } #define CHECK_PARAM_NUM(num) \ @@ -149,21 +149,37 @@ void ZIProtocolParser::onRceivePacket(zcr_cmd_header_t* rxcmd, uint8_t* data, in PROCESS_PACKET_20(kmodule_set_state, ZIModule, module_set_state); PROCESS_PACKET_11(kmodule_get_state, ZIModule, module_get_state); - - /******************************************************************************* * motor * *******************************************************************************/ #if 0 - virtual int32_t motor_move_to_zero_forward_and_calculated_shift(int32_t findzerospeed, int32_t findzeroedge_speed, int32_t acc, int32_t overtime) { return err::koperation_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_rotate_acctime(int32_t direction, int32_t motor_velocity, int32_t acctime) { return err::koperation_not_support; } + virtual int32_t motor_move_by_acctime(int32_t distance, int32_t motor_velocity, int32_t acctime) { return err::koperation_not_support; } + virtual int32_t motor_move_to_acctime(int32_t position, int32_t motor_velocity, int32_t acctime) { return err::koperation_not_support; } + + virtual int32_t motor_rotate_with_torque(int32_t direction, int32_t torque) { return err::koperation_not_support; } + virtual int32_t motor_move_to_torque(int32_t pos, int32_t torque, int32_t overtime) { return err::koperation_not_support; } + + virtual int32_t motor_move_to_zero_forward(int32_t findzerospeed, int32_t findzeroedge_speed, int32_t acc, int32_t overtime) { return err::koperation_not_support; } + virtual int32_t motor_move_to_zero_backward(int32_t findzerospeed, int32_t findzeroedge_speed, int32_t acc, int32_t overtime) { return err::koperation_not_support; } + + virtual int32_t motor_move_to_zero_forward_and_calculated_shift(int32_t findzerospeed, int32_t findzeroedge_speed, int32_t acc, int32_t overtime) { return err::koperation_not_support; } virtual int32_t motor_move_to_zero_backward_and_calculated_shift(int32_t findzerospeed, int32_t findzeroedge_speed, int32_t acc, int32_t overtime) { return err::koperation_not_support; } + virtual int32_t motor_read_pos(int32_t* pos) { return err::koperation_not_support; } + virtual int32_t motor_set_current_pos_by_change_shift(int32_t pos) { return err::koperation_not_support; } // 一般用于舵机 + #endif PROCESS_PACKET_10(kmotor_enable, ZIMotor, motor_enable); 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); + PROCESS_PACKET_20(kmotor_rotate_with_torque, ZIMotor, motor_rotate_with_torque); PROCESS_PACKET_30(kmotor_rotate_acctime, ZIMotor, motor_rotate_acctime); PROCESS_PACKET_30(kmotor_move_by_acctime, ZIMotor, motor_move_by_acctime); PROCESS_PACKET_30(kmotor_move_to_acctime, ZIMotor, motor_move_to_acctime); @@ -173,6 +189,7 @@ void ZIProtocolParser::onRceivePacket(zcr_cmd_header_t* rxcmd, uint8_t* data, in PROCESS_PACKET_10(kmotor_set_current_pos_by_change_shift, ZIMotor, motor_set_current_pos_by_change_shift); PROCESS_PACKET_40(kmotor_motor_move_to_zero_forward_and_calculated_shift, ZIMotor, motor_move_to_zero_forward_and_calculated_shift); PROCESS_PACKET_40(kmotor_motor_move_to_zero_backward_and_calculated_shift, ZIMotor, motor_move_to_zero_backward_and_calculated_shift); + PROCESS_PACKET_30(kmotor_move_to_torque, ZIMotor, motor_move_to_torque); /******************************************************************************* * xymotor * diff --git a/protocol_proxy.cpp b/protocol_proxy.cpp index 1f83194..d2fb93d 100644 --- a/protocol_proxy.cpp +++ b/protocol_proxy.cpp @@ -101,11 +101,35 @@ int32_t ZIProtocolProxy::module_get_state(int32_t para0, int32_t *ack0) { PROXY_ /******************************************************************************* * ZIMotor * *******************************************************************************/ +#if 0 + 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_rotate_acctime(int32_t direction, int32_t motor_velocity, int32_t acctime) { return err::koperation_not_support; } + virtual int32_t motor_move_by_acctime(int32_t distance, int32_t motor_velocity, int32_t acctime) { return err::koperation_not_support; } + virtual int32_t motor_move_to_acctime(int32_t position, int32_t motor_velocity, int32_t acctime) { return err::koperation_not_support; } + + virtual int32_t motor_rotate_with_torque(int32_t direction, int32_t torque) { return err::koperation_not_support; } + virtual int32_t motor_move_to_torque(int32_t pos, int32_t torque, int32_t overtime) { return err::koperation_not_support; } + + virtual int32_t motor_move_to_zero_forward(int32_t findzerospeed, int32_t findzeroedge_speed, int32_t acc, int32_t overtime) { return err::koperation_not_support; } + virtual int32_t motor_move_to_zero_backward(int32_t findzerospeed, int32_t findzeroedge_speed, int32_t acc, int32_t overtime) { return err::koperation_not_support; } + + virtual int32_t motor_move_to_zero_forward_and_calculated_shift(int32_t findzerospeed, int32_t findzeroedge_speed, int32_t acc, int32_t overtime) { return err::koperation_not_support; } + virtual int32_t motor_move_to_zero_backward_and_calculated_shift(int32_t findzerospeed, int32_t findzeroedge_speed, int32_t acc, int32_t overtime) { return err::koperation_not_support; } + + virtual int32_t motor_read_pos(int32_t* pos) { return err::koperation_not_support; } + virtual int32_t motor_set_current_pos_by_change_shift(int32_t pos) { return err::koperation_not_support; } // 一般用于舵机 + +#endif + int32_t ZIProtocolProxy::motor_enable(int32_t para0) { PROXY_IMPL_10(kmotor_enable); } 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); } +int32_t ZIProtocolProxy::motor_rotate_with_torque(int32_t para0, int32_t para1) { PROXY_IMPL_20(kmotor_rotate_with_torque); } int32_t ZIProtocolProxy::motor_rotate_acctime(int32_t para0, int32_t para1, int32_t para2) { PROXY_IMPL_30(kmotor_rotate_acctime); } int32_t ZIProtocolProxy::motor_move_by_acctime(int32_t para0, int32_t para1, int32_t para2) { PROXY_IMPL_30(kmotor_move_by_acctime); } @@ -120,6 +144,8 @@ int32_t ZIProtocolProxy::motor_set_current_pos_by_change_shift(int32_t para0) { int32_t ZIProtocolProxy::motor_move_to_zero_forward_and_calculated_shift(int32_t para0, int32_t para1, int32_t para2, int32_t para3) { PROXY_IMPL_40(kmotor_motor_move_to_zero_forward_and_calculated_shift); }; int32_t ZIProtocolProxy::motor_move_to_zero_backward_and_calculated_shift(int32_t para0, int32_t para1, int32_t para2, int32_t para3) { PROXY_IMPL_40(kmotor_motor_move_to_zero_backward_and_calculated_shift); }; +int32_t ZIProtocolProxy::motor_move_to_torque(int32_t para0, int32_t para1, int32_t para2) { PROXY_IMPL_30(kmotor_move_to_torque); } + /******************************************************************************* * ZIXYMotor * *******************************************************************************/ diff --git a/protocol_proxy.hpp b/protocol_proxy.hpp index df65c18..e1f2be4 100644 --- a/protocol_proxy.hpp +++ b/protocol_proxy.hpp @@ -57,15 +57,38 @@ class ZIProtocolProxy : public ZIMotor, // virtual int32_t module_set_state(int32_t state_id, int32_t state_value) override; virtual int32_t module_get_state(int32_t state_id, int32_t *state_value) override; - /******************************************************************************* - * ZIMotor * - *******************************************************************************/ +/******************************************************************************* + * ZIMotor * + *******************************************************************************/ +#if 0 + 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_rotate_acctime(int32_t direction, int32_t motor_velocity, int32_t acctime) { return err::koperation_not_support; } + virtual int32_t motor_move_by_acctime(int32_t distance, int32_t motor_velocity, int32_t acctime) { return err::koperation_not_support; } + virtual int32_t motor_move_to_acctime(int32_t position, int32_t motor_velocity, int32_t acctime) { return err::koperation_not_support; } + + virtual int32_t motor_rotate_with_torque(int32_t direction, int32_t torque) { return err::koperation_not_support; } + virtual int32_t motor_move_to_torque(int32_t pos, int32_t torque, int32_t overtime) { return err::koperation_not_support; } + + virtual int32_t motor_move_to_zero_forward(int32_t findzerospeed, int32_t findzeroedge_speed, int32_t acc, int32_t overtime) { return err::koperation_not_support; } + virtual int32_t motor_move_to_zero_backward(int32_t findzerospeed, int32_t findzeroedge_speed, int32_t acc, int32_t overtime) { return err::koperation_not_support; } + + virtual int32_t motor_move_to_zero_forward_and_calculated_shift(int32_t findzerospeed, int32_t findzeroedge_speed, int32_t acc, int32_t overtime) { return err::koperation_not_support; } + virtual int32_t motor_move_to_zero_backward_and_calculated_shift(int32_t findzerospeed, int32_t findzeroedge_speed, int32_t acc, int32_t overtime) { return err::koperation_not_support; } + + virtual int32_t motor_read_pos(int32_t* pos) { return err::koperation_not_support; } + virtual int32_t motor_set_current_pos_by_change_shift(int32_t pos) { return err::koperation_not_support; } // 一般用于舵机 + +#endif 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 direction, int32_t torque) override; + virtual int32_t motor_rotate_with_torque(int32_t direction, int32_t torque) override; virtual int32_t motor_rotate_acctime(int32_t direction, int32_t motor_velocity, int32_t acctime) override; virtual int32_t motor_move_by_acctime(int32_t distance, int32_t motor_velocity, int32_t acctime) override; @@ -80,6 +103,8 @@ class ZIProtocolProxy : public ZIMotor, // virtual int32_t motor_move_to_zero_forward_and_calculated_shift(int32_t findzerospeed, int32_t findzeroedge_speed, int32_t acc, int32_t overtime) override; virtual int32_t motor_move_to_zero_backward_and_calculated_shift(int32_t findzerospeed, int32_t findzeroedge_speed, int32_t acc, int32_t overtime) override; + virtual int32_t motor_move_to_torque(int32_t pos, int32_t torque, int32_t overtime) override; + /******************************************************************************* * ZIXYMotor * *******************************************************************************/ diff --git a/zmodule_device_manager.cpp b/zmodule_device_manager.cpp index 4c75d1b..754156e 100644 --- a/zmodule_device_manager.cpp +++ b/zmodule_device_manager.cpp @@ -49,11 +49,34 @@ int32_t ZModuleDeviceManager::module_get_state(uint16_t id, int32_t state_id, in /******************************************************************************* * ZIMotor * *******************************************************************************/ +#if 0 + 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_rotate_acctime(int32_t direction, int32_t motor_velocity, int32_t acctime) { return err::koperation_not_support; } + virtual int32_t motor_move_by_acctime(int32_t distance, int32_t motor_velocity, int32_t acctime) { return err::koperation_not_support; } + virtual int32_t motor_move_to_acctime(int32_t position, int32_t motor_velocity, int32_t acctime) { return err::koperation_not_support; } + + virtual int32_t motor_rotate_with_torque(int32_t direction, int32_t torque) { return err::koperation_not_support; } + virtual int32_t motor_move_to_torque(int32_t pos, int32_t torque, int32_t overtime) { return err::koperation_not_support; } + + virtual int32_t motor_move_to_zero_forward(int32_t findzerospeed, int32_t findzeroedge_speed, int32_t acc, int32_t overtime) { return err::koperation_not_support; } + virtual int32_t motor_move_to_zero_backward(int32_t findzerospeed, int32_t findzeroedge_speed, int32_t acc, int32_t overtime) { return err::koperation_not_support; } + + virtual int32_t motor_move_to_zero_forward_and_calculated_shift(int32_t findzerospeed, int32_t findzeroedge_speed, int32_t acc, int32_t overtime) { return err::koperation_not_support; } + virtual int32_t motor_move_to_zero_backward_and_calculated_shift(int32_t findzerospeed, int32_t findzeroedge_speed, int32_t acc, int32_t overtime) { return err::koperation_not_support; } + + virtual int32_t motor_read_pos(int32_t* pos) { return err::koperation_not_support; } + virtual int32_t motor_set_current_pos_by_change_shift(int32_t pos) { return err::koperation_not_support; } // 一般用于舵机 + +#endif 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 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 direction, int32_t torque) { PROXY_IMPL(ZIMotor, motor_move_to_with_torque, direction, torque); } +int32_t ZModuleDeviceManager::motor_rotate_with_torque(uint16_t id, int32_t direction, int32_t torque) { PROXY_IMPL(ZIMotor, motor_rotate_with_torque, direction, torque); } int32_t ZModuleDeviceManager::motor_rotate_acctime(uint16_t id, int32_t direction, int32_t motor_velocity, int32_t acctime) { PROXY_IMPL(ZIMotor, motor_rotate_acctime, direction, motor_velocity, acctime); } int32_t ZModuleDeviceManager::motor_move_by_acctime(uint16_t id, int32_t distance, int32_t motor_velocity, int32_t acctime) { PROXY_IMPL(ZIMotor, motor_move_by_acctime, distance, motor_velocity, acctime); } int32_t ZModuleDeviceManager::motor_move_to_acctime(uint16_t id, int32_t position, int32_t motor_velocity, int32_t acctime) { PROXY_IMPL(ZIMotor, motor_move_to_acctime, position, motor_velocity, acctime); } @@ -63,6 +86,7 @@ int32_t ZModuleDeviceManager::motor_read_pos(uint16_t id, int32_t *pos) { PROXY_ int32_t ZModuleDeviceManager::motor_set_current_pos_by_change_shift(uint16_t id, int32_t pos) { PROXY_IMPL(ZIMotor, motor_set_current_pos_by_change_shift, pos); } int32_t ZModuleDeviceManager::motor_move_to_zero_forward_and_calculated_shift(uint16_t id, int32_t findzerospeed, int32_t findzeroedge_speed, int32_t acc, int32_t overtime) { PROXY_IMPL(ZIMotor, motor_move_to_zero_forward_and_calculated_shift, findzerospeed, findzeroedge_speed, acc, overtime); } int32_t ZModuleDeviceManager::motor_move_to_zero_backward_and_calculated_shift(uint16_t id, int32_t findzerospeed, int32_t findzeroedge_speed, int32_t acc, int32_t overtime) { PROXY_IMPL(ZIMotor, motor_move_to_zero_backward_and_calculated_shift, findzerospeed, findzeroedge_speed, acc, overtime); } +int32_t ZModuleDeviceManager::motor_move_to_torque(uint16_t id, int32_t pos, int32_t torque, int32_t overtime) { PROXY_IMPL(ZIMotor, motor_move_to_torque, pos, torque, overtime); } /******************************************************************************* * ZIXYMotor * *******************************************************************************/ diff --git a/zmodule_device_manager.hpp b/zmodule_device_manager.hpp index ff58b41..c69c021 100644 --- a/zmodule_device_manager.hpp +++ b/zmodule_device_manager.hpp @@ -87,12 +87,29 @@ class ZModuleDeviceManager { /******************************************************************************* * ZIMotor * *******************************************************************************/ - #if 0 - virtual int32_t motor_move_to_zero_forward_and_calculated_shift(int32_t findzerospeed, int32_t findzeroedge_speed, int32_t acc, int32_t overtime) override; - virtual int32_t motor_move_to_zero_backward_and_calculated_shift(int32_t findzerospeed, int32_t findzeroedge_speed, int32_t acc, int32_t overtime) override; -#endif + 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_rotate_acctime(int32_t direction, int32_t motor_velocity, int32_t acctime) { return err::koperation_not_support; } + virtual int32_t motor_move_by_acctime(int32_t distance, int32_t motor_velocity, int32_t acctime) { return err::koperation_not_support; } + virtual int32_t motor_move_to_acctime(int32_t position, int32_t motor_velocity, int32_t acctime) { return err::koperation_not_support; } + + virtual int32_t motor_rotate_with_torque(int32_t direction, int32_t torque) { return err::koperation_not_support; } + virtual int32_t motor_move_to_torque(int32_t pos, int32_t torque, int32_t overtime) { return err::koperation_not_support; } + virtual int32_t motor_move_to_zero_forward(int32_t findzerospeed, int32_t findzeroedge_speed, int32_t acc, int32_t overtime) { return err::koperation_not_support; } + virtual int32_t motor_move_to_zero_backward(int32_t findzerospeed, int32_t findzeroedge_speed, int32_t acc, int32_t overtime) { return err::koperation_not_support; } + + virtual int32_t motor_move_to_zero_forward_and_calculated_shift(int32_t findzerospeed, int32_t findzeroedge_speed, int32_t acc, int32_t overtime) { return err::koperation_not_support; } + virtual int32_t motor_move_to_zero_backward_and_calculated_shift(int32_t findzerospeed, int32_t findzeroedge_speed, int32_t acc, int32_t overtime) { return err::koperation_not_support; } + + virtual int32_t motor_read_pos(int32_t* pos) { return err::koperation_not_support; } + virtual int32_t motor_set_current_pos_by_change_shift(int32_t pos) { return err::koperation_not_support; } // 一般用于舵机 + +#endif virtual int32_t motor_enable(uint16_t id, int32_t enable); virtual int32_t motor_rotate(uint16_t id, int32_t direction, int32_t motor_velocity, int32_t acc); virtual int32_t motor_move_by(uint16_t id, int32_t distance, int32_t motor_velocity, int32_t acc); @@ -102,11 +119,12 @@ class ZModuleDeviceManager { virtual int32_t motor_move_to_acctime(uint16_t id, int32_t position, int32_t motor_velocity, int32_t acctime); virtual int32_t motor_move_to_zero_forward(uint16_t id, int32_t findzerospeed, int32_t findzeroedge_speed, int32_t acc, int32_t overtime); virtual int32_t motor_move_to_zero_backward(uint16_t id, int32_t findzerospeed, int32_t findzeroedge_speed, int32_t acc, int32_t overtime); - virtual int32_t motor_move_to_with_torque(uint16_t id, int32_t direction, int32_t torque); + virtual int32_t motor_rotate_with_torque(uint16_t id, int32_t direction, int32_t torque); virtual int32_t motor_read_pos(uint16_t id, int32_t *pos); virtual int32_t motor_set_current_pos_by_change_shift(uint16_t id, int32_t pos); virtual int32_t motor_move_to_zero_forward_and_calculated_shift(uint16_t id, int32_t findzerospeed, int32_t findzeroedge_speed, int32_t acc, int32_t overtime); virtual int32_t motor_move_to_zero_backward_and_calculated_shift(uint16_t id, int32_t findzerospeed, int32_t findzeroedge_speed, int32_t acc, int32_t overtime); + virtual int32_t motor_move_to_torque(uint16_t id, int32_t pos, int32_t torque, int32_t overtime); /******************************************************************************* * ZIXYMotor * diff --git a/zmodule_device_script_cmder_paser.cpp b/zmodule_device_script_cmder_paser.cpp index 9e81d12..51da037 100644 --- a/zmodule_device_script_cmder_paser.cpp +++ b/zmodule_device_script_cmder_paser.cpp @@ -44,7 +44,7 @@ using namespace std; #define PROCESS_PACKET_53(var_funcname, cmdhelp) PROCESS_PACKET_XX(var_funcname, cmdhelp, 5, 3, atoi(paraV[0]), atoi(paraV[1]), atoi(paraV[2]), atoi(paraV[3]), atoi(paraV[4]), ack->getAck(0), ack->getAck(1), ack->getAck(2)) void ZModuleDeviceScriptCmderPaser::initialize(ICmdParser* cancmder, ZModuleDeviceManager* deviceManager) { - m_cmdParser = cancmder; + m_cmdParser = cancmder; m_deviceManager = deviceManager; #if 0 /******************************************************************************* @@ -89,7 +89,7 @@ void ZModuleDeviceScriptCmderPaser::initialize(ICmdParser* cancmder, ZModuleDevi int32_t motor_move_to_acctime(uint16_t id, int32_t position, int32_t motor_velocity, int32_t acctime); int32_t motor_move_to_zero_forward(uint16_t id, int32_t findzerospeed, int32_t findzeroedge_speed, int32_t acc, int32_t overtime); int32_t motor_move_to_zero_backward(uint16_t id, int32_t findzerospeed, int32_t findzeroedge_speed, int32_t acc, int32_t overtime); - int32_t motor_move_to_with_torque(uint16_t id, int32_t pos, int32_t torque); + int32_t motor_rotate_with_torque(uint16_t id, int32_t pos, int32_t torque); int32_t motor_read_pos(uint16_t id, int32_t *pos); int32_t motor_set_current_pos_by_change_shift(uint16_t id, int32_t pos); virtual int32_t motor_move_to_zero_forward_and_calculated_shift(int32_t findzerospeed, int32_t findzeroedge_speed, int32_t acc, int32_t overtime) override; @@ -114,6 +114,28 @@ void ZModuleDeviceScriptCmderPaser::initialize(ICmdParser* cancmder, ZModuleDevi PROCESS_PACKET_10(module_active_cfg, "(mid)"); PROCESS_PACKET_30(module_set_state, "(mid, state_id, state_value)"); PROCESS_PACKET_21(module_get_state, "(mid, state_id)"); +#if 0 + 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_rotate_acctime(int32_t direction, int32_t motor_velocity, int32_t acctime) { return err::koperation_not_support; } + virtual int32_t motor_move_by_acctime(int32_t distance, int32_t motor_velocity, int32_t acctime) { return err::koperation_not_support; } + virtual int32_t motor_move_to_acctime(int32_t position, int32_t motor_velocity, int32_t acctime) { return err::koperation_not_support; } + + virtual int32_t motor_rotate_with_torque(int32_t direction, int32_t torque) { return err::koperation_not_support; } + virtual int32_t motor_move_to_torque(int32_t pos, int32_t torque, int32_t overtime) { return err::koperation_not_support; } + + virtual int32_t motor_move_to_zero_forward(int32_t findzerospeed, int32_t findzeroedge_speed, int32_t acc, int32_t overtime) { return err::koperation_not_support; } + virtual int32_t motor_move_to_zero_backward(int32_t findzerospeed, int32_t findzeroedge_speed, int32_t acc, int32_t overtime) { return err::koperation_not_support; } + + virtual int32_t motor_move_to_zero_forward_and_calculated_shift(int32_t findzerospeed, int32_t findzeroedge_speed, int32_t acc, int32_t overtime) { return err::koperation_not_support; } + virtual int32_t motor_move_to_zero_backward_and_calculated_shift(int32_t findzerospeed, int32_t findzeroedge_speed, int32_t acc, int32_t overtime) { return err::koperation_not_support; } + + virtual int32_t motor_read_pos(int32_t* pos) { return err::koperation_not_support; } + virtual int32_t motor_set_current_pos_by_change_shift(int32_t pos) { return err::koperation_not_support; } // 一般用于舵机 +#endif PROCESS_PACKET_20(motor_enable, "(mid, enable)"); PROCESS_PACKET_40(motor_rotate, "(mid, direction, motor_velocity, acc)"); @@ -124,7 +146,9 @@ void ZModuleDeviceScriptCmderPaser::initialize(ICmdParser* cancmder, ZModuleDevi PROCESS_PACKET_40(motor_move_by_acctime, "(mid, distance, motor_velocity, acctime)"); PROCESS_PACKET_40(motor_move_to_acctime, "(mid, position, motor_velocity, acctime)"); - PROCESS_PACKET_30(motor_move_to_with_torque, "(mid, pos, torque)"); + PROCESS_PACKET_30(motor_rotate_with_torque, "(mid, pos, torque)"); + PROCESS_PACKET_40(motor_move_to_torque, "(mid, pos, torque, overtime)"); + PROCESS_PACKET_50(motor_move_to_zero_forward, "(mid, findzerospeed, findzeroedge_speed, acc, overtime)"); PROCESS_PACKET_50(motor_move_to_zero_backward, "(mid, findzerospeed, findzeroedge_speed, acc, overtime)");