|
|
@ -39,8 +39,10 @@ void A8000ScriptProcesser::initialize(shared_ptr<IflytopCanProtocolControler> if |
|
|
|
m_iflytopCanProtocolControler = iflytopCanProtocolControler; |
|
|
|
}; |
|
|
|
|
|
|
|
bool A8000ScriptProcesser::isWorking() { return m_scriptProcesser->isWorking(); } |
|
|
|
void A8000ScriptProcesser::executeScript(string script) { m_scriptProcesser->executeScript(script); } |
|
|
|
bool A8000ScriptProcesser::isWorking() { return m_scriptProcesser->isWorking(); } |
|
|
|
void A8000ScriptProcesser::executeScript(string script) { m_scriptProcesser->executeScript(script); } |
|
|
|
void A8000ScriptProcesser::executeCommandBlock(string script, string& scriptresult) { m_scriptProcesser->executeCommand(script, scriptresult); } |
|
|
|
|
|
|
|
void A8000ScriptProcesser::stopScript() { m_scriptProcesser->stopScript(); } |
|
|
|
int32_t A8000ScriptProcesser::sendCanPacket(shared_ptr<ScriptProcesser::Context> context, shared_ptr<icps::Packet> txpacket) { |
|
|
|
string cmd = context->cmd; |
|
|
@ -161,9 +163,9 @@ void A8000ScriptProcesser::sleep_ms(shared_ptr<ScriptProcesser::Context> context |
|
|
|
void A8000ScriptProcesser::step_motor_wait_for_idle(shared_ptr<ScriptProcesser::Context> context, int32_t targetStepMotorId) { |
|
|
|
int32_t state = 0; |
|
|
|
step_motor_is_idle(context, targetStepMotorId, state); |
|
|
|
ThisThread thisThread; |
|
|
|
// ThisThread thisThread;
|
|
|
|
while (state != 0) { |
|
|
|
thisThread.sleepForMs(300); |
|
|
|
usleep(300 * 1000); |
|
|
|
step_motor_is_idle(context, targetStepMotorId, state); |
|
|
|
logger->info("step_motor({}) wait_for_idle:{}", targetStepMotorId, state); |
|
|
|
} |
|
|
@ -205,11 +207,36 @@ void A8000ScriptProcesser::tube_rotate_zero(shared_ptr<ScriptProcesser::Context> |
|
|
|
writeReg(cpcfg.m_deviceId, cpcfg.m_ctrlPointId, 1, context); |
|
|
|
} |
|
|
|
|
|
|
|
#define CHECK_CMD_PARAMETER(expectParaNum) \
|
|
|
|
if (cmdandvar.size() - 1 != expectParaNum) { \ |
|
|
|
#define SCARA_REG_ACT_CTRL (0) // 0:停止 1:运行
|
|
|
|
#define SCARA_REG_ACT_SET_TARGET_XY (1) //
|
|
|
|
#define SCARA_REG_ACT_LOCK (2) //
|
|
|
|
#define SCARA_REG_ACT_CLEAR_EXCEPTION (5) //
|
|
|
|
#define SCARA_REG_STATE_STATE (11) //
|
|
|
|
#define SCARA_REG_STATE_EXCEPTION (12) //
|
|
|
|
#define SCARA_REG_STATE_NOWXY (13) //
|
|
|
|
#define SCARA_REG_CFG_TARGET_X (20) //
|
|
|
|
#define SCARA_REG_CFG_TARGET_Y (21) //
|
|
|
|
|
|
|
|
void A8000ScriptProcesser::scara_move_to(shared_ptr<ScriptProcesser::Context> context, int scaraid, int32_t x, int32_t y) { |
|
|
|
uint32_t xy = ((uint32_t)x & 0xffff) | ((uint32_t)y & 0xffff) << 16; |
|
|
|
writeReg(131, 11200 + SCARA_REG_ACT_SET_TARGET_XY, xy, context); |
|
|
|
} |
|
|
|
void A8000ScriptProcesser::scara_wait_for_idle(shared_ptr<ScriptProcesser::Context> context, int scaraid) { |
|
|
|
int32_t state = 0; |
|
|
|
readReg(131, 11200 + SCARA_REG_STATE_STATE, state, context); |
|
|
|
ThisThread thisThread; |
|
|
|
while (state != 0) { |
|
|
|
thisThread.sleepForMs(300); |
|
|
|
readReg(131, 11200 + SCARA_REG_STATE_STATE, state, context); |
|
|
|
logger->info("scara({}) wait_for_idle:{}", scaraid, state); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
#define CHECK_CMD_PARAMETER(expectParaNum) \
|
|
|
|
if (cmdandvar.size() - 1 != expectParaNum) { \ |
|
|
|
context->printfInfo = fmt::format("error:do {} error,parameter num error,{}", cmd, cmdandvar.size()); \ |
|
|
|
logger->error("{}", context->printfInfo); \ |
|
|
|
return; \ |
|
|
|
logger->error("{}", context->printfInfo); \ |
|
|
|
return; \ |
|
|
|
} |
|
|
|
|
|
|
|
void A8000ScriptProcesser::docmd(shared_ptr<ScriptProcesser::Context> context) { |
|
|
@ -264,8 +291,7 @@ void A8000ScriptProcesser::docmd(shared_ptr<ScriptProcesser::Context> context) { |
|
|
|
} else if (cmd == "step_motor_wait_for_idle") { |
|
|
|
CHECK_CMD_PARAMETER(1); |
|
|
|
step_motor_wait_for_idle(context, context->getvarInt(1)); |
|
|
|
} |
|
|
|
else if (cmd == "duoji_move_to") { |
|
|
|
} else if (cmd == "duoji_move_to") { |
|
|
|
CHECK_CMD_PARAMETER(2); |
|
|
|
duoji_move_to(context, context->getvarInt(1), context->getvarInt(2)); |
|
|
|
} else if (cmd == "duoji_stop") { |
|
|
@ -281,7 +307,15 @@ void A8000ScriptProcesser::docmd(shared_ptr<ScriptProcesser::Context> context) { |
|
|
|
} else if (cmd == "tube_rotate_zero") { |
|
|
|
CHECK_CMD_PARAMETER(1); |
|
|
|
tube_rotate_zero(context, context->getvarInt(1)); |
|
|
|
} else if (cmd == "scara_move_to") { |
|
|
|
CHECK_CMD_PARAMETER(2); |
|
|
|
scara_move_to(context, context->getvarInt(1), context->getvarInt(2), context->getvarInt(3)); |
|
|
|
} else if (cmd == "scara_wait_for_idle") { |
|
|
|
CHECK_CMD_PARAMETER(1); |
|
|
|
scara_wait_for_idle(context, context->getvarInt(1)); |
|
|
|
} |
|
|
|
//
|
|
|
|
//
|
|
|
|
} |
|
|
|
|
|
|
|
void A8000ScriptProcesser::readReg(int32_t targetId, int32_t ctrlPointAdd, int32_t& val, shared_ptr<ScriptProcesser::Context> context) { |
|
|
|