From 538475307cee4e510c940562a1e671c1f131f3cd Mon Sep 17 00:00:00 2001 From: zhaohe Date: Mon, 11 Mar 2024 01:38:42 +0800 Subject: [PATCH] update --- mainwindow.cpp | 232 +++- mainwindow.h | 7 + mainwindow.ui | 1468 +++++++++++++++++++- .../qt_serial_datachannel.cpp | 54 +- 4 files changed, 1696 insertions(+), 65 deletions(-) diff --git a/mainwindow.cpp b/mainwindow.cpp index 7abc9ad..d78800f 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -16,6 +16,7 @@ using namespace std; static MainWindow *m_mainWindow; static CLSTControler *m_clstc; +QTimer *timer; #define TAG "MainWindow" static const char *fmt(const char *fmt, ...) { @@ -58,13 +59,13 @@ static const QString zaferror_to_str(zaf_error_code_t value) { } } -#define DO(action) \ - { \ - zaf_error_code_t ecode = action; \ - if (ecode != kaf_ec_success) { \ - ui->informationBrowser->setText(zaferror_to_str(ecode)); \ - return; \ - } \ +#define DO(action) \ + { \ + zaf_error_code_t ecode = action; \ + if (ecode != kaf_ec_success) { \ + dumpLog("do %s fail,%s", #action, zaferror_to_str(ecode).toStdString().c_str()); \ + return; \ + } \ } void MainWindow::log_output(QtMsgType type, const QMessageLogContext &context, const QString &msg) { @@ -90,6 +91,67 @@ void MainWindow::updatePage() { DO(m_clstc->InterClk_setPluseCnt(PluseCnt)); DO(m_clstc->InterClk_setSeqCtrlPluseCntMax(SeqCtrlPluseCntMax)); } + + { + ExtTriggerSrcType src; + SigProcessMode mode; + TriggerEdge edge; + uint32_t coefficient; + uint32_t bias; + uint32_t division; + uint32_t multiplication; + +#define UPDATE(index) \ + src = ExtTriggerSrcType(ui->TriInX_SrcSelect_Val_##index->currentText().toStdString()); \ + coefficient = ui->TriInX_FileterCoefficient_Val_##index->text().toUInt(); \ + bias = ui->TriInX_FreqDetectBias_Val_##index->text().toUInt(); \ + mode = SigProcessMode(ui->TriInX_Mode_Val_##index->currentText().toStdString()); \ + edge = TriggerEdge(ui->TriInX_TriggerModeTriggerEdge_Val_##index->currentText().toStdString()); \ + division = ui->TriInX_TriggerModeFreqDivision_Val_##index->text().toUInt(); \ + multiplication = ui->TriInX_TriggerModeFreqMultiplication_Val_##index->text().toUInt(); \ + DO(m_clstc->TriInX_setSrcSelect(index, src)); \ + DO(m_clstc->TriInX_setFileterCoefficient(index, coefficient)); \ + DO(m_clstc->TriInX_setFreqDetectBias(index, bias)); \ + DO(m_clstc->TriInX_setMode(index, mode)); \ + DO(m_clstc->TriInX_setTriggerModeTriggerEdge(index, edge)); \ + DO(m_clstc->TriInX_setTriggerModeFreqDivision(index, division)); \ + DO(m_clstc->TriInX_setTriggerModeFreqMultiplication(index, multiplication)); + + UPDATE(1); + UPDATE(2); + UPDATE(3); + UPDATE(4); +#undef UPDATE + } +} +void MainWindow::refreshReadonlyPage() { + zaf_error_code_t ecode; + + { + float TriOutSignalFreq; + ecode = m_clstc->InterClk_readTriOutSignalFreq(TriOutSignalFreq); + if (ecode != kaf_ec_success) return; + + ui->InterClk_TriOutSignalFreq_Text->setText(QString::number(TriOutSignalFreq, 'f', 2)); + } + + { + float infreq; + float outfreq; + +#define UPDATE(index) \ + DO(m_clstc->TriInX_readInSignalFreq(index, infreq)); \ + DO(m_clstc->TriInX_readOutSignalFreq(index, outfreq)); \ + ui->TriInX_OutSignalFreq_Val_##index->setText(QString::number(outfreq, 'f', 2)); \ + ui->TriInX_InSignalFreq_Val_##index->setText(QString::number(infreq, 'f', 2)); + + UPDATE(1); + UPDATE(2); + UPDATE(3); + UPDATE(4); + +#undef UPDATE + } } void MainWindow::refreshPage() { @@ -109,6 +171,45 @@ void MainWindow::refreshPage() { ui->InterClk_SeqCtrlPluseCntMax_Text->setText(QString::number(SeqCtrlPluseCntMax)); ui->InterClk_TriOutSignalFreq_Text->setText(QString::number(TriOutSignalFreq, 'f', 2)); } + + { + ExtTriggerSrcType src; + SigProcessMode mode; + TriggerEdge edge; + uint32_t coefficient; + uint32_t bias; + uint32_t division; + uint32_t multiplication; + float infreq; + float outfreq; + +#define UPDATE(index) \ + DO(m_clstc->TriInX_getSrcSelect(index, src)); \ + DO(m_clstc->TriInX_getFileterCoefficient(index, coefficient)); \ + DO(m_clstc->TriInX_getFreqDetectBias(index, bias)); \ + DO(m_clstc->TriInX_getMode(index, mode)); \ + DO(m_clstc->TriInX_getTriggerModeTriggerEdge(index, edge)); \ + DO(m_clstc->TriInX_getTriggerModeFreqDivision(index, division)); \ + DO(m_clstc->TriInX_getTriggerModeFreqMultiplication(index, multiplication)); \ + DO(m_clstc->TriInX_readInSignalFreq(index, infreq)); \ + DO(m_clstc->TriInX_readOutSignalFreq(index, outfreq)); \ + ui->TriInX_SrcSelect_Val_##index->setCurrentText(QString::fromStdString(src.toString())); \ + ui->TriInX_FileterCoefficient_Val_##index->setText(QString::number(coefficient)); \ + ui->TriInX_FreqDetectBias_Val_##index->setText(QString::number(bias)); \ + ui->TriInX_Mode_Val_##index->setCurrentText(QString::fromStdString(mode.toString())); \ + ui->TriInX_OutSignalFreq_Val_##index->setText(QString::number(outfreq, 'f', 2)); \ + ui->TriInX_InSignalFreq_Val_##index->setText(QString::number(infreq, 'f', 2)); \ + ui->TriInX_TriggerModeFreqDivision_Val_##index->setText(QString::number(division)); \ + ui->TriInX_TriggerModeFreqMultiplication_Val_##index->setText(QString::number(multiplication)); \ + ui->TriInX_TriggerModeTriggerEdge_Val_##index->setCurrentText(QString::fromStdString(edge.toString())); + + UPDATE(1); + UPDATE(2); + UPDATE(3); + UPDATE(4); + +#undef UPDATE + } } void MainWindow::constructUI() { @@ -178,11 +279,13 @@ void MainWindow::constructUI() { *******************************************************************************/ connect(ui->refreshPageKey, &QPushButton::clicked, this, [=](bool check) { // refreshPage(); + dumpLog("刷新成功"); }); connect(ui->UpdateCfg_Key, &QPushButton::clicked, this, [=](bool check) { // updatePage(); refreshPage(); + dumpLog("提交成功"); }); /******************************************************************************* @@ -190,7 +293,7 @@ void MainWindow::constructUI() { *******************************************************************************/ connect(ui->storageConfigKey, &QPushButton::clicked, this, [=](bool check) { // DO(m_clstc->storageConfigs()); - ui->informationBrowser->setText("保存配置成功"); + dumpLog("保存配置成功"); }); /******************************************************************************* @@ -198,7 +301,7 @@ void MainWindow::constructUI() { *******************************************************************************/ connect(ui->rebootDeviceKey, &QPushButton::clicked, this, [=](bool check) { // DO(m_clstc->reboot()); - ui->informationBrowser->setText("重启设备成功"); + dumpLog("重启设备成功"); }); /******************************************************************************* @@ -206,7 +309,7 @@ void MainWindow::constructUI() { *******************************************************************************/ connect(ui->factoryResetKey, &QPushButton::clicked, this, [=](bool check) { // DO(m_clstc->factoryReset()); - ui->informationBrowser->setText("恢复出厂设置成功"); + dumpLog("恢复出厂设置成功"); }); /******************************************************************************* @@ -219,7 +322,7 @@ void MainWindow::constructUI() { uint32_t value = 0; DO(m_clstc->reg_read(addr, value, 100)); ui->regReadbakVal->setText(fmt("0x%08X", value)); - ui->informationBrowser->setText(fmt("读取0x%04x成功", addr)); + dumpLog(fmt("读取0x%04x成功", addr)); }); connect(ui->regWriteKey, &QPushButton::clicked, this, [=](bool check) { // @@ -228,18 +331,49 @@ void MainWindow::constructUI() { uint32_t readkbak = 0; DO(m_clstc->reg_write(addr, value, readkbak, 100)); ui->regReadbakVal->setText(fmt("0x%04x", readkbak)); - ui->informationBrowser->setText(fmt("写入0x%08x成功", addr)); + dumpLog(fmt("写入0x%08x成功", addr)); }); connect(ui->InterClk_trigger_Key, &QPushButton::clicked, this, [=](bool check) { // DO(m_clstc->InterClk_trigger()); - ui->informationBrowser->setText(fmt("触发成功")); - refreshPage(); + dumpLog(fmt("触发成功")); }); connect(ui->InterClk_stop_Key, &QPushButton::clicked, this, [=](bool check) { // DO(m_clstc->InterClk_stop()); - ui->informationBrowser->setText(fmt("停止触发成功")); + dumpLog(fmt("停止触发成功")); }); + + /******************************************************************************* + * 外部触发页面初始化 * + *******************************************************************************/ + + ui->TriInX_SrcSelect_Val_1->addItem(QString::fromStdString(ExtTriggerSrcType(ExtTriggerSrcType::DIFF_INPUT).toString())); + ui->TriInX_SrcSelect_Val_1->addItem(QString::fromStdString(ExtTriggerSrcType(ExtTriggerSrcType::OPTOCOUPLER_INPUT).toString())); + ui->TriInX_Mode_Val_1->addItem(QString::fromStdString(SigProcessMode(SigProcessMode::TRIGGER_MODE).toString())); + ui->TriInX_Mode_Val_1->addItem(QString::fromStdString(SigProcessMode(SigProcessMode::TRANSPARENT_MODE).toString())); + ui->TriInX_TriggerModeTriggerEdge_Val_1->addItem(QString::fromStdString(TriggerEdge(TriggerEdge::RISING).toString())); + ui->TriInX_TriggerModeTriggerEdge_Val_1->addItem(QString::fromStdString(TriggerEdge(TriggerEdge::FALLING).toString())); + + ui->TriInX_SrcSelect_Val_2->addItem(QString::fromStdString(ExtTriggerSrcType(ExtTriggerSrcType::DIFF_INPUT).toString())); + ui->TriInX_SrcSelect_Val_2->addItem(QString::fromStdString(ExtTriggerSrcType(ExtTriggerSrcType::OPTOCOUPLER_INPUT).toString())); + ui->TriInX_Mode_Val_2->addItem(QString::fromStdString(SigProcessMode(SigProcessMode::TRIGGER_MODE).toString())); + ui->TriInX_Mode_Val_2->addItem(QString::fromStdString(SigProcessMode(SigProcessMode::TRANSPARENT_MODE).toString())); + ui->TriInX_TriggerModeTriggerEdge_Val_2->addItem(QString::fromStdString(TriggerEdge(TriggerEdge::RISING).toString())); + ui->TriInX_TriggerModeTriggerEdge_Val_2->addItem(QString::fromStdString(TriggerEdge(TriggerEdge::FALLING).toString())); + + ui->TriInX_SrcSelect_Val_3->addItem(QString::fromStdString(ExtTriggerSrcType(ExtTriggerSrcType::DIFF_INPUT).toString())); + ui->TriInX_SrcSelect_Val_3->addItem(QString::fromStdString(ExtTriggerSrcType(ExtTriggerSrcType::OPTOCOUPLER_INPUT).toString())); + ui->TriInX_Mode_Val_3->addItem(QString::fromStdString(SigProcessMode(SigProcessMode::TRIGGER_MODE).toString())); + ui->TriInX_Mode_Val_3->addItem(QString::fromStdString(SigProcessMode(SigProcessMode::TRANSPARENT_MODE).toString())); + ui->TriInX_TriggerModeTriggerEdge_Val_3->addItem(QString::fromStdString(TriggerEdge(TriggerEdge::RISING).toString())); + ui->TriInX_TriggerModeTriggerEdge_Val_3->addItem(QString::fromStdString(TriggerEdge(TriggerEdge::FALLING).toString())); + + ui->TriInX_SrcSelect_Val_4->addItem(QString::fromStdString(ExtTriggerSrcType(ExtTriggerSrcType::DIFF_INPUT).toString())); + ui->TriInX_SrcSelect_Val_4->addItem(QString::fromStdString(ExtTriggerSrcType(ExtTriggerSrcType::OPTOCOUPLER_INPUT).toString())); + ui->TriInX_Mode_Val_4->addItem(QString::fromStdString(SigProcessMode(SigProcessMode::TRIGGER_MODE).toString())); + ui->TriInX_Mode_Val_4->addItem(QString::fromStdString(SigProcessMode(SigProcessMode::TRANSPARENT_MODE).toString())); + ui->TriInX_TriggerModeTriggerEdge_Val_4->addItem(QString::fromStdString(TriggerEdge(TriggerEdge::RISING).toString())); + ui->TriInX_TriggerModeTriggerEdge_Val_4->addItem(QString::fromStdString(TriggerEdge(TriggerEdge::FALLING).toString())); } MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { @@ -261,26 +395,56 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWi connect(this, SIGNAL(doinui_signal(QFunction)), this, SLOT(doinui_slot(QFunction))); constructUI(); - m_clstc->regRawDataListener([this](uart_message_type_t type, uint8_t *data, size_t len) { - QString text; - if (type == kuart_raw_tx) { - text.append("TX: "); - for (size_t i = 0; i < len; i++) { - text.append(fmt("%02X ", data[i])); - } - } else if (type == kuart_raw_rx) { - text.append("RX: "); - for (size_t i = 0; i < len; i++) { - text.append(fmt("%02X ", data[i])); - } + // 创建定时器 + timer = new QTimer(this); + connect(timer, &QTimer::timeout, this, [this]() { refreshReadonlyPage(); }); + timer->setInterval(1000); // 每隔一秒触发一次 + timer->start(); + + // m_clstc->regRawDataListener([this](uart_message_type_t type, uint8_t *data, size_t len) { + // QString text; + // if (type == kuart_raw_tx) { + // text.append("TX: "); + // for (size_t i = 0; i < len; i++) { + // text.append(fmt("%02X ", data[i])); + // } + // } else if (type == kuart_raw_rx) { + // text.append("RX: "); + // for (size_t i = 0; i < len; i++) { + // text.append(fmt("%02X ", data[i])); + // } + // } + // emit doinui_signal(QFunction([this, text]() { + // if (ui->instructionPreview->document()->lineCount() > 100) { + // ui->instructionPreview->document()->clear(); + // } + // ui->instructionPreview->append(text); + // })); + // }); +} + +void MainWindow::dumpLog(const char *fmt, ...) { + va_list args; + va_start(args, fmt); + char buf[1024] = {0}; + vsnprintf(buf, sizeof(buf), fmt, args); + qDebug() << buf; + va_end(args); + QString text(buf); + + QString info; + + // zos_get_ticket + info.append(QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss.zzz")); + info.append(" [Info]:"); + info.append(text); + + emit doinui_signal(QFunction([this, info]() { + if (ui->instructionPreview->document()->lineCount() > 100) { + ui->instructionPreview->document()->clear(); } - emit doinui_signal(QFunction([this, text]() { - if (ui->instructionPreview->document()->lineCount() > 20) { - ui->instructionPreview->clear(); - } - ui->instructionPreview->append(text); - })); - }); + ui->instructionPreview->append(info); + })); } MainWindow::~MainWindow() { delete ui; } \ No newline at end of file diff --git a/mainwindow.h b/mainwindow.h index 415233e..4b54db7 100644 --- a/mainwindow.h +++ b/mainwindow.h @@ -74,6 +74,7 @@ class MainWindow : public QMainWindow { MainWindow(QWidget *parent = nullptr); ~MainWindow(); void refreshPage(); + void refreshReadonlyPage(); void updatePage(); private slots: @@ -84,8 +85,14 @@ class MainWindow : public QMainWindow { signals: void doinui_signal(QFunction); + + private: static void log_output(QtMsgType type, const QMessageLogContext &context, const QString &msg); void constructUI(); + void dumpLog(const char *fmt, ...); }; #endif // MAINWINDOW_H + + + diff --git a/mainwindow.ui b/mainwindow.ui index 36697e5..01d522f 100644 --- a/mainwindow.ui +++ b/mainwindow.ui @@ -6,8 +6,8 @@ 0 0 - 1055 - 768 + 1244 + 790 @@ -435,7 +435,7 @@ - 1 + 0 true @@ -444,6 +444,1466 @@ 外部触发源配置 + + + + + + 400 + 16777215 + + + + 外部触发3 + + + + + + + 0 + 120 + + + + + 16777215 + 120 + + + + TRIGGER_MODE配置 + + + + + + + 0 + 25 + + + + + + + + + 0 + 25 + + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 16777215 + 25 + + + + 倍频因子 + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 16777215 + 25 + + + + 触发边沿 + + + + + + + + 0 + 25 + + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 16777215 + 25 + + + + 分频因子 + + + + + + + + + + + 0 + 25 + + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 16777215 + 25 + + + + 输入频率探测(HZ) + + + + + + + + 0 + 25 + + + + + + + + + 0 + 25 + + + + + + + + Qt::Horizontal + + + + + + + + 0 + 25 + + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 16777215 + 25 + + + + 模式 + + + + + + + + 0 + 25 + + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 16777215 + 25 + + + + 输出频率探测(HZ) + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 16777215 + 25 + + + + 滤波系数(x10ns) + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 16777215 + 25 + + + + 频率探测允许误差(x10ns) + + + + + + + + 0 + 25 + + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 16777215 + 25 + + + + 触发源选择 + + + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + 400 + 16777215 + + + + 外部触发4 + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 16777215 + 25 + + + + 频率探测允许误差(x10ns) + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 16777215 + 25 + + + + 输入频率探测(HZ) + + + + + + + + 0 + 25 + + + + + + + + + 0 + 25 + + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 16777215 + 25 + + + + 触发源选择 + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 16777215 + 25 + + + + 输出频率探测(HZ) + + + + + + + + 0 + 25 + + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 16777215 + 25 + + + + 滤波系数(x10ns) + + + + + + + + 0 + 25 + + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 16777215 + 25 + + + + 模式 + + + + + + + + 0 + 25 + + + + + + + + + 0 + 120 + + + + + 16777215 + 120 + + + + TRIGGER_MODE配置 + + + + + + + 0 + 25 + + + + + + + + + 0 + 25 + + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 16777215 + 25 + + + + 倍频因子 + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 16777215 + 25 + + + + 触发边沿 + + + + + + + + 0 + 25 + + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 16777215 + 25 + + + + 分频因子 + + + + + + + + + + Qt::Horizontal + + + + + + + + 0 + 25 + + + + + + + + + + + + 400 + 16777215 + + + + 外部触发2 + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 16777215 + 25 + + + + 频率探测允许误差(x10ns) + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 16777215 + 25 + + + + 输入频率探测(HZ) + + + + + + + + 0 + 25 + + + + + + + + + 0 + 25 + + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 16777215 + 25 + + + + 触发源选择 + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 16777215 + 25 + + + + 输出频率探测(HZ) + + + + + + + + 0 + 25 + + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 16777215 + 25 + + + + 滤波系数(x10ns) + + + + + + + + 0 + 25 + + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 16777215 + 25 + + + + 模式 + + + + + + + + 0 + 25 + + + + + + + + + 0 + 120 + + + + + 16777215 + 120 + + + + TRIGGER_MODE配置 + + + + + + + 0 + 25 + + + + + + + + + 0 + 25 + + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 16777215 + 25 + + + + 倍频因子 + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 16777215 + 25 + + + + 触发边沿 + + + + + + + + 0 + 25 + + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 16777215 + 25 + + + + 分频因子 + + + + + + + + + + Qt::Horizontal + + + + + + + + 0 + 25 + + + + + + + + + + + + 400 + 16777215 + + + + 外部触发1 + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 16777215 + 25 + + + + 频率探测允许误差(x10ns) + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 16777215 + 25 + + + + 输入频率探测(HZ) + + + + + + + + 0 + 25 + + + + + + + + + 0 + 25 + + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 16777215 + 25 + + + + 触发源选择 + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 16777215 + 25 + + + + 输出频率探测(HZ) + + + + + + + + 0 + 25 + + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 16777215 + 25 + + + + 滤波系数(x10ns) + + + + + + + + 0 + 25 + + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 16777215 + 25 + + + + 模式 + + + + + + + + 0 + 25 + + + + + + + + + 0 + 120 + + + + + 16777215 + 120 + + + + TRIGGER_MODE配置 + + + + + + + 0 + 25 + + + + + + + + + 0 + 25 + + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 16777215 + 25 + + + + 倍频因子 + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 16777215 + 25 + + + + 触发边沿 + + + + + + + + 0 + 25 + + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 16777215 + 25 + + + + 分频因子 + + + + + + + + + + Qt::Horizontal + + + + + + + + 0 + 25 + + + + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + @@ -668,7 +2128,7 @@ 0 0 - 1055 + 1244 23 diff --git a/src/camera_light_src_timing_controller/qt_serial_datachannel.cpp b/src/camera_light_src_timing_controller/qt_serial_datachannel.cpp index 31f52d0..9e7549b 100644 --- a/src/camera_light_src_timing_controller/qt_serial_datachannel.cpp +++ b/src/camera_light_src_timing_controller/qt_serial_datachannel.cpp @@ -22,7 +22,7 @@ void QTDataChannel::init() { uint8_t rx[1024] = {0}; int rx_cnt = com_receive(rx, 1024); if (rx_cnt != 0) { - ZLOGI(TAG, "rx %d bytes", rx_cnt); + // ZLOGI(TAG, "rx %d bytes", rx_cnt); if (m_rxcb) m_rxcb(rx, rx_cnt); } } @@ -47,7 +47,7 @@ bool QTDataChannel::open() { DCB p; memset(&p, 0, sizeof(p)); p.DCBlength = sizeof(p); - p.BaudRate = m_baudRate; // + p.BaudRate = m_baudRate; // 波特率 switch (m_dataBits) { case QSerialPort::Data5: @@ -74,41 +74,41 @@ bool QTDataChannel::open() { // QSerialPort::MarkParity = 5, // QSerialPort::UnknownParity = -1 - switch (m_parity) // Уλ + switch (m_parity) // 校验位 { case QSerialPort::NoParity: - p.Parity = NOPARITY; // У + p.Parity = NOPARITY; // 无校验 break; case QSerialPort::EvenParity: - p.Parity = EVENPARITY; // У + p.Parity = EVENPARITY; // 奇校验 break; case QSerialPort::OddParity: - p.Parity = ODDPARITY; // żУ + p.Parity = ODDPARITY; // 偶校验 break; case QSerialPort::MarkParity: - p.Parity = MARKPARITY; // У + p.Parity = MARKPARITY; // 标记校验 break; default: - p.Parity = NOPARITY; // У + p.Parity = NOPARITY; // 无校验 } - switch (m_stopBits) // ֹͣλ + switch (m_stopBits) // 停止位 { case QSerialPort::OneStop: - p.StopBits = ONESTOPBIT; // 1λֹͣλ + p.StopBits = ONESTOPBIT; // 1位停止位 break; case QSerialPort::OneAndHalfStop: - p.StopBits = TWOSTOPBITS; // 2λֹͣλ + p.StopBits = TWOSTOPBITS; // 2位停止位 break; case QSerialPort::TwoStop: - p.StopBits = ONE5STOPBITS; // 1.5λֹͣλ + p.StopBits = ONE5STOPBITS; // 1.5位停止位 break; default: - p.StopBits = ONESTOPBIT; // У + p.StopBits = ONESTOPBIT; // 无校验 } if (!SetCommState(m_CommHandler, &p)) { - // òʧ + // 设置参数失败 CloseHandle(m_CommHandler); return false; } @@ -124,11 +124,11 @@ void QTDataChannel::close() { bool QTDataChannel::isOpen() { return m_isOpen; } bool QTDataChannel::send(const uint8_t *data, size_t len) { DWORD dwBytesWrite = len; - BOOL bWriteStat = WriteFile(m_CommHandler, // ھ - (char *)data, // ׵ַ - dwBytesWrite, // Ҫ͵ֽ - &dwBytesWrite, // DWORD*շسɹ͵ֽ - NULL); // NULLΪͬͣOVERLAPPED*Ϊ첽 + BOOL bWriteStat = WriteFile(m_CommHandler, // 串口句柄 + (char *)data, // 数据首地址 + dwBytesWrite, // 要发送的数据字节数 + &dwBytesWrite, // DWORD*,用来接收返回成功发送的数据字节数 + NULL); // NULL为同步发送,OVERLAPPED*为异步发送 return dwBytesWrite; } void QTDataChannel::regRxListener(function cb) { m_rxcb = cb; } @@ -136,18 +136,18 @@ void QTDataChannel::regRxListener(function cb) int QTDataChannel::com_receive(uint8_t *rxbuf, int rxbufsize) { COMMTIMEOUTS TimeOuts; GetCommTimeouts(m_CommHandler, &TimeOuts); - TimeOuts.ReadIntervalTimeout = 0; // ʱ - TimeOuts.ReadTotalTimeoutMultiplier = 0; // ʱϵ - TimeOuts.ReadTotalTimeoutConstant = 1; // ʱ䳣 + TimeOuts.ReadIntervalTimeout = 0; // 读间隔超时 + TimeOuts.ReadTotalTimeoutMultiplier = 0; // 读时间系数 + TimeOuts.ReadTotalTimeoutConstant = 1; // 读时间常量 SetCommTimeouts(m_CommHandler, &TimeOuts); // PurgeComm(m_CommHandler, PURGE_RXCLEAR); - DWORD wCount = rxbufsize; // ɹȡֽ - BOOL bReadStat = ReadFile(m_CommHandler, // ھ - rxbuf, // ׵ַ - wCount, // Ҫȡֽ - &wCount, // DWORD*,շسɹȡֽ + DWORD wCount = rxbufsize; // 成功读取的数据字节数 + BOOL bReadStat = ReadFile(m_CommHandler, // 串口句柄 + rxbuf, // 数据首地址 + wCount, // 要读取的数据最大字节数 + &wCount, // DWORD*,用来接收返回成功读取的数据字节数 NULL); return wCount; }