diff --git a/CMakeLists.txt b/CMakeLists.txt index 40aadf5..19a3ae3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -23,6 +23,7 @@ include_directories(libzqt) add_compile_options(-Wall ) + file(GLOB_RECURSE APPSRC # src/*.cpp # src/*.c # diff --git a/src/app/syncbox16ch/syncbox16ch.cpp b/src/app/syncbox16ch/syncbox16ch.cpp index 08e6324..3639a7d 100644 --- a/src/app/syncbox16ch/syncbox16ch.cpp +++ b/src/app/syncbox16ch/syncbox16ch.cpp @@ -1,12 +1,12 @@ #include "syncbox16ch.h" +#include "qtutils/qtutils.hpp" +#include "syncbox16ch_sdk.hpp" #include "ui_syncbox16ch.h" #include "zqui/zqui/zqui.hpp" -typedef enum { - koutput_mode_continue_mode, - koutput_mode_pluse_mode, -} OutputMode_t; +using namespace iflytop; +using namespace syncbox16chsdk; typedef enum { // 自定义 @@ -15,36 +15,6 @@ typedef enum { koutput_pluse_type_square_wave, } OutputPluseType_t; -static QString outputMode2Str(OutputMode_t mode) { - if (mode == koutput_mode_continue_mode) { - return "连续模式"; - } else if (mode == koutput_mode_pluse_mode) { - return "脉冲模式"; - } else { - return "未知模式"; - } -} - -static OutputMode_t outputModeStr2Enum(QString str) { - if (str == "连续模式") { - return koutput_mode_continue_mode; - } else if (str == "脉冲模式") { - return koutput_mode_pluse_mode; - } else { - return koutput_mode_continue_mode; - } -} - -static QString outputPluseType2Str(OutputPluseType_t type) { - if (type == koutput_pluse_type_custom) { - return "自定义"; - } else if (type == koutput_pluse_type_square_wave) { - return "方波"; - } else { - return "未知"; - } -} - static OutputPluseType_t outputPluseTypeStr2Enum(QString str) { if (str == "自定义") { return koutput_pluse_type_custom; @@ -55,14 +25,23 @@ static OutputPluseType_t outputPluseTypeStr2Enum(QString str) { } } +static QString outputPluseType2Str(OutputPluseType_t type) { + switch (type) { + case koutput_pluse_type_custom: + return "自定义"; + case koutput_pluse_type_square_wave: + return "方波"; + default: + return "自定义"; + } +} + SyncBox16CH::SyncBox16CH(QWidget *parent) : QWidget(parent), ui(new Ui::SyncBox16CH) { ui->setupUi(this); - { // // ui->StateGB->hide(); - ui->OutputModeVal->addItem(outputMode2Str(koutput_mode_continue_mode)); - ui->OutputModeVal->addItem(outputMode2Str(koutput_mode_pluse_mode)); + ui->OutputModeVal->addItems(QStringListValueOf(WorkModeStrList())); ui->OutputPluseTypeVal->addItem(outputPluseType2Str(koutput_pluse_type_custom)); ui->OutputPluseTypeVal->addItem(outputPluseType2Str(koutput_pluse_type_square_wave)); @@ -71,6 +50,8 @@ SyncBox16CH::SyncBox16CH(QWidget *parent) : QWidget(parent), ui(new Ui::SyncBox1 ui->OutputPluseNumVal->setText("1"); ui->OutputPluseFreqVal->setText("1000"); } + + ZQUI::ins()->mainW()->setVersionInfo(1, "APP_VERSION", "1.0.0"); } SyncBox16CH::~SyncBox16CH() { delete ui; } @@ -78,29 +59,48 @@ SyncBox16CH::~SyncBox16CH() { delete ui; } void SyncBox16CH::on_OutputModeVal_currentIndexChanged(const QString &arg1) { onModeChange(); } void SyncBox16CH::on_OutputPluseTypeVal_currentIndexChanged(const QString &arg1) { onModeChange(); } void SyncBox16CH::onModeChange() { - OutputMode_t outputMode = outputModeStr2Enum(ui->OutputModeVal->currentText()); + WorkMode_t outputMode = syncbox16chsdk::WorkModeValueOf(ui->OutputModeVal->currentText().toStdString().c_str()); OutputPluseType_t outputPluseType = outputPluseTypeStr2Enum(ui->OutputPluseTypeVal->currentText()); - if (outputMode == koutput_mode_continue_mode) { + // kWorkMode_extCpyMode, + // kWorkMode_extTriMode, + // kWorkMode_manualTriMode, + + if (outputMode == kWorkMode_extCpyMode) { + // 脉冲数量 ui->OutputPluseNumVal->hide(); ui->OutputPluseNumTag->hide(); - } else if (outputMode == koutput_mode_pluse_mode) { - ui->OutputPluseNumVal->show(); - ui->OutputPluseNumTag->show(); - } - - if (outputPluseType == koutput_pluse_type_custom) { - ui->OutputPluseWidthVal->show(); - ui->OutputPluseWidthTag->show(); - } else if (outputPluseType == koutput_pluse_type_square_wave) { + // 脉冲宽度 ui->OutputPluseWidthVal->hide(); ui->OutputPluseWidthTag->hide(); + // 脉冲类型 + ui->OutputPluseTypeVal->hide(); + ui->OutputPluseTypeTag->hide(); + // 脉冲频率 + ui->OutputPluseFreqTag->hide(); + ui->OutputPluseFreqVal->hide(); + } else if (outputMode == kWorkMode_manualTriMode || outputMode == kWorkMode_extTriMode) { + // 脉冲数量 + ui->OutputPluseNumVal->show(); + ui->OutputPluseNumTag->show(); + // 脉冲宽度 + if (outputPluseType == koutput_pluse_type_custom) { + ui->OutputPluseWidthVal->show(); + ui->OutputPluseWidthTag->show(); + } else if (outputPluseType == koutput_pluse_type_square_wave) { + ui->OutputPluseWidthVal->hide(); + ui->OutputPluseWidthTag->hide(); + } + // 脉冲类型 + ui->OutputPluseTypeVal->show(); + ui->OutputPluseTypeTag->show(); + // 脉冲频率 + ui->OutputPluseFreqTag->show(); + ui->OutputPluseFreqVal->show(); } } void SyncBox16CH::on_SendButton_clicked() { - ICLEAR(); - ISHOW("on send button"); - - + ICLEAR(); + ISHOW("on send button"); } diff --git a/src/app/syncbox16ch/syncbox16ch.ui b/src/app/syncbox16ch/syncbox16ch.ui index 4f58f89..46707b6 100644 --- a/src/app/syncbox16ch/syncbox16ch.ui +++ b/src/app/syncbox16ch/syncbox16ch.ui @@ -223,7 +223,7 @@ - 发送 + 配置/触发 diff --git a/src/app/syncbox16ch/syncbox16ch_sdk.cpp b/src/app/syncbox16ch/syncbox16ch_sdk.cpp index 043b47e..af9c58d 100644 --- a/src/app/syncbox16ch/syncbox16ch_sdk.cpp +++ b/src/app/syncbox16ch/syncbox16ch_sdk.cpp @@ -1,6 +1,31 @@ #include "syncbox16ch_sdk.hpp" -using namespace iflytop; -void SyncBox16ChSDK::initialize() { - -} +#include "protocol/zfpga_commander/zfpga_commander.hpp" +#include "qtutils/enummap.hpp" + +/*********************************************************************************************************************** + * ENUMMAP * + ***********************************************************************************************************************/ +namespace iflytop { +namespace syncbox16chsdk { + +enummap_iterm_t output_mode_enummap[] = { + {kWorkMode_extCpyMode, "信号拷贝模式"}, + {kWorkMode_extTriMode, "外部触发模式"}, + {kWorkMode_manualTriMode, "手动触发模式"}, + {-1, "null", true}, +}; + +const char* WorkModeToStr(uint32_t mode) { return EnumMapValue2Str(output_mode_enummap, mode); } +WorkMode_t WorkModeValueOf(const char* str) { return (WorkMode_t)EnumMapStr2Value(output_mode_enummap, str); } +list WorkModeStrList() { return EnumMapStrList(output_mode_enummap); } + +} // namespace syncbox16chsdk +} // namespace iflytop + +/*********************************************************************************************************************** + * SyncBox16ChSDK * + ***********************************************************************************************************************/ +using namespace iflytop; +using namespace syncbox16chsdk; +void SyncBox16ChSDK::initialize() { ZFPGACommander::ins()->initialize(); } diff --git a/src/app/syncbox16ch/syncbox16ch_sdk.hpp b/src/app/syncbox16ch/syncbox16ch_sdk.hpp index 06e9e55..88001bb 100644 --- a/src/app/syncbox16ch/syncbox16ch_sdk.hpp +++ b/src/app/syncbox16ch/syncbox16ch_sdk.hpp @@ -17,18 +17,37 @@ #include "zfpga_basic_protocol/zaf_regs.hpp" namespace iflytop { - +namespace syncbox16chsdk { using namespace std; -class SyncBox16ChSDK { +typedef enum { + kWorkMode_extCpyMode, + kWorkMode_extTriMode, + kWorkMode_manualTriMode, +} WorkMode_t; + +typedef struct { +} reg_t; +const char* WorkModeToStr(uint32_t mode); +WorkMode_t WorkModeValueOf(const char* str); +list WorkModeStrList(); + +class SyncBox16ChSDK { public: - static SyncBox16ChSDK *ins() { + static SyncBox16ChSDK* ins() { static SyncBox16ChSDK cmder; return &cmder; } + public: void initialize(); -}; + void setPluseWidth(uint32_t widthus); + void setPluseFreq(uint32_t freq); + void setPluseGeneratorMode(); + + public: +}; +} // namespace syncbox16chsdk } // namespace iflytop \ No newline at end of file diff --git a/src/qtutils/enummap.cpp b/src/qtutils/enummap.cpp new file mode 100644 index 0000000..98bcfd4 --- /dev/null +++ b/src/qtutils/enummap.cpp @@ -0,0 +1,32 @@ +#include "enummap.hpp" + +#include +using namespace std; + +namespace iflytop { +const char* EnumMapValue2Str(const enummap_iterm_t* map, int val) { + for (int i = 0; !map[i].end; i++) { + if (map[i].val == val) { + return map[i].chname; + } + } + return nullptr; +} +int EnumMapStr2Value(const enummap_iterm_t* map, const char* str) { + for (int i = 0; !map[i].end; i++) { + if (strcmp(map[i].chname, str) == 0) { + return map[i].val; + } + } + return -1; +} + +list EnumMapStrList(const enummap_iterm_t* map) { + list strlist; + for (int i = 0; !map[i].end; i++) { + if (map[i].chname) strlist.push_back(map[i].chname); + } + return strlist; +} + +} // namespace iflytop \ No newline at end of file diff --git a/src/qtutils/enummap.hpp b/src/qtutils/enummap.hpp new file mode 100644 index 0000000..e31006b --- /dev/null +++ b/src/qtutils/enummap.hpp @@ -0,0 +1,29 @@ +#pragma once +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace iflytop { +using namespace std; +typedef struct { + int val; + const char* chname; + bool end; +} enummap_iterm_t; + +const char* EnumMapValue2Str(const enummap_iterm_t* map, int val); +int EnumMapStr2Value(const enummap_iterm_t* map, const char* str); +list EnumMapStrList(const enummap_iterm_t* map); + + + +} // namespace iflytop \ No newline at end of file diff --git a/src/qtutils/qtutils.cpp b/src/qtutils/qtutils.cpp new file mode 100644 index 0000000..c7f1acd --- /dev/null +++ b/src/qtutils/qtutils.cpp @@ -0,0 +1,12 @@ +#include "qtutils.hpp" +using namespace iflytop; + +namespace iflytop { +QStringList QStringListValueOf(list strlist) { + QStringList qstrlist; + for (auto str : strlist) { + qstrlist.append(QString::fromStdString(str)); + } + return qstrlist; +} +} // namespace iflytop diff --git a/src/qtutils/qtutils.hpp b/src/qtutils/qtutils.hpp new file mode 100644 index 0000000..66a4979 --- /dev/null +++ b/src/qtutils/qtutils.hpp @@ -0,0 +1,29 @@ +#pragma once +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +// +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace iflytop { +using namespace std; +QStringList QStringListValueOf(list strlist); + +} // namespace iflytop \ No newline at end of file diff --git a/src/zqui/zqui/mainwindow.cpp b/src/zqui/zqui/mainwindow.cpp index 08881f0..d66202c 100644 --- a/src/zqui/zqui/mainwindow.cpp +++ b/src/zqui/zqui/mainwindow.cpp @@ -73,6 +73,10 @@ void MainWindow::buildUI() { void MainWindow::on_serialPortCB_customContextMenuRequested(const QPoint &pos) {} void MainWindow::setVersionInfo(int pos, QString versionName, QString version) { + ui->version_pos1->setDisabled(true); + ui->version_pos2->setDisabled(true); + ui->version_pos3->setDisabled(true); + if (pos == 1) { ui->version_label_po1->setText(versionName); ui->version_pos1->setText(version);