Browse Source

update

master
zhaohe 1 year ago
parent
commit
8deea9bcd2
  1. 1
      CMakeLists.txt
  2. 18
      README.md
  3. 2
      a8000_protocol
  4. 218
      src/basic/stm32_pin.cpp
  5. 119
      src/basic/stm32_pin.hpp
  6. 8
      src/mainwindow.cpp
  7. 43
      src/tab/board_ext_tab.cpp
  8. 2
      src/tab/fan_ctrl_tab.cpp
  9. 19
      src/tab/step_motor_ctrl_tab.cpp
  10. 27
      src/tab/water_cooling_temperature_tab.cpp

1
CMakeLists.txt

@ -58,6 +58,7 @@ set(PROJECT_SOURCES
a8000_protocol/api/apibasic/errorcode.cpp
src/tab/pipette_ctrl_tab.cpp
src/basic/stm32_pin.cpp
app.rc
)

18
README.md

@ -60,4 +60,22 @@ V4:
```
```
ID地址:
0x080E0000
10 :A
20 :14
30 :1E
40 :28
50 :32
60 :3C
70 :46
80 :50
90 :5A
100:64
110:6E
200:CB
```

2
a8000_protocol

@ -1 +1 @@
Subproject commit 8fa3934e833a116d68d4c32ebba8352ce1b8746f
Subproject commit 6486ccf75f3e6bd05c7454ff994d8c003d908227

218
src/basic/stm32_pin.cpp

@ -0,0 +1,218 @@
#include "stm32_pin.hpp"
#include <stdarg.h>
#include <string>
static inline const char* fmt(const char* format, ...) {
static char buf[1024];
va_list args;
va_start(args, format);
vsprintf(buf, format, args);
va_end(args);
return buf;
}
std::string stm32pin2str(Pin_t pin) {
switch (pin) {
case PA0:
return "PA0";
case PA1:
return "PA1";
case PA2:
return "PA2";
case PA3:
return "PA3";
case PA4:
return "PA4";
case PA5:
return "PA5";
case PA6:
return "PA6";
case PA7:
return "PA7";
case PA8:
return "PA8";
case PA9:
return "PA9";
case PA10:
return "PA10";
case PA11:
return "PA11";
case PA12:
return "PA12";
case PA13:
return "PA13";
case PA14:
return "PA14";
case PA15:
return "PA15";
case PB0:
return "PB0";
case PB1:
return "PB1";
case PB2:
return "PB2";
case PB3:
return "PB3";
case PB4:
return "PB4";
case PB5:
return "PB5";
case PB6:
return "PB6";
case PB7:
return "PB7";
case PB8:
return "PB8";
case PB9:
return "PB9";
case PB10:
return "PB10";
case PB11:
return "PB11";
case PB12:
return "PB12";
case PB13:
return "PB13";
case PB14:
return "PB14";
case PB15:
return "PB15";
case PC0:
return "PC0";
case PC1:
return "PC1";
case PC2:
return "PC2";
case PC3:
return "PC3";
case PC4:
return "PC4";
case PC5:
return "PC5";
case PC6:
return "PC6";
case PC7:
return "PC7";
case PC8:
return "PC8";
case PC9:
return "PC9";
case PC10:
return "PC10";
case PC11:
return "PC11";
case PC12:
return "PC12";
case PC13:
return "PC13";
case PC14:
return "PC14";
case PC15:
return "PC15";
case PD0:
return "PD0";
case PD1:
return "PD1";
case PD2:
return "PD2";
case PD3:
return "PD3";
case PD4:
return "PD4";
case PD5:
return "PD5";
case PD6:
return "PD6";
case PD7:
return "PD7";
case PD8:
return "PD8";
case PD9:
return "PD9";
case PD10:
return "PD10";
case PD11:
return "PD11";
case PD12:
return "PD12";
case PD13:
return "PD13";
case PD14:
return "PD14";
case PD15:
return "PD15";
case PF0:
return "PF0";
case PF1:
return "PF1";
case PF2:
return "PF2";
case PF3:
return "PF3";
case PF4:
return "PF4";
case PF5:
return "PF5";
case PF6:
return "PF6";
case PF7:
return "PF7";
case PF8:
return "PF8";
case PF9:
return "PF9";
case PF10:
return "PF10";
case PF11:
return "PF11";
case PF12:
return "PF12";
case PF13:
return "PF13";
case PF14:
return "PF14";
case PF15:
return "PF15";
case PG0:
return "PG0";
case PG1:
return "PG1";
case PG2:
return "PG2";
case PG3:
return "PG3";
case PG4:
return "PG4";
case PG5:
return "PG5";
case PG6:
return "PG6";
case PG7:
return "PG7";
case PG8:
return "PG8";
case PG9:
return "PG9";
case PG10:
return "PG10";
case PG11:
return "PG11";
case PG12:
return "PG12";
case PG13:
return "PG13";
case PG14:
return "PG14";
case PG15:
return "PG15";
case PinNull:
return "N/A";
default:
return fmt("Unkonw(0x%x)", pin);
}
return fmt("Unkonw(0x%x)", pin);
}

119
src/basic/stm32_pin.hpp

@ -0,0 +1,119 @@
#pragma once
#include <string>
typedef enum {
PinNull = 0,
PA0 = 0x10,
PA1,
PA2,
PA3,
PA4,
PA5,
PA6,
PA7,
PA8,
PA9,
PA10,
PA11,
PA12,
PA13,
PA14,
PA15,
PB0 = 0x20,
PB1,
PB2,
PB3,
PB4,
PB5,
PB6,
PB7,
PB8,
PB9,
PB10,
PB11,
PB12,
PB13,
PB14,
PB15,
PC0 = 0x30,
PC1,
PC2,
PC3,
PC4,
PC5,
PC6,
PC7,
PC8,
PC9,
PC10,
PC11,
PC12,
PC13,
PC14,
PC15,
PD0 = 0x40,
PD1,
PD2,
PD3,
PD4,
PD5,
PD6,
PD7,
PD8,
PD9,
PD10,
PD11,
PD12,
PD13,
PD14,
PD15,
PE0 = 0x50,
PE1,
PE2,
PE3,
PE4,
PE5,
PE6,
PE7,
PE8,
PE9,
PE10,
PE11,
PE12,
PE13,
PE14,
PE15,
PF0 = 0x60,
PF1,
PF2,
PF3,
PF4,
PF5,
PF6,
PF7,
PF8,
PF9,
PF10,
PF11,
PF12,
PF13,
PF14,
PF15,
PG0 = 0x70,
PG1,
PG2,
PG3,
PG4,
PG5,
PG6,
PG7,
PG8,
PG9,
PG10,
PG11,
PG12,
PG13,
PG14,
PG15,
} Pin_t;
std::string stm32pin2str(Pin_t pin);

8
src/mainwindow.cpp

@ -23,10 +23,12 @@
//
#include "tab/board_ext_tab.hpp"
#include "tab/code_scaner_tab.hpp"
#include "tab/fan_ctrl_tab.hpp"
#include "tab/mini_servo_tab.hpp"
#include "tab/module_opera_tab.hpp"
#include "tab/step_motor_ctrl_tab.hpp"
#include "tab/pipette_ctrl_tab.hpp"
#include "tab/step_motor_ctrl_tab.hpp"
#include "tab/water_cooling_temperature_tab.hpp"
#include "version.h"
using namespace std;
@ -220,7 +222,6 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWi
// VERSION
main_ui = ui;
ui->setupUi(this);
@ -298,6 +299,9 @@ void MainWindow::constructAppUI() {
MiniServoTab::inst()->construct(ui->buttonTabWidget);
CodeScanerTab::inst()->construct(ui->buttonTabWidget);
PipetteCtrlTab::inst()->construct(ui->buttonTabWidget);
WaterCoolingTemperatureControlerTab::inst()->construct(ui->buttonTabWidget);
FanCtrlTab::inst()->construct(ui->buttonTabWidget);
}
void MainWindow::on_PublicState_ConfirmKey_clicked() {}

43
src/tab/board_ext_tab.cpp

@ -8,6 +8,7 @@
#include "zui/z_reg_table_list_box.hpp"
#include "zui/zq_vtab_page.hpp"
//
#include "../basic/stm32_pin.hpp"
#include "./mainwindow.h"
#include "zui\zqui.hpp"
//
@ -37,18 +38,42 @@ void BoardExtTab::construct(QTabWidget *fathertab) {
{
ZQFunctionListBox *box = new ZQFunctionListBox(tab, "方法", 4);
box->newFunc("读取IO", {"ioindex"}, [this](int argn, const char **args) {
int32_t status = 0;
ICM->callcmd1(getDeviceId(), kboard_read_ext_io, atoi(args[0]));
ZQUI::ins()->ishow("Status:%d", ICM->getAck(0));
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(), kextboard_read_inio_index_in_stm32, i);
indexInStm32 = ICM->getAck(0);
ICM->callcmd1(getDeviceId(), kextboard_read_inio, i);
portState = ICM->getAck(0);
if (indexInStm32 == 0) break;
ZQUI::ins()->ishow("io%d(%s):%d", i, stm32pin2str((Pin_t)indexInStm32).c_str(), portState);
} catch (const std::exception &e) {
break;
}
}
});
box->newFunc("读取全部IO", {}, [this](int argn, const char **args) {
int32_t status = 0;
ICM->callcmd0(getDeviceId(), kboard_read_muti_io);
ZQUI::ins()->ishow("IOState:%s", hex2binstr(ICM->getAck(0)));
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(), kextboard_read_outio_index_in_stm32, i);
indexInStm32 = ICM->getAck(0);
ICM->callcmd1(getDeviceId(), kextboard_read_outio, i);
portState = ICM->getAck(0);
if (indexInStm32 == 0) break;
ZQUI::ins()->ishow("io%d(%s):%d", i, stm32pin2str((Pin_t)indexInStm32).c_str(), portState);
} catch (const std::exception &e) {
break;
}
}
});
box->newFunc("写入IO", {"ioindex", "iostate"}, [this](int argn, const char **args) { ICM->callcmd1(getDeviceId(), kboard_write_ext_io, atoi(args[0]), atoi(args[1])); });
// stm32pin2str
box->newFunc("写入IO", {"ioindex", "iostate"}, [this](int argn, const char **args) { ICM->callcmd1(getDeviceId(), kextboard_write_outio, atoi(args[0]), atoi(args[1])); });
}
/***********************************************************************************************************************

2
src/tab/fan_ctrl_tab.cpp

@ -35,7 +35,7 @@ void FanCtrlTab::construct(QTabWidget *fathertab) {
{
ZQFunctionListBox *box = new ZQFunctionListBox(tab, "风扇控制", 4);
box->newFunc("控制风扇转速", {"speed"}, [this](int argn, const char **args) { ICM->callcmd0(getDeviceId(), kfan_controler_set_speed, atoi(args[0])); });
box->newFunc("控制风扇转速", {"speed"}, [this](int argn, const char **args) { ICM->callcmd1(getDeviceId(), kfan_controler_set_speed, atoi(args[0])); });
}
tab->addSpacer();

19
src/tab/step_motor_ctrl_tab.cpp

@ -8,6 +8,7 @@
#include "zui/z_reg_table_list_box.hpp"
#include "zui/zq_vtab_page.hpp"
//
#include "../basic/stm32_pin.hpp"
#include "./mainwindow.h"
#include "zui\zqui.hpp"
//
@ -67,9 +68,21 @@ void StepMotorCtrlTab::construct(QTabWidget *fathertab) {
ZQUI::ins()->ishow("Pos:%d", pos);
});
box->newFunc("读取IO状态", {"ioindex"}, [this](int argn, const char **args) {
int32_t io = 0;
ICM->step_motor_read_io_state(getDeviceId(), atoi(args[0]), &io);
ZQUI::ins()->ishow("IO:%d", io);
int32_t portState = 0;
int32_t indexInStm32 = 0;
for (int i = 0; i < 10; i++) {
try {
ICM->callcmd1(getDeviceId(), kstep_motor_read_io_index_in_stm32, i);
indexInStm32 = ICM->getAck(0);
ICM->callcmd1(getDeviceId(), kstep_motor_read_io_state, i);
portState = ICM->getAck(0);
if (indexInStm32 == 0) break;
ZQUI::ins()->ishow("io%d(%s):%d", i, stm32pin2str((Pin_t)indexInStm32).c_str(), portState);
} catch (const std::exception &e) {
break;
}
}
});
box->newFunc("读取5130电机详细状态", {"ioindex"}, [this](int argn, const char **args) {
ICM->callcmd0(getDeviceId(), kstep_motor_read_tmc5130_status);

27
src/tab/water_cooling_temperature_tab.cpp

@ -36,12 +36,12 @@ void WaterCoolingTemperatureControlerTab::construct(QTabWidget *fathertab) {
{
ZQFunctionListBox *box = new ZQFunctionListBox(tab, "水冷温度控制器", 4);
box->newFunc("开始控温", {"temperature"}, [this](int argn, const char **args) { ICM->callcmd0(getDeviceId(), ktemp_controler_start_hearting, atoi(args[0])); });
box->newFunc("开始控温", {"temperature"}, [this](int argn, const char **args) { ICM->callcmd1(getDeviceId(), ktemp_controler_start_hearting, atoi(args[0])); });
box->newFunc("停止控温", {}, [this](int argn, const char **args) { ICM->callcmd0(getDeviceId(), ktemp_controler_stop_hearting); });
box->newFunc("测试-帕尔贴-控制功率", {"level[-100,100]"}, [this](int argn, const char **args) { ICM->callcmd0(getDeviceId(), ktemp_controler_set_peltier_power_level, atoi(args[0])); });
box->newFunc("测试-水泵-控制转速", {"speed[0,100]"}, [this](int argn, const char **args) { ICM->callcmd0(getDeviceId(), ktemp_controler_set_pump_level, atoi(args[0])); });
box->newFunc("测试-风扇-控制转速", {"speed[0,100]"}, [this](int argn, const char **args) { ICM->callcmd0(getDeviceId(), ktemp_controler_set_fan_level, atoi(args[0])); });
box->newFunc("测试-日志-开关", {"enable[0,1]"}, [this](int argn, const char **args) { ICM->callcmd0(getDeviceId(), ktemp_controler_enable_log, atoi(args[0])); });
box->newFunc("测试-帕尔贴-控制功率", {"level[-100,100]"}, [this](int argn, const char **args) { ICM->callcmd1(getDeviceId(), ktemp_controler_set_peltier_power_level, atoi(args[0])); });
box->newFunc("测试-水泵-控制转速", {"speed[0,100]"}, [this](int argn, const char **args) { ICM->callcmd1(getDeviceId(), ktemp_controler_set_pump_level, atoi(args[0])); });
box->newFunc("测试-风扇-控制转速", {"speed[0,100]"}, [this](int argn, const char **args) { ICM->callcmd1(getDeviceId(), ktemp_controler_set_fan_level, atoi(args[0])); });
box->newFunc("测试-日志-开关", {"enable[0,1]"}, [this](int argn, const char **args) { ICM->callcmd1(getDeviceId(), ktemp_controler_enable_log, atoi(args[0])); });
}
tab->addSpacer();
@ -58,10 +58,19 @@ void WaterCoolingTemperatureControlerTab::construct(QTabWidget *fathertab) {
return true;
});
tableBox->addReg("reg_pipette_pos_ul", kreg_pipette_pos_ul, ZRegItem::krw | ZRegItem::kdec);
tableBox->addReg("reg_pipette_capactitance_val", kreg_pipette_capactitance_val, ZRegItem::krw | ZRegItem::kdec);
tableBox->addReg("reg_pipette_tip_state", kreg_pipette_tip_state, ZRegItem::krw | ZRegItem::kdec);
tableBox->addReg("reg_pipette_limit_ul", kreg_pipette_limit_ul, ZRegItem::krw | ZRegItem::kdec);
tableBox->addReg("PID-Kd", kreg_water_cooling_tmp_controler_pid_kd, ZRegItem::krw | ZRegItem::kdec);
tableBox->addReg("PID-MaxOutput", kreg_water_cooling_tmp_controler_pid_max_output, ZRegItem::krw | ZRegItem::kdec);
tableBox->addReg("PID-MinOutput", kreg_water_cooling_tmp_controler_pid_min_output, ZRegItem::krw | ZRegItem::kdec);
tableBox->addReg("PID-MaxIntegral", kreg_water_cooling_tmp_controler_pid_max_integral, ZRegItem::krw | ZRegItem::kdec);
tableBox->addReg("PID-MinIntegral", kreg_water_cooling_tmp_controler_pid_min_integral, ZRegItem::krw | ZRegItem::kdec);
tableBox->addReg("PID-Interval", kreg_water_cooling_tmp_controler_pid_compute_interval, ZRegItem::krw | ZRegItem::kdec);
tableBox->addReg("PID-Target", kreg_water_cooling_tmp_controler_pid_target, ZRegItem::krw | ZRegItem::kdec);
tableBox->addReg("PID-NowOutput", kreg_water_cooling_tmp_controler_pid_nowoutput, ZRegItem::kr | ZRegItem::kdec);
tableBox->addReg("PID-FeedbackVal", kreg_water_cooling_tmp_controler_pid_feedbackval, ZRegItem::kr | ZRegItem::kdec);
tableBox->addReg("Temperature0", kreg_water_cooling_tmp_controler_temp0, ZRegItem::kr | ZRegItem::kdec);
tableBox->addReg("Temperature1", kreg_water_cooling_tmp_controler_temp1, ZRegItem::kr | ZRegItem::kdec);
tableBox->addReg("Temperature2", kreg_water_cooling_tmp_controler_temp2, ZRegItem::kr | ZRegItem::kdec);
tableBox->addReg("Temperature3", kreg_water_cooling_tmp_controler_temp3, ZRegItem::kr | ZRegItem::kdec);
tableBox->addSpacer();
tab->addSpacer();

Loading…
Cancel
Save