From 2d255992ea22dce52b6866a79aadfe68b4f65c6a Mon Sep 17 00:00:00 2001 From: zhaohe Date: Wed, 26 Jun 2024 16:05:03 +0800 Subject: [PATCH] update --- a8000_protocol | 2 +- src/tab/xyrobot_tab.cpp | 74 +++++++++++++++++++++++++++++++++---------------- 2 files changed, 51 insertions(+), 25 deletions(-) diff --git a/a8000_protocol b/a8000_protocol index e4a8057..653a499 160000 --- a/a8000_protocol +++ b/a8000_protocol @@ -1 +1 @@ -Subproject commit e4a80570d108c0a711401236f95bbc95b4ae7ecf +Subproject commit 653a4997e1a69abf06244714b255876534ca55a8 diff --git a/src/tab/xyrobot_tab.cpp b/src/tab/xyrobot_tab.cpp index 801034e..1fc108c 100644 --- a/src/tab/xyrobot_tab.cpp +++ b/src/tab/xyrobot_tab.cpp @@ -38,18 +38,39 @@ void XYRobotTab::construct(QTabWidget *fathertab) { { ZQFunctionListBox *box = new ZQFunctionListBox(tab, "方法", 4); - box->newFunc("使能", {}, [this](int argn, const char **args) { ICM->callcmd1(getDeviceId(), kxymotor_enable, 1); }); - box->newFunc("失能", {}, [this](int argn, const char **args) { ICM->callcmd1(getDeviceId(), kxymotor_enable, 0); }); - box->newFunc("相对移动", {"dx", "dy", "velocity"}, [this](int argn, const char **args) { ICM->callcmd3(getDeviceId(), kxymotor_move_by, atoi(args[0]), atoi(args[1]), atoi(args[2])); }); - box->newFunc("绝对移动", {"x", "y", "velocity"}, [this](int argn, const char **args) { ICM->callcmd3(getDeviceId(), kxymotor_move_to, atoi(args[0]), atoi(args[1]), atoi(args[2])); }); - box->newFunc("移动到原点", {}, [this](int argn, const char **args) { ICM->callcmd0(getDeviceId(), kxymotor_move_to_zero); }); - box->newFunc("读取位置", {}, [this](int argn, const char **args) { + box->newSubButton("使能", [this](int argn, const char **args) { ICM->callcmd1(getDeviceId(), kxymotor_enable, 1); }); + box->newSubButton("失能", [this](int argn, const char **args) { ICM->callcmd1(getDeviceId(), kxymotor_enable, 0); }); + + box->newSubButton("移动到原点", [this](int argn, const char **args) { ICM->callcmd0(getDeviceId(), kxymotor_move_to_zero); }); + box->newSubButtonEnd(); + box->newSubButton("读取位置", [this](int argn, const char **args) { int32_t x, y; ICM->callcmd0(getDeviceId(), kxymotor_read_pos); x = ICM->getAck(0); y = ICM->getAck(1); ZQUI::ins()->ishow("x,y(%d,%d)", x, y); }); + box->newFunc("设置位置", {"x", "y"}, [this](int argn, const char **args) { ICM->callcmd2(getDeviceId(), kxymotor_set_pos, atoi(args[0]), atoi(args[1])); }); + box->newFunc("相对移动", {"dx", "dy", "velocity"}, [this](int argn, const char **args) { ICM->callcmd3(getDeviceId(), kxymotor_move_by, atoi(args[0]), atoi(args[1]), atoi(args[2])); }); + box->newFunc("绝对移动", {"x", "y", "velocity"}, [this](int argn, const char **args) { ICM->callcmd3(getDeviceId(), kxymotor_move_to, atoi(args[0]), atoi(args[1]), atoi(args[2])); }); + + box->newFunc("读取全部输入IO", {}, [this](int argn, const char **args) { + int32_t portState = 0; + int32_t indexInStm32 = 0; + for (int i = 0; i < 10; i++) { + try { + ICM->callcmd1(getDeviceId(), kxymotor_read_inio_index_in_stm32, i); + indexInStm32 = ICM->getAck(0); + ICM->callcmd1(getDeviceId(), kxymotor_read_inio, i); + portState = ICM->getAck(0); + if (indexInStm32 == 0) continue; + + ZQUI::ins()->ishow("io%d(%s):%d", i, stm32pin2str((Pin_t)indexInStm32).c_str(), portState); + } catch (const std::exception &e) { + break; + } + } + }); } /*********************************************************************************************************************** @@ -67,29 +88,34 @@ void XYRobotTab::construct(QTabWidget *fathertab) { return true; }); - tableBox->addReg("default_velocity", kreg_xyrobot_default_velocity, ZRegItem::krw | ZRegItem::kdec); - tableBox->addReg("default_acc", kreg_xyrobot_default_acc, ZRegItem::krw | ZRegItem::kdec); - tableBox->addReg("default_dec", kreg_xyrobot_default_dec, ZRegItem::krw | ZRegItem::kdec); - tableBox->addReg("default_break_dec", kreg_xyrobot_default_break_dec, ZRegItem::krw | ZRegItem::kdec); - tableBox->addReg("run_to_zero_speed", kreg_xyrobot_run_to_zero_speed, ZRegItem::krw | ZRegItem::kdec); - tableBox->addReg("run_to_zero_dec", kreg_xyrobot_run_to_zero_dec, ZRegItem::krw | ZRegItem::kdec); - tableBox->addReg("look_zero_edge_speed", kreg_xyrobot_look_zero_edge_speed, ZRegItem::krw | ZRegItem::kdec); - tableBox->addReg("look_zero_edge_dec", kreg_xyrobot_look_zero_edge_dec, ZRegItem::krw | ZRegItem::kdec); + tableBox->addReg("robot_type", kreg_xyrobot_robot_type, ZRegItem::krw | ZRegItem::kdec); + tableBox->addReg("one_circle_pulse", kreg_xyrobot_one_circle_pulse, ZRegItem::krw | ZRegItem::kdec); + tableBox->addReg("one_circle_pulse_denominator", kreg_xyrobot_one_circle_pulse_denominator, ZRegItem::krw | ZRegItem::kdec); tableBox->addReg("ihold", kreg_xyrobot_ihold, ZRegItem::krw | ZRegItem::kdec); tableBox->addReg("irun", kreg_xyrobot_irun, ZRegItem::krw | ZRegItem::kdec); tableBox->addReg("iholddelay", kreg_xyrobot_iholddelay, ZRegItem::krw | ZRegItem::kdec); - tableBox->addReg("robot_type", kreg_xyrobot_robot_type, ZRegItem::krw | ZRegItem::kdec); - tableBox->addReg("x_shift", kreg_xyrobot_x_shift, ZRegItem::krw | ZRegItem::kdec); - tableBox->addReg("y_shift", kreg_xyrobot_y_shift, ZRegItem::krw | ZRegItem::kdec); + tableBox->addReg("iglobalscaler", kreg_xyrobot_iglobalscaler, ZRegItem::krw | ZRegItem::kdec); + tableBox->addReg("vstart", kreg_xyrobot_vstart, ZRegItem::krw | ZRegItem::kdec); + tableBox->addReg("a1", kreg_xyrobot_a1, ZRegItem::krw | ZRegItem::kdec); + tableBox->addReg("amax", kreg_xyrobot_amax, ZRegItem::krw | ZRegItem::kdec); + tableBox->addReg("v1", kreg_xyrobot_v1, ZRegItem::krw | ZRegItem::kdec); + tableBox->addReg("dmax", kreg_xyrobot_dmax, ZRegItem::krw | ZRegItem::kdec); + tableBox->addReg("d1", kreg_xyrobot_d1, ZRegItem::krw | ZRegItem::kdec); + tableBox->addReg("vstop", kreg_xyrobot_vstop, ZRegItem::krw | ZRegItem::kdec); + tableBox->addReg("tzerowait", kreg_xyrobot_tzerowait, ZRegItem::krw | ZRegItem::kdec); + tableBox->addReg("enc_resolution", kreg_xyrobot_enc_resolution, ZRegItem::krw | ZRegItem::kdec); + tableBox->addReg("enable_enc", kreg_xyrobot_enable_enc, ZRegItem::krw | ZRegItem::kdec); tableBox->addReg("x_shaft", kreg_xyrobot_x_shaft, ZRegItem::krw | ZRegItem::kdec); tableBox->addReg("y_shaft", kreg_xyrobot_y_shaft, ZRegItem::krw | ZRegItem::kdec); - tableBox->addReg("x_one_circle_pulse", kreg_xyrobot_x_one_circle_pulse, ZRegItem::krw | ZRegItem::kdec); - tableBox->addReg("y_one_circle_pulse", kreg_xyrobot_y_one_circle_pulse, ZRegItem::krw | ZRegItem::kdec); - tableBox->addReg("run_to_zero_max_x_d", kreg_xyrobot_run_to_zero_max_x_d, ZRegItem::krw | ZRegItem::kdec); - tableBox->addReg("run_to_zero_max_y_d", kreg_xyrobot_run_to_zero_max_y_d, ZRegItem::krw | ZRegItem::kdec); - tableBox->addReg("look_zero_edge_max_x_d", kreg_xyrobot_look_zero_edge_max_x_d, ZRegItem::krw | ZRegItem::kdec); - tableBox->addReg("look_zero_edge_max_y_d", kreg_xyrobot_look_zero_edge_max_y_d, ZRegItem::krw | ZRegItem::kdec); - tableBox->addReg("io_state0", kreg_xyrobot_io_state0, ZRegItem::krw | ZRegItem::kbinary); + tableBox->addReg("min_x", kreg_xyrobot_min_x, ZRegItem::krw | ZRegItem::kdec); + tableBox->addReg("min_y", kreg_xyrobot_min_y, ZRegItem::krw | ZRegItem::kdec); + tableBox->addReg("max_x", kreg_xyrobot_max_x, ZRegItem::krw | ZRegItem::kdec); + tableBox->addReg("max_y", kreg_xyrobot_max_y, ZRegItem::krw | ZRegItem::kdec); + tableBox->addReg("run_to_zero_speed", kreg_xyrobot_run_to_zero_speed, ZRegItem::krw | ZRegItem::kdec); + tableBox->addReg("look_zero_edge_speed", kreg_xyrobot_look_zero_edge_speed, ZRegItem::krw | ZRegItem::kdec); + tableBox->addReg("shift_x", kreg_xyrobot_shift_x, ZRegItem::krw | ZRegItem::kdec); + tableBox->addReg("shift_y", kreg_xyrobot_shift_y, ZRegItem::krw | ZRegItem::kdec); + tableBox->addReg("default_velocity", kreg_xyrobot_default_velocity, ZRegItem::krw | ZRegItem::kdec); tableBox->addSpacer(); }