From 32f4aa23f883662710930b52f72dc236b6d38d47 Mon Sep 17 00:00:00 2001 From: zhaohe Date: Thu, 9 May 2024 09:53:00 +0800 Subject: [PATCH] update --- ify_hrs_protocol | 2 +- mainwindow.cpp | 40 +- mainwindow.ui | 931 ++++++++++++++++++++------------------ src/electrocardiograph_tester.cpp | 30 +- src/electrocardiograph_tester.hpp | 5 +- 5 files changed, 522 insertions(+), 486 deletions(-) diff --git a/ify_hrs_protocol b/ify_hrs_protocol index a1fda58..c5a8617 160000 --- a/ify_hrs_protocol +++ b/ify_hrs_protocol @@ -1 +1 @@ -Subproject commit a1fda58c30f6bb892c9f503280b3896c67e00dda +Subproject commit c5a86174de8f27f4c8ab6c18dd131effa7b43ea5 diff --git a/mainwindow.cpp b/mainwindow.cpp index 29e8484..17b06da 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -577,18 +577,18 @@ void MainWindow::on_TestCmd_readSubIcRegs_clicked() { instructionPreviewClear(); try { uint8_t data[12]; - data[ADS129X_REG_ID] = ElectrocardiographTester::ins()->testCmdReadReg(ADS129X_REG_ID); - data[ADS129X_REG_CONFIG1] = ElectrocardiographTester::ins()->testCmdReadReg(ADS129X_REG_CONFIG1); - data[ADS129X_REG_CONFIG2] = ElectrocardiographTester::ins()->testCmdReadReg(ADS129X_REG_CONFIG2); - data[ADS129X_REG_LOFF] = ElectrocardiographTester::ins()->testCmdReadReg(ADS129X_REG_LOFF); - data[ADS129X_REG_CH1SET] = ElectrocardiographTester::ins()->testCmdReadReg(ADS129X_REG_CH1SET); - data[ADS129X_REG_CH2SET] = ElectrocardiographTester::ins()->testCmdReadReg(ADS129X_REG_CH2SET); - data[ADS129X_REG_RLDSENS] = ElectrocardiographTester::ins()->testCmdReadReg(ADS129X_REG_RLDSENS); - data[ADS129X_REG_LOFFSENS] = ElectrocardiographTester::ins()->testCmdReadReg(ADS129X_REG_LOFFSENS); - data[ADS129X_REG_LOFFSTAT] = ElectrocardiographTester::ins()->testCmdReadReg(ADS129X_REG_LOFFSTAT); - data[ADS129X_REG_RESP1] = ElectrocardiographTester::ins()->testCmdReadReg(ADS129X_REG_RESP1); - data[ADS129X_REG_RESP2] = ElectrocardiographTester::ins()->testCmdReadReg(ADS129X_REG_RESP2); - data[ADS129X_REG_GPIO] = ElectrocardiographTester::ins()->testCmdReadReg(ADS129X_REG_GPIO); + data[ADS129X_REG_ID] = ElectrocardiographTester::ins()->ecg_subic_read_reg(ADS129X_REG_ID); + data[ADS129X_REG_CONFIG1] = ElectrocardiographTester::ins()->ecg_subic_read_reg(ADS129X_REG_CONFIG1); + data[ADS129X_REG_CONFIG2] = ElectrocardiographTester::ins()->ecg_subic_read_reg(ADS129X_REG_CONFIG2); + data[ADS129X_REG_LOFF] = ElectrocardiographTester::ins()->ecg_subic_read_reg(ADS129X_REG_LOFF); + data[ADS129X_REG_CH1SET] = ElectrocardiographTester::ins()->ecg_subic_read_reg(ADS129X_REG_CH1SET); + data[ADS129X_REG_CH2SET] = ElectrocardiographTester::ins()->ecg_subic_read_reg(ADS129X_REG_CH2SET); + data[ADS129X_REG_RLDSENS] = ElectrocardiographTester::ins()->ecg_subic_read_reg(ADS129X_REG_RLDSENS); + data[ADS129X_REG_LOFFSENS] = ElectrocardiographTester::ins()->ecg_subic_read_reg(ADS129X_REG_LOFFSENS); + data[ADS129X_REG_LOFFSTAT] = ElectrocardiographTester::ins()->ecg_subic_read_reg(ADS129X_REG_LOFFSTAT); + data[ADS129X_REG_RESP1] = ElectrocardiographTester::ins()->ecg_subic_read_reg(ADS129X_REG_RESP1); + data[ADS129X_REG_RESP2] = ElectrocardiographTester::ins()->ecg_subic_read_reg(ADS129X_REG_RESP2); + data[ADS129X_REG_GPIO] = ElectrocardiographTester::ins()->ecg_subic_read_reg(ADS129X_REG_GPIO); ishow("reg %10s %02d: 0x%02x", "ID", ADS129X_REG_ID, data[ADS129X_REG_ID]); ishow("reg %10s %02d: 0x%02x", "CONFIG1", ADS129X_REG_CONFIG1, data[ADS129X_REG_CONFIG1]); @@ -615,7 +615,7 @@ void MainWindow::on_TestCmd_writeSubICReg_clicked() { uint32_t val = str2int(ui->TestCmd_writeSubICReg_p1->toPlainText()); instructionPreviewClear(); try { - ElectrocardiographTester::ins()->testCmdWriteReg(add, val); + ElectrocardiographTester::ins()->ecg_subic_write_reg(add, val); ishow("write reg %d: 0x%02x success", add, val); } catch (zexception &exception) { processException(exception); @@ -629,13 +629,13 @@ void MainWindow::on_TestCmd_writeSubICRegMask_clicked() { instructionPreviewClear(); try { - uint8_t regval = ElectrocardiographTester::ins()->testCmdReadReg(add); + uint8_t regval = ElectrocardiographTester::ins()->ecg_subic_read_reg(add); uint8_t oldval = regval; uint8_t mask = (1 << bitnum) - 1; mask = mask << off; regval = regval & (~mask); regval = regval | (val << off); - ElectrocardiographTester::ins()->testCmdWriteReg(add, regval); + ElectrocardiographTester::ins()->ecg_subic_write_reg(add, regval); ishow("write reg %d: 0x%02x -> 0x%02x success", add, oldval, regval); } catch (const std::exception &e) { std::cerr << e.what() << '\n'; @@ -666,15 +666,15 @@ void MainWindow::on_TestCmd_stopCapture_clicked() { void MainWindow::on_TestCmd_changeECGSrcToSquareWave_clicked() { instructionPreviewClear(); try { - uint8_t cfg2 = ElectrocardiographTester::ins()->testCmdReadReg(ADS129X_REG_CONFIG2); - uint8_t ch1set = ElectrocardiographTester::ins()->testCmdReadReg(ADS129X_REG_CH1SET); + uint8_t cfg2 = ElectrocardiographTester::ins()->ecg_subic_read_reg(ADS129X_REG_CONFIG2); + uint8_t ch1set = ElectrocardiographTester::ins()->ecg_subic_read_reg(ADS129X_REG_CH1SET); cfg2 = ADS129X_SET_BITS(cfg2, ADS129X_INT_TEST, ADS129X_INT_TEST_ON); cfg2 = ADS129X_SET_BITS(cfg2, ADS129X_INT_FREQ, ADS129X_INT_FREQ_AC); ch1set = ADS129X_SET_BITS(ch1set, ADS129X_MUXx, ADS129X_CHx_INPUT_TEST); - ElectrocardiographTester::ins()->testCmdWriteReg(ADS129X_REG_CONFIG2, cfg2); - ElectrocardiographTester::ins()->testCmdWriteReg(ADS129X_REG_CH1SET, ch1set); + ElectrocardiographTester::ins()->ecg_subic_write_reg(ADS129X_REG_CONFIG2, cfg2); + ElectrocardiographTester::ins()->ecg_subic_write_reg(ADS129X_REG_CH1SET, ch1set); ishow("call change ECG src to square wave success"); } catch (zexception &exception) { @@ -748,7 +748,7 @@ void MainWindow::on_TestCmd_writeSubICAllReg_clicked() { data[i] = str2int(reglist[i]); } for (size_t i = 0; i < 12; i++) { - ElectrocardiographTester::ins()->testCmdWriteReg(i, data[i]); + ElectrocardiographTester::ins()->ecg_subic_write_reg(i, data[i]); ishow("write reg %d: 0x%02x success", i, data[i]); } ishow("write all reg success"); diff --git a/mainwindow.ui b/mainwindow.ui index ad10c45..0416db3 100644 --- a/mainwindow.ui +++ b/mainwindow.ui @@ -903,7 +903,7 @@ p, li { white-space: pre-wrap; } - 0 + 2 @@ -916,8 +916,8 @@ p, li { white-space: pre-wrap; } 设备基本操作 - - + + 1 @@ -931,12 +931,12 @@ p, li { white-space: pre-wrap; } - 读取设备状态信息 + 读取设备SN - - + + 1 @@ -950,12 +950,25 @@ p, li { white-space: pre-wrap; } - 同步时间 + 读取设备版本信息 - - + + + + Qt::Vertical + + + + 20 + 40 + + + + + + 1 @@ -969,12 +982,12 @@ p, li { white-space: pre-wrap; } - 读取设备SN + 同步时间 - - + + 1 @@ -988,12 +1001,12 @@ p, li { white-space: pre-wrap; } - 读取传感器信息 + 读取设备状态信息 - + 1 @@ -1007,12 +1020,12 @@ p, li { white-space: pre-wrap; } - 设置ECG为正常模式 + 失能ECG上报数据算法 - - + + 1 @@ -1026,12 +1039,12 @@ p, li { white-space: pre-wrap; } - 复位设备 + 读取设备时间 - - + + 1 @@ -1045,12 +1058,12 @@ p, li { white-space: pre-wrap; } - 读取设备版本信息 + 读取传感器信息 - - + + 1 @@ -1064,38 +1077,50 @@ p, li { white-space: pre-wrap; } - 读取设备时间 + 使能ECG上报数据算法 - - - - Qt::Horizontal + + + + + 1 + 0 + - + - 40 - 20 + 0 + 30 - + + 测试-设置ECG为测试模式 + + - - - - Qt::Vertical + + + + + 1 + 0 + - + - 20 - 40 + 0 + 30 - + + 测试-设置ECG为正常模式 + + - - + + 1 @@ -1109,7 +1134,7 @@ p, li { white-space: pre-wrap; } - 设置ECG为正常模式 + 复位设备 @@ -1815,415 +1840,417 @@ p, li { white-space: pre-wrap; } 滤波器配置 - - - - 10 - 10 - 650 - 371 - - - - 滤波器配置 - - - - - - 低通滤波器 - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - 1 - 0 - - - - 截至频率(HZ) - - - - - - - - 1 - 0 - - - - - - - - - - - - 1 - 0 - - - - - - - - - - - - 1 - 0 - - - - 使能 - - - - - - - - 1 - 0 - - - - - - - - - 1 - 0 - - - - 阶级 - - - - - - - - - - 陷波滤波器(带阻) - - - - - - - 1 - 0 - - - - 中心频率(HZ) - - - - - - - - 1 - 0 - - - - 窗口宽度(HZ) - - - - - - - - 1 - 0 - - - - - - - - - - - - 1 - 0 - - - - 使能 - - - - - - - - 1 - 0 - - - - - - - - - 1 - 0 - - - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - 1 - 0 - - - - - - - - - 1 - 0 - - - - 阶级 - - - - - - - - - - 高通滤波器 - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - 1 - 0 - - - - 截至频率(HZ) - - - - - - - - 1 - 0 - - - - - - - - - - - - 1 - 0 - - - - - - - - - - - - 1 - 0 - - - - 使能 - - - - - - - - 1 - 0 - - - - - - - - - 1 - 0 - - - - 阶级 - - - - - - - - - - - 0 - 150 - - - - 通用参数 - - - - - - - 1 - 0 - - - - - - - - - - - - 1 - 0 - - - - 数据采样周期(ms) - - - - - - - Qt::Horizontal - - - - 300 - 20 - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - - - 540 - 400 - 111 - 41 - - - - 更新滤波器参数 - - + + + + + + 0 + 0 + + + + 滤波器配置 + + + + + + 低通滤波器 + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + 1 + 0 + + + + 截至频率(HZ) + + + + + + + + 1 + 0 + + + + + + + + + + + + 1 + 0 + + + + + + + + + + + + 1 + 0 + + + + 使能 + + + + + + + + 1 + 0 + + + + + + + + + 1 + 0 + + + + 阶级 + + + + + + + + + + 陷波滤波器(带阻) + + + + + + + 1 + 0 + + + + 中心频率(HZ) + + + + + + + + 1 + 0 + + + + 窗口宽度(HZ) + + + + + + + + 1 + 0 + + + + + + + + + + + + 1 + 0 + + + + 使能 + + + + + + + + 1 + 0 + + + + + + + + + 1 + 0 + + + + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + 1 + 0 + + + + + + + + + 1 + 0 + + + + 阶级 + + + + + + + + + + 高通滤波器 + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + 1 + 0 + + + + 截至频率(HZ) + + + + + + + + 1 + 0 + + + + + + + + + + + + 1 + 0 + + + + + + + + + + + + 1 + 0 + + + + 使能 + + + + + + + + 1 + 0 + + + + + + + + + 1 + 0 + + + + 阶级 + + + + + + + + + + + 0 + 150 + + + + 通用参数 + + + + + + + 1 + 0 + + + + + + + + + + + + 1 + 0 + + + + 数据采样周期(ms) + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + + + + + + + 0 + 50 + + + + 更新滤波器参数 + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + diff --git a/src/electrocardiograph_tester.cpp b/src/electrocardiograph_tester.cpp index d2717f2..92a1bdb 100644 --- a/src/electrocardiograph_tester.cpp +++ b/src/electrocardiograph_tester.cpp @@ -382,29 +382,27 @@ void ElectrocardiographTester::testCmdStopCapture() { throw zexception(kifyhrs_ecode_cmd_not_support, "not implement"); } -uint8_t ElectrocardiographTester::testCmdReadReg(uint8_t addr) { + + +uint8_t ElectrocardiographTester::ecg_subic_read_reg(uint8_t addr) { lock_guard lock(m_tx_lock); - throw zexception(kifyhrs_ecode_cmd_not_support, "not implement"); -#if 0 - m_txcmd->cmd = ify_hrs_test_cmd_read_reg; +#if 1 + m_txcmd->cmd = ify_hrs_cmd_ecg_subic_read_reg; m_txcmd->data[0] = addr; - m_txcmd->cmd = ify_hrs_test_cmd_read_reg; sendCmd(m_txcmd, sizeof(ify_hrs_packet_t) + 1, m_rxcmd, &m_rxsize, 100); return m_rxcmd->data[0]; #endif } -void ElectrocardiographTester::testCmdWriteReg(uint8_t addr, uint8_t val) { +void ElectrocardiographTester::ecg_subic_write_reg(uint8_t addr, uint8_t val) { lock_guard lock(m_tx_lock); - throw zexception(kifyhrs_ecode_cmd_not_support, "not implement"); -#if 0 +#if 1 - m_txcmd->cmd = ify_hrs_test_cmd_write_reg; + m_txcmd->cmd = ify_hrs_cmd_ecg_subic_write_reg; m_txcmd->data[0] = addr; m_txcmd->data[1] = val; - m_txcmd->cmd = ify_hrs_test_cmd_write_reg; sendCmd(m_txcmd, sizeof(ify_hrs_packet_t) + 2, m_rxcmd, &m_rxsize, 100); #endif } @@ -412,7 +410,6 @@ void ElectrocardiographTester::testCmdWriteReg(uint8_t addr, uint8_t val) { void ElectrocardiographTester::set_ecg_in_test_mode(int32_t testmode) { lock_guard lock(m_tx_lock); - int32_t *para = (int32_t *)m_txcmd->data; para[0] = testmode; @@ -420,3 +417,14 @@ void ElectrocardiographTester::set_ecg_in_test_mode(int32_t testmode) { sendCmd(m_txcmd, sizeof(ify_hrs_packet_t) + sizeof(int32_t), m_rxcmd, &m_rxsize, 100); return; } + +void ElectrocardiographTester::set_ecg_report_data_in_raw_mode(int32_t rawmode) { + lock_guard lock(m_tx_lock); + + int32_t *para = (int32_t *)m_txcmd->data; + para[0] = rawmode; + + m_txcmd->cmd = ify_hrs_cmd_set_ecg_report_data_in_raw_mode; + sendCmd(m_txcmd, sizeof(ify_hrs_packet_t) + sizeof(int32_t), m_rxcmd, &m_rxsize, 100); + return; +} diff --git a/src/electrocardiograph_tester.hpp b/src/electrocardiograph_tester.hpp index fcf5ded..d134a2f 100644 --- a/src/electrocardiograph_tester.hpp +++ b/src/electrocardiograph_tester.hpp @@ -108,11 +108,12 @@ class ElectrocardiographTester { void reset(); // 重置设备 void set_ecg_in_test_mode(int32_t testmode); + void set_ecg_report_data_in_raw_mode(int32_t rawmode); void testCmdStartCapture(); void testCmdStopCapture(); - uint8_t testCmdReadReg(uint8_t addr); - void testCmdWriteReg(uint8_t addr, uint8_t val); + uint8_t ecg_subic_read_reg(uint8_t addr); + void ecg_subic_write_reg(uint8_t addr, uint8_t val); private: void sendCmd(ify_hrs_packet_t *tx, int32_t txlen, ify_hrs_packet_t *rx, int32_t *rxlen, int32_t overtime);