|
|
@ -316,14 +316,38 @@ void MainWindow::constructUI() { |
|
|
|
heartrate_report_packet_t *heartrate_report = (heartrate_report_packet_t *)report_packet; |
|
|
|
static uint32_t lastpacket_index = 0; |
|
|
|
static uint32_t lostpacket = 0; |
|
|
|
if ((lastpacket_index + 5) != (heartrate_report->sample_data_index)) { |
|
|
|
|
|
|
|
int packetFrameNum = (len - sizeof(heartrate_report_packet_t)) / 9; |
|
|
|
if ((lastpacket_index + packetFrameNum) != (heartrate_report->sample_data_index)) { |
|
|
|
lostpacket++; |
|
|
|
} |
|
|
|
lastpacket_index = heartrate_report->sample_data_index; |
|
|
|
reportPreviewShow("[preview data ] lost:%d index %d", lostpacket, heartrate_report->sample_data_index); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
{ |
|
|
|
// 解析心电数据
|
|
|
|
|
|
|
|
int32_t val[3]; |
|
|
|
for (size_t i = 0; i < packetFrameNum; i++) { |
|
|
|
uint8_t *val0p = heartrate_report->data + i * 9; |
|
|
|
uint8_t *val1p = val0p + 3; |
|
|
|
uint8_t *val2p = val1p + 3; |
|
|
|
|
|
|
|
val[0] = (int32_t)(val0p[0]) + ((int32_t)val0p[1] << 8) + ((int32_t)val0p[2] << 16); |
|
|
|
val[1] = (int32_t)(val1p[0]) + ((int32_t)val1p[1] << 8) + ((int32_t)val1p[2] << 16); |
|
|
|
val[2] = (int32_t)(val2p[0]) + ((int32_t)val2p[1] << 8) + ((int32_t)val2p[2] << 16); |
|
|
|
|
|
|
|
emit doinui_signal(QFunction([this, val, i]() { //
|
|
|
|
int32_t data0 = FilterAlgoMgr::ins()->processData("心电1", val[0]); |
|
|
|
int32_t data1 = FilterAlgoMgr::ins()->processData("心电2", val[1]); |
|
|
|
int32_t data2 = FilterAlgoMgr::ins()->processData("心电3", val[2]); |
|
|
|
|
|
|
|
wp2d->addData("心电1", data0, 0); |
|
|
|
wp2d->addData("心电2", data1, 0); |
|
|
|
wp2d->addData("心电3", data2, 0); |
|
|
|
})); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
} else if (m_devicetype == kone_lead_ecg_v2) { |
|
|
|
if (!checkok) return; |
|
|
@ -761,6 +785,9 @@ void MainWindow::on_FilterUpdateParameter_clicked() { |
|
|
|
FilterAlgoMgr::ins()->BaselineDriftRemoval_setEnable(ui->BaselineDriftRemoval_Enable->isChecked()); |
|
|
|
FilterAlgoMgr::ins()->BaselineDriftRemoval_setWindowsSize(ui->BaselineDriftRemoval_WindowsSize->text().toInt()); |
|
|
|
|
|
|
|
FilterAlgoMgr::ins()->MedianFilter_setEnable(ui->MedianFilter_Enable->isChecked()); |
|
|
|
FilterAlgoMgr::ins()->MedianFilter_setWindowsSize(ui->MedianFilter_WindowsSize->text().toInt()); |
|
|
|
|
|
|
|
FilterAlgoMgr::ins()->updateParameter(); |
|
|
|
on_buttonTabWidget_currentChanged(0); |
|
|
|
|
|
|
@ -790,6 +817,9 @@ void MainWindow::on_buttonTabWidget_currentChanged(int index) { |
|
|
|
|
|
|
|
ui->BaselineDriftRemoval_Enable->setChecked(FilterAlgoMgr::ins()->BaselineDriftRemoval_getEnable()); |
|
|
|
ui->BaselineDriftRemoval_WindowsSize->setText(QString::number(FilterAlgoMgr::ins()->BaselineDriftRemoval_getWindowsSize())); |
|
|
|
|
|
|
|
ui->MedianFilter_Enable->setChecked(FilterAlgoMgr::ins()->MedianFilter_getEnable()); |
|
|
|
ui->MedianFilter_WindowsSize->setText(QString::number(FilterAlgoMgr::ins()->MedianFilter_getWindowsSize())); |
|
|
|
} |
|
|
|
|
|
|
|
void MainWindow::on_TestCmd_writeSubICAllReg_clicked() { |
|
|
|