diff --git a/.gitmodules b/.gitmodules deleted file mode 100644 index 321e3f3..0000000 --- a/.gitmodules +++ /dev/null @@ -1,6 +0,0 @@ -[submodule "libxsync"] - path = libxsync - url = zwsd@192.168.1.3:p_lusterinc/libxsync.git -[submodule "zaf_protocol"] - path = zaf_protocol - url = zwsd@192.168.1.3:p_camera_light_source_timing_controller/zaf_protocol.git diff --git a/CMakeLists.txt b/CMakeLists.txt index 831a443..dcb77d4 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,6 +1,6 @@ cmake_minimum_required(VERSION 3.5) -project(CameraLightingController VERSION 0.1 LANGUAGES CXX) +project(electrocardiograph_upper VERSION 0.1 LANGUAGES CXX) set(CMAKE_INCLUDE_CURRENT_DIR ON) @@ -30,33 +30,22 @@ set(PROJECT_SOURCES mainwindow.cpp mainwindow.h mainwindow.ui - - src/camera_light_src_timing_controller/clst_controler.cpp - src/camera_light_src_timing_controller/qt_serial_datachannel.cpp - src/camera_light_src_timing_controller/clst_controler_sig_type.cpp - - zaf_protocol/zaf_ecode.c - zaf_protocol/zaf_protocol.c - # libxsync/src/xsync_v2.cpp - # src/xsync_udp_factory_impl.cpp - # libxsync/src/xsync_v2_sig_type.cpp - # libxsync/src/xsync_utils.cpp ) -add_executable(CameraLightingController WIN32 +add_executable(electrocardiograph_upper WIN32 ${PROJECT_SOURCES} ) -target_link_options(CameraLightingController PRIVATE -static -static-libgcc -static-libstdc++) +target_link_options(electrocardiograph_upper PRIVATE -static -static-libgcc -static-libstdc++) -target_link_libraries(CameraLightingController PRIVATE Qt${QT_VERSION_MAJOR}::Widgets Qt${QT_VERSION_MAJOR}::SerialPort Qt${QT_VERSION_MAJOR}::Charts Qt${QT_VERSION_MAJOR}::Concurrent wsock32) +target_link_libraries(electrocardiograph_upper PRIVATE Qt${QT_VERSION_MAJOR}::Widgets Qt${QT_VERSION_MAJOR}::SerialPort Qt${QT_VERSION_MAJOR}::Charts Qt${QT_VERSION_MAJOR}::Concurrent wsock32) -set_target_properties(CameraLightingController PROPERTIES +set_target_properties(electrocardiograph_upper PROPERTIES MACOSX_BUNDLE_GUI_IDENTIFIER my.example.com MACOSX_BUNDLE_BUNDLE_VERSION ${PROJECT_VERSION} MACOSX_BUNDLE_SHORT_VERSION_STRING ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR} ) if(QT_VERSION_MAJOR EQUAL 6) - qt_finalize_executable(CameraLightingController) + qt_finalize_executable(electrocardiograph_upper) endif() diff --git a/CMakeLists.txt.user b/CMakeLists.txt.user index 8bd1465..9784cd6 100644 --- a/CMakeLists.txt.user +++ b/CMakeLists.txt.user @@ -1,6 +1,6 @@ - + EnvironmentId @@ -91,10 +91,10 @@ ProjectExplorer.Project.Target.0 Desktop - Desktop Qt 5.12.12 MinGW 64-bit - Desktop Qt 5.12.12 MinGW 64-bit - qt.qt5.51212.win64_mingw73_kit - 2 + 桌面 + 桌面 + {279fbe38-08ec-48da-8e68-edb9b8eaccb2} + 0 0 0 @@ -106,8 +106,7 @@ -DCMAKE_PREFIX_PATH:STRING=%{Qt:QT_INSTALL_PREFIX} -DCMAKE_C_COMPILER:STRING=%{Compiler:Executable:C} -DCMAKE_CXX_COMPILER:STRING=%{Compiler:Executable:Cxx} - D:/workspace/p_camera_light_source_timing_controller/camera_light_src_timing_controller_pc - D:/workspace/p_camera_light_source_timing_controller/build-camera_light_src_timing_controller_pc-Desktop_Qt_5_12_12_MinGW_64_bit-Debug + D:\workspace\nordic_wp\build-electrocardiograph_upper-unknown_279fbe-Debug @@ -144,22 +143,21 @@ CMakeProjectManager.CMakeBuildConfiguration - MinSizeRel + Release -GMinGW Makefiles --DCMAKE_BUILD_TYPE:STRING=MinSizeRel +-DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_PROJECT_INCLUDE_BEFORE:PATH=%{IDE:ResourcePath}/package-manager/auto-setup.cmake -DQT_QMAKE_EXECUTABLE:STRING=%{Qt:qmakeExecutable} -DCMAKE_PREFIX_PATH:STRING=%{Qt:QT_INSTALL_PREFIX} -DCMAKE_C_COMPILER:STRING=%{Compiler:Executable:C} -DCMAKE_CXX_COMPILER:STRING=%{Compiler:Executable:Cxx} - D:\workspace\p_camera_light_source_timing_controller\build-camera_light_src_timing_controller_pc-Desktop_Qt_5_12_12_MinGW_64_bit-Minimum-Size-Release + D:\workspace\nordic_wp\build-electrocardiograph_upper-unknown_279fbe-Release all true - Build CMakeProjectManager.MakeStep 1 @@ -173,7 +171,6 @@ clean true - Build CMakeProjectManager.MakeStep 1 @@ -185,26 +182,25 @@ false - Minimum Size Release + Release CMakeProjectManager.CMakeBuildConfiguration - Release + RelWithDebInfo -GMinGW Makefiles --DCMAKE_BUILD_TYPE:STRING=Release +-DCMAKE_BUILD_TYPE:STRING=RelWithDebInfo -DCMAKE_PROJECT_INCLUDE_BEFORE:PATH=%{IDE:ResourcePath}/package-manager/auto-setup.cmake -DQT_QMAKE_EXECUTABLE:STRING=%{Qt:qmakeExecutable} -DCMAKE_PREFIX_PATH:STRING=%{Qt:QT_INSTALL_PREFIX} -DCMAKE_C_COMPILER:STRING=%{Compiler:Executable:C} -DCMAKE_CXX_COMPILER:STRING=%{Compiler:Executable:Cxx} - D:\workspace\p_camera_light_source_timing_controller\build-camera_light_src_timing_controller_pc-Desktop_Qt_5_12_12_MinGW_64_bit-Release + D:\workspace\nordic_wp\build-electrocardiograph_upper-unknown_279fbe-RelWithDebInfo all true - Build CMakeProjectManager.MakeStep 1 @@ -218,7 +214,6 @@ clean true - Build CMakeProjectManager.MakeStep 1 @@ -230,10 +225,53 @@ false - Release + Release with Debug Information + CMakeProjectManager.CMakeBuildConfiguration + + + MinSizeRel + -GMinGW Makefiles +-DCMAKE_BUILD_TYPE:STRING=MinSizeRel +-DCMAKE_PROJECT_INCLUDE_BEFORE:PATH=%{IDE:ResourcePath}/package-manager/auto-setup.cmake +-DQT_QMAKE_EXECUTABLE:STRING=%{Qt:qmakeExecutable} +-DCMAKE_PREFIX_PATH:STRING=%{Qt:QT_INSTALL_PREFIX} +-DCMAKE_C_COMPILER:STRING=%{Compiler:Executable:C} +-DCMAKE_CXX_COMPILER:STRING=%{Compiler:Executable:Cxx} + D:\workspace\nordic_wp\build-electrocardiograph_upper-unknown_279fbe-MinSizeRel + + + + all + + true + CMakeProjectManager.MakeStep + + 1 + Build + Build + ProjectExplorer.BuildSteps.Build + + + + + clean + + true + CMakeProjectManager.MakeStep + + 1 + Clean + Clean + ProjectExplorer.BuildSteps.Clean + + 2 + false + + + Minimum Size Release CMakeProjectManager.CMakeBuildConfiguration - 3 + 4 0 @@ -254,15 +292,12 @@ 2 - CameraLightingController - CMakeProjectManager.CMakeRunConfiguration.CameraLightingController - CameraLightingController + ProjectExplorer.CustomExecutableRunConfiguration + false true - true false true - D:/workspace/p_camera_light_source_timing_controller/build-camera_light_src_timing_controller_pc-Desktop_Qt_5_12_12_MinGW_64_bit-Release 1 diff --git a/libxsync b/libxsync deleted file mode 160000 index 8f83a2b..0000000 --- a/libxsync +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 8f83a2bf5e1f987871e4342f032ae8c080aa4f07 diff --git a/mainwindow.cpp b/mainwindow.cpp index fb87f15..f3e03e0 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -16,14 +16,7 @@ using namespace std; static MainWindow *m_mainWindow; static CLSTControler *m_clstc; -QTimer *timer0; -QTimer *timer1; -QTimer *timer2; -QTimer *timer3; -QTimer *checkConnectTimer0; -static bool m_connected = false; - -ZQThread *m_zqthread; +ZQThread *m_zqthread; #define TAG "MainWindow" static const char *fmt(const char *fmt, ...) { @@ -35,800 +28,11 @@ static const char *fmt(const char *fmt, ...) { return buf; } -static const uint32_t str2int(QString str) { - // 如果0x开头,??16进制转换 - // 如果0b开头,??2进制转换 - // 否则??10进制转换 - // 去除掉str中_ - str.remove("_"); - - if (str.startsWith("0x")) { - return str.toUInt(nullptr, 16); - } else if (str.startsWith("0b")) { - // remove 0b - str.remove(0, 2); - return str.toUInt(nullptr, 2); - } else { - return str.toUInt(nullptr, 10); - } -} -// static QSerialPort G_SerialPort; -// static QThread G_SerialPortThread; -static QTDataChannel G_QTDataChannel; - -static const QString zaferror_to_str(zaf_error_code_t value) { - if (value == kaf_ec_overtime) { - return "通信超时"; - } else if (value == kaf_ec_device_notopen) { - return "设备未打开"; - } else { - return "未知错误"; - } -} - -#define DO_NO_RET(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()); \ - displayInfo(false, 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()); \ - displayInfo(false, zaferror_to_str(ecode)); \ - return ecode; \ - } \ - } - -void MainWindow::log_output(QtMsgType type, const QMessageLogContext &context, const QString &msg) { - // QString text; - // text.append(msg); -} -// void MainWindow::append_log_slot(QString text) { ui->logbrowser->append(text); } +void MainWindow::log_output(QtMsgType type, const QMessageLogContext &context, const QString &msg) {} void MainWindow::doinui_slot(QFunction func) { if (func.get()) func.get()(); } -zaf_error_code_t MainWindow::updatePage() { - { - float Freq; - uint32_t PluseCnt; - uint32_t SeqCtrlPluseCntMax; - - Freq = ui->InterClk_Freq_Text->text().toFloat(); - PluseCnt = ui->InterClk_PluseCnt_Text->text().toUInt(); - SeqCtrlPluseCntMax = ui->InterClk_SeqCtrlPluseCntMax_Text->text().toUInt(); - - DO(m_clstc->InterClk_setFreq(Freq)); - 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; - uint32_t cnt; - // TriInX_setSequentialControlPluseCntMax - -#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(); \ - cnt = ui->TriInX_SequentialControlPluseCntMax_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)); \ - DO(m_clstc->TriInX_setSequentialControlPluseCntMax(index, cnt)); - - UPDATE(1); - UPDATE(2); - UPDATE(3); - UPDATE(4); -#undef UPDATE - } - - { - InternalSig src; - uint32_t width; - uint32_t offset; - float duty; - float freq; - -#define UPDATE(index) \ - src = InternalSig(ui->LightSrcX_TriSrc_##index->currentText().toStdString()); \ - width = ui->LightSrcX_TriggerModePluseWidth_##index->text().toUInt(); \ - offset = ui->LightSrcX_TriggerModeFirstPluseOffset_##index->text().toUInt(); \ - duty = ui->LightSrcX_LightIntensityDuty_##index->text().toFloat(); \ - freq = ui->LightSrcX_LightDriverFreq_##index->text().toFloat(); \ - DO(m_clstc->LightSrcX_setTriSrc(index, src)); \ - DO(m_clstc->LightSrcX_setTriggerModePluseWidth(index, width)); \ - DO(m_clstc->LightSrcX_setTriggerModeFirstPluseOffset(index, offset)); \ - DO(m_clstc->LightSrcX_setLightIntensityDuty(index, duty)); \ - DO(m_clstc->LightSrcX_setLightDriverFreq(index, freq)); - - UPDATE(1); - UPDATE(2); - UPDATE(3); - UPDATE(4); -#undef UPDATE - } - - { - SigProcessMode mode; - uint32_t offset; - uint32_t bindstate1; - uint32_t bindstate2; - uint32_t bindstate3; - uint32_t bindstate4; - InternalSig sig; - uint32_t reversal; - -#define UPDATE(index) \ - mode = SigProcessMode(ui->ShutterX_OutputCtrlMode_##index->currentText().toStdString()); \ - offset = ui->ShutterX_LtEnOffset_##index->text().toUInt(); \ - bindstate1 = ui->ShutterX_LtEnBind_val1_##index->checkState() == Qt::CheckState::Checked; \ - bindstate2 = ui->ShutterX_LtEnBind_val2_##index->checkState() == Qt::CheckState::Checked; \ - bindstate3 = ui->ShutterX_LtEnBind_val3_##index->checkState() == Qt::CheckState::Checked; \ - bindstate4 = ui->ShutterX_LtEnBind_val4_##index->checkState() == Qt::CheckState::Checked; \ - sig = InternalSig(ui->ShutterX_InSigSelect_##index->currentText().toStdString()); \ - reversal = ui->ShutterX_OutPolarityReversal_##index->checkState() == Qt::CheckState::Checked; \ - DO(m_clstc->ShutterX_setOutputCtrlMode(index, mode)); \ - DO(m_clstc->ShutterX_setLtEnOffset(index, offset)); \ - DO(m_clstc->ShutterX_setLtEnBind(index, 1, bindstate1)); \ - DO(m_clstc->ShutterX_setLtEnBind(index, 2, bindstate2)); \ - DO(m_clstc->ShutterX_setLtEnBind(index, 3, bindstate3)); \ - DO(m_clstc->ShutterX_setLtEnBind(index, 4, bindstate4)); \ - DO(m_clstc->ShutterX_setInSigSelect(index, sig)); \ - DO(m_clstc->ShutterX_setOutPolarityReversal(index, reversal)); - - UPDATE(1); - UPDATE(2); - UPDATE(3); - UPDATE(4); -#undef UPDATE - } - return kaf_ec_success; - -} - -void MainWindow::refreshReadonlyPage0() { - zaf_error_code_t ecode; - - if (!G_QTDataChannel.isOpen()) { - return; - } - - { - float TriOutSignalFreq; - DO_NO_RET(m_clstc->InterClk_readTriOutSignalFreq(TriOutSignalFreq)); - emit doinui_signal(QFunction([this, TriOutSignalFreq]() { // - ui->InterClk_TriOutSignalFreq_Text->setText(QString::number(TriOutSignalFreq, 'f', 2)); - })); - } -} -void MainWindow::refreshReadonlyPage1() { - if (!G_QTDataChannel.isOpen()) { - return; - } - - { - float infreq; - float outfreq; - -#define UPDATE(index) \ - DO_NO_RET(m_clstc->TriInX_readInSignalFreq(index, infreq)); \ - DO_NO_RET(m_clstc->TriInX_readOutSignalFreq(index, outfreq)); \ - { \ - emit doinui_signal(QFunction([this, infreq, 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::refreshReadonlyPage2() { - if (!G_QTDataChannel.isOpen()) { - return; - } - - // 刷新光源时序控制页面 - { - float infreq; - float outfreq; - uint32_t state; - -#define UPDATE(index) \ - DO_NO_RET(m_clstc->LightSrcX_readInSigFreqDetect(index, infreq)); \ - DO_NO_RET(m_clstc->LightSrcX_readOutSigFreqDetect(index, outfreq)); \ - DO_NO_RET(m_clstc->LightSrcX_readLightSrcErrorState(index, state)); \ - { \ - emit doinui_signal(QFunction([this, infreq, outfreq, state]() { \ - ui->LightSrcX_InSigFreqDetect_##index->setText(QString::number(infreq, 'f', 2)); \ - ui->LightSrcX_OutSigFreqDetect_##index->setText(QString::number(outfreq, 'f', 2)); \ - ui->LightSrcX_LightSrcErrorState_##index->setText(QString::number(state)); \ - })); \ - } - - UPDATE(1); - UPDATE(2); - UPDATE(3); - UPDATE(4); -#undef UPDATE - } -} -void MainWindow::refreshReadonlyPage3() { - if (!G_QTDataChannel.isOpen()) { - return; - } -} -bool MainWindow::checkConnected() { - if (!G_QTDataChannel.isOpen()) { - return false; - } - uint32_t val; - zaf_error_code_t ecode = m_clstc->reg_read(kreg_software_version, val); - if (ecode != kaf_ec_success) { - return false; - } - return true; -} - -zaf_error_code_t MainWindow::refreshPage() { - /******************************************************************************* - * 刷新内部触发源页面 * - *******************************************************************************/ - { - float Freq; - uint32_t PluseCnt; - uint32_t SeqCtrlPluseCntMax; - float TriOutSignalFreq; - - DO(m_clstc->InterClk_getFreq(Freq)); - DO(m_clstc->InterClk_getPluseCnt(PluseCnt)); - DO(m_clstc->InterClk_getSeqCtrlPluseCntMax(SeqCtrlPluseCntMax)); - DO(m_clstc->InterClk_readTriOutSignalFreq(TriOutSignalFreq)); - - ui->InterClk_Freq_Text->setText(QString::number(Freq, 'f', 2)); - ui->InterClk_PluseCnt_Text->setText(QString::number(PluseCnt)); - 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; - uint32_t cnt; -// TriInX_setSequentialControlPluseCntMax -#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)); \ - DO(m_clstc->TriInX_getSequentialControlPluseCntMax(index, cnt)); \ - 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())); \ - ui->TriInX_SequentialControlPluseCntMax_Val_##index->setText(QString::number(cnt)); - - UPDATE(1); - UPDATE(2); - UPDATE(3); - UPDATE(4); - -#undef UPDATE - } - - // 刷新光源时序控制页面 - { - InternalSig src; - uint32_t width; - uint32_t offset; - float duty; - float freq; - uint32_t state; - float infreq; - float outfreq; - -#define UPDATE(index) \ - DO(m_clstc->LightSrcX_getTriSrc(index, src)); \ - DO(m_clstc->LightSrcX_getTriggerModePluseWidth(index, width)); \ - DO(m_clstc->LightSrcX_getTriggerModeFirstPluseOffset(index, offset)); \ - DO(m_clstc->LightSrcX_getLightIntensityDuty(index, duty)); \ - DO(m_clstc->LightSrcX_getLightDriverFreq(index, freq)); \ - DO(m_clstc->LightSrcX_readLightSrcErrorState(index, state)); \ - DO(m_clstc->LightSrcX_readInSigFreqDetect(index, infreq)); \ - DO(m_clstc->LightSrcX_readOutSigFreqDetect(index, outfreq)); \ - ui->LightSrcX_TriSrc_##index->setCurrentText(QString::fromStdString(src.toString())); \ - ui->LightSrcX_TriggerModePluseWidth_##index->setText(QString::number(width)); \ - ui->LightSrcX_TriggerModeFirstPluseOffset_##index->setText(QString::number(offset)); \ - ui->LightSrcX_LightIntensityDuty_##index->setText(QString::number(duty, 'f', 2)); \ - ui->LightSrcX_LightDriverFreq_##index->setText(QString::number(freq, 'f', 2)); \ - ui->LightSrcX_LightSrcErrorState_##index->setText(QString::number(state)); \ - ui->LightSrcX_InSigFreqDetect_##index->setText(QString::number(infreq, 'f', 2)); \ - ui->LightSrcX_OutSigFreqDetect_##index->setText(QString::number(outfreq, 'f', 2)); - - UPDATE(1); - UPDATE(2); - UPDATE(3); - UPDATE(4); -#undef UPDATE - } - - { - SigProcessMode mode; - uint32_t offset; - uint32_t bindstate1; - uint32_t bindstate2; - uint32_t bindstate3; - uint32_t bindstate4; - InternalSig sig; - uint32_t reversal; - - // zaf_error_code_t ShutterX_setOutPolarityReversal(int32_t index, uint32_t reversal); - -#define UPDATE(index) \ - DO(m_clstc->ShutterX_getOutputCtrlMode(index, mode)); \ - DO(m_clstc->ShutterX_getLtEnOffset(index, offset)); \ - DO(m_clstc->ShutterX_getLtEnBind(index, 1, bindstate1)); \ - DO(m_clstc->ShutterX_getLtEnBind(index, 2, bindstate2)); \ - DO(m_clstc->ShutterX_getLtEnBind(index, 3, bindstate3)); \ - DO(m_clstc->ShutterX_getLtEnBind(index, 4, bindstate4)); \ - DO(m_clstc->ShutterX_getInSigSelect(index, sig)); \ - DO(m_clstc->ShutterX_getOutPolarityReversal(index, reversal)); \ - ui->ShutterX_OutputCtrlMode_##index->setCurrentText(QString::fromStdString(mode.toString())); \ - ui->ShutterX_LtEnOffset_##index->setText(QString::number(offset)); \ - ui->ShutterX_LtEnBind_val1_##index->setChecked(bindstate1 != 0 ? Qt::CheckState::Checked : Qt::CheckState::Unchecked); \ - ui->ShutterX_LtEnBind_val2_##index->setChecked(bindstate2 != 0 ? Qt::CheckState::Checked : Qt::CheckState::Unchecked); \ - ui->ShutterX_LtEnBind_val3_##index->setChecked(bindstate3 != 0 ? Qt::CheckState::Checked : Qt::CheckState::Unchecked); \ - ui->ShutterX_LtEnBind_val4_##index->setChecked(bindstate4 != 0 ? Qt::CheckState::Checked : Qt::CheckState::Unchecked); \ - ui->ShutterX_InSigSelect_##index->setCurrentText(QString::fromStdString(sig.toString())); \ - ui->ShutterX_OutPolarityReversal_##index->setChecked(reversal != 0 ? Qt::CheckState::Checked : Qt::CheckState::Unchecked); - - // ui->ShutterX_LtEnBind_val1_1->checkState() - - UPDATE(1); - UPDATE(2); - UPDATE(3); - UPDATE(4); -#undef UPDATE - } - - return kaf_ec_success; -} - -void MainWindow::constructUI() { - /******************************************************************************* - * serialPortCB * - *******************************************************************************/ - const auto infos = QSerialPortInfo::availablePorts(); - for (const QSerialPortInfo &info : infos) { - ui->serialPortCB->addItem(info.portName()); - } - - /******************************************************************************* - * 波特率填?? * - *******************************************************************************/ - ui->serialBaudrateCB->addItem("9600"); - ui->serialBaudrateCB->addItem("14400"); - ui->serialBaudrateCB->addItem("19200"); - ui->serialBaudrateCB->addItem("38400"); - ui->serialBaudrateCB->addItem("57600"); - ui->serialBaudrateCB->addItem("115200"); - ui->serialBaudrateCB->addItem("500000"); - ui->serialBaudrateCB->setCurrentIndex(6); - - /******************************************************************************* - * 刷新串口 * - *******************************************************************************/ - connect(ui->serialPortRefreshKey, &QPushButton::clicked, this, [this](bool check) { - ui->serialPortCB->clear(); - const auto infos = QSerialPortInfo::availablePorts(); - for (const QSerialPortInfo &info : infos) { - ui->serialPortCB->addItem(info.portName()); - } - }); - - /******************************************************************************* - * 打开串口 * - *******************************************************************************/ - connect(ui->serialOpenKey, &QPushButton::clicked, this, [=](bool check) { - // 打开串口 - if (ui->serialOpenKey->text() == "打开") { - G_QTDataChannel.setPortName(ui->serialPortCB->currentText().toStdString()); - G_QTDataChannel.setBaudRate(ui->serialBaudrateCB->currentText().toInt()); - G_QTDataChannel.setDataBits(QSerialPort::Data8); - G_QTDataChannel.setParity(QSerialPort::NoParity); - G_QTDataChannel.setFlowControl(QSerialPort::NoFlowControl); - G_QTDataChannel.setStopBits(QSerialPort::OneStop); - - if (!G_QTDataChannel.open()) { - QMessageBox::about(NULL, "提示", "串口无法打开,串口不存在或已被占??"); - return; - } - ui->serialOpenKey->setText("关闭"); - // 下拉菜单控件使能 - ui->serialBaudrateCB->setEnabled(false); - ui->serialPortCB->setEnabled(false); - ui->serialPortRefreshKey->setEnabled(false); - } else { - G_QTDataChannel.close(); - ui->serialOpenKey->setText("打开"); - ui->serialBaudrateCB->setEnabled(true); - ui->serialPortCB->setEnabled(true); - ui->serialPortRefreshKey->setEnabled(true); - } - }); - - /******************************************************************************* - * 刷新页面 * - *******************************************************************************/ - connect(ui->refreshPageKey, &QPushButton::clicked, this, [=](bool check) { // - zaf_error_code_t ecode = refreshPage(); - if (ecode != kaf_ec_success) return; - - dumpLog("刷新成功"); - displayInfo(true, "刷新成功"); - QMessageBox::about(NULL, "消息", "刷新成功"); - }); - - connect(ui->UpdateCfg_Key, &QPushButton::clicked, this, [=](bool check) { // - zaf_error_code_t ecode = updatePage(); - if (ecode != kaf_ec_success) return; - ecode = refreshPage(); - if (ecode != kaf_ec_success) return; - - dumpLog("提交成功"); - displayInfo(true, "提交成功"); - QMessageBox::about(NULL, "消息", "提交成功"); - - }); - - /******************************************************************************* - * 保存配置 * - *******************************************************************************/ - connect(ui->storageConfigKey, &QPushButton::clicked, this, [=](bool check) { // - DO(m_clstc->storageConfigs()); - dumpLog("保存配置成功"); - displayInfo(true, "保存配置成功"); - QMessageBox::about(NULL, "消息", "保存配置成功"); - - }); - - /******************************************************************************* - * 重启设备 * - *******************************************************************************/ - connect(ui->rebootDeviceKey, &QPushButton::clicked, this, [=](bool check) { // - DO_NO_RET(m_clstc->reboot()); - dumpLog("重启设备成功"); - displayInfo(true, "重启设备成功"); - QMessageBox::about(NULL, "消息", "重启设备成功"); - - }); - - /******************************************************************************* - * 恢复出厂设置 * - *******************************************************************************/ - connect(ui->factoryResetKey, &QPushButton::clicked, this, [=](bool check) { // - DO_NO_RET(m_clstc->factoryReset()); - dumpLog("恢复出厂设置成功"); - displayInfo(true, "恢复出厂设置成功"); - QMessageBox::about(NULL, "消息", "恢复出厂设置成功"); - }); - - /******************************************************************************* - * 寄存器操?? * - *******************************************************************************/ - - ui->RegAdd->setText("0x00000000"); - connect(ui->regReadKey, &QPushButton::clicked, this, [=](bool check) { // - uint32_t addr = str2int(ui->RegAdd->text()); - uint32_t value = 0; - DO_NO_RET(m_clstc->reg_read(addr, value, 100)); - ui->regReadbakVal->setText(fmt("0x%08X", value)); - dumpLog(fmt("读取0x%04x成功", addr)); - }); - - connect(ui->regWriteKey, &QPushButton::clicked, this, [=](bool check) { // - uint32_t addr = str2int(ui->RegAdd->text()); - uint32_t value = str2int(ui->regWriteVal->text()); - uint32_t readkbak = 0; - DO_NO_RET(m_clstc->reg_write(addr, value, readkbak, 100)); - ui->regReadbakVal->setText(fmt("0x%04x", readkbak)); - dumpLog(fmt("写入0x%08x成功", addr)); - }); - - connect(ui->InterClk_trigger_Key, &QPushButton::clicked, this, [=](bool check) { // - DO_NO_RET(m_clstc->InterClk_trigger()); - dumpLog(fmt("触发成功")); - }); - connect(ui->InterClk_stop_Key, &QPushButton::clicked, this, [=](bool check) { // - DO_NO_RET(m_clstc->InterClk_stop()); - 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())); - - ui->TriInX_InSignalFreq_Val_1->setDisabled(true); - ui->TriInX_InSignalFreq_Val_2->setDisabled(true); - ui->TriInX_InSignalFreq_Val_3->setDisabled(true); - ui->TriInX_InSignalFreq_Val_4->setDisabled(true); - - ui->TriInX_OutSignalFreq_Val_1->setDisabled(true); - ui->TriInX_OutSignalFreq_Val_2->setDisabled(true); - ui->TriInX_OutSignalFreq_Val_3->setDisabled(true); - ui->TriInX_OutSignalFreq_Val_4->setDisabled(true); - - /******************************************************************************* - * 光源时序配置 * - *******************************************************************************/ - - QStringList LightSrcX_TriSrc_QStringList; - LightSrcX_TriSrc_QStringList.append(QString::fromStdString(InternalSig(InternalSig::LOGIC0).toString())); - LightSrcX_TriSrc_QStringList.append(QString::fromStdString(InternalSig(InternalSig::LOGIC1).toString())); - LightSrcX_TriSrc_QStringList.append(QString::fromStdString(InternalSig(InternalSig::INTERNAL_TRIGGER).toString())); - LightSrcX_TriSrc_QStringList.append(QString::fromStdString(InternalSig(InternalSig::INTERNAL_TRIGGER_I1).toString())); - LightSrcX_TriSrc_QStringList.append(QString::fromStdString(InternalSig(InternalSig::INTERNAL_TRIGGER_I2).toString())); - LightSrcX_TriSrc_QStringList.append(QString::fromStdString(InternalSig(InternalSig::INTERNAL_TRIGGER_I3).toString())); - LightSrcX_TriSrc_QStringList.append(QString::fromStdString(InternalSig(InternalSig::INTERNAL_TRIGGER_I4).toString())); - LightSrcX_TriSrc_QStringList.append(QString::fromStdString(InternalSig(InternalSig::EXT_TRIGGER_1).toString())); - LightSrcX_TriSrc_QStringList.append(QString::fromStdString(InternalSig(InternalSig::EXT_TRIGGER_1_I1).toString())); - LightSrcX_TriSrc_QStringList.append(QString::fromStdString(InternalSig(InternalSig::EXT_TRIGGER_1_I2).toString())); - LightSrcX_TriSrc_QStringList.append(QString::fromStdString(InternalSig(InternalSig::EXT_TRIGGER_1_I3).toString())); - LightSrcX_TriSrc_QStringList.append(QString::fromStdString(InternalSig(InternalSig::EXT_TRIGGER_1_I4).toString())); - LightSrcX_TriSrc_QStringList.append(QString::fromStdString(InternalSig(InternalSig::EXT_TRIGGER_2).toString())); - LightSrcX_TriSrc_QStringList.append(QString::fromStdString(InternalSig(InternalSig::EXT_TRIGGER_2_I1).toString())); - LightSrcX_TriSrc_QStringList.append(QString::fromStdString(InternalSig(InternalSig::EXT_TRIGGER_2_I2).toString())); - LightSrcX_TriSrc_QStringList.append(QString::fromStdString(InternalSig(InternalSig::EXT_TRIGGER_2_I3).toString())); - LightSrcX_TriSrc_QStringList.append(QString::fromStdString(InternalSig(InternalSig::EXT_TRIGGER_2_I4).toString())); - LightSrcX_TriSrc_QStringList.append(QString::fromStdString(InternalSig(InternalSig::EXT_TRIGGER_3).toString())); - LightSrcX_TriSrc_QStringList.append(QString::fromStdString(InternalSig(InternalSig::EXT_TRIGGER_3_I1).toString())); - LightSrcX_TriSrc_QStringList.append(QString::fromStdString(InternalSig(InternalSig::EXT_TRIGGER_3_I2).toString())); - LightSrcX_TriSrc_QStringList.append(QString::fromStdString(InternalSig(InternalSig::EXT_TRIGGER_3_I3).toString())); - LightSrcX_TriSrc_QStringList.append(QString::fromStdString(InternalSig(InternalSig::EXT_TRIGGER_3_I4).toString())); - LightSrcX_TriSrc_QStringList.append(QString::fromStdString(InternalSig(InternalSig::EXT_TRIGGER_4).toString())); - LightSrcX_TriSrc_QStringList.append(QString::fromStdString(InternalSig(InternalSig::EXT_TRIGGER_4_I1).toString())); - LightSrcX_TriSrc_QStringList.append(QString::fromStdString(InternalSig(InternalSig::EXT_TRIGGER_4_I2).toString())); - LightSrcX_TriSrc_QStringList.append(QString::fromStdString(InternalSig(InternalSig::EXT_TRIGGER_4_I3).toString())); - LightSrcX_TriSrc_QStringList.append(QString::fromStdString(InternalSig(InternalSig::EXT_TRIGGER_4_I4).toString())); - - ui->LightSrcX_TriSrc_1->addItems(LightSrcX_TriSrc_QStringList); - ui->LightSrcX_TriSrc_2->addItems(LightSrcX_TriSrc_QStringList); - ui->LightSrcX_TriSrc_3->addItems(LightSrcX_TriSrc_QStringList); - ui->LightSrcX_TriSrc_4->addItems(LightSrcX_TriSrc_QStringList); - - ui->LightSrcX_InSigFreqDetect_1->setDisabled(true); - ui->LightSrcX_InSigFreqDetect_2->setDisabled(true); - ui->LightSrcX_InSigFreqDetect_3->setDisabled(true); - ui->LightSrcX_InSigFreqDetect_4->setDisabled(true); - - ui->LightSrcX_OutSigFreqDetect_1->setDisabled(true); - ui->LightSrcX_OutSigFreqDetect_2->setDisabled(true); - ui->LightSrcX_OutSigFreqDetect_3->setDisabled(true); - ui->LightSrcX_OutSigFreqDetect_4->setDisabled(true); - - ui->LightSrcX_LightSrcErrorState_1->setDisabled(true); - ui->LightSrcX_LightSrcErrorState_2->setDisabled(true); - ui->LightSrcX_LightSrcErrorState_3->setDisabled(true); - ui->LightSrcX_LightSrcErrorState_4->setDisabled(true); - - ui->LightSrcX_LightDriverFreq_1->setDisabled(false); - ui->LightSrcX_LightDriverFreq_2->setDisabled(false); - ui->LightSrcX_LightDriverFreq_3->setDisabled(false); - ui->LightSrcX_LightDriverFreq_4->setDisabled(false); - - /******************************************************************************* - * 快门时序配置页面 * - *******************************************************************************/ - - ui->ShutterX_OutputCtrlMode_1->addItem(QString::fromStdString(SigProcessMode(SigProcessMode::TRANSPARENT_MODE).toString())); - ui->ShutterX_OutputCtrlMode_2->addItem(QString::fromStdString(SigProcessMode(SigProcessMode::TRANSPARENT_MODE).toString())); - ui->ShutterX_OutputCtrlMode_3->addItem(QString::fromStdString(SigProcessMode(SigProcessMode::TRANSPARENT_MODE).toString())); - ui->ShutterX_OutputCtrlMode_4->addItem(QString::fromStdString(SigProcessMode(SigProcessMode::TRANSPARENT_MODE).toString())); - - ui->ShutterX_OutputCtrlMode_1->addItem(QString::fromStdString(SigProcessMode(SigProcessMode::BIND_MODE).toString())); - ui->ShutterX_OutputCtrlMode_2->addItem(QString::fromStdString(SigProcessMode(SigProcessMode::BIND_MODE).toString())); - ui->ShutterX_OutputCtrlMode_3->addItem(QString::fromStdString(SigProcessMode(SigProcessMode::BIND_MODE).toString())); - ui->ShutterX_OutputCtrlMode_4->addItem(QString::fromStdString(SigProcessMode(SigProcessMode::BIND_MODE).toString())); - - ui->ShutterX_InSigSelect_1->addItems(LightSrcX_TriSrc_QStringList); - ui->ShutterX_InSigSelect_2->addItems(LightSrcX_TriSrc_QStringList); - ui->ShutterX_InSigSelect_3->addItems(LightSrcX_TriSrc_QStringList); - ui->ShutterX_InSigSelect_4->addItems(LightSrcX_TriSrc_QStringList); - - ui->InterClk_TriOutSignalFreq_Text->setDisabled(true); -} - -MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { - // G_SerialPort.moveToThread(); - // QObject::connect(&G_SerialPortThread, &QThread::started, &G_SerialPort, &QSerialPort::open); - - G_QTDataChannel.init(); - CLSTControler::ins()->initialize(&G_QTDataChannel); - m_clstc = CLSTControler::ins(); - - ui->setupUi(this); - m_mainWindow = this; - - qRegisterMetaType("int32_t"); - qRegisterMetaType("uint32_t"); - qRegisterMetaType("float"); - qRegisterMetaType>("function"); - qRegisterMetaType("QFunction"); - // qInstallMessageHandler(log_output); - connect(this, SIGNAL(doinui_signal(QFunction)), this, SLOT(doinui_slot(QFunction))); - constructUI(); - - // 创建定时器 - timer0 = new QTimer(this); - timer1 = new QTimer(this); - timer2 = new QTimer(this); - timer3 = new QTimer(this); - checkConnectTimer0 = new QTimer(this); - - m_zqthread = new ZQThread("", [this]() { - while (true) { - static bool first = true; - bool connect = checkConnected(); - if (m_connected != connect || first) { - first = false; - m_connected = connect; - emit doinui_signal(QFunction([this, connect]() { - if (connect) { - ui->DeviceConnectStateTB->setText("已连接"); - ui->DeviceConnectStateTB->setStyleSheet("color: green"); - displayInfo(true, "连接成功"); - } else { - ui->DeviceConnectStateTB->setText("未连接"); - ui->DeviceConnectStateTB->setStyleSheet("color: red"); - } - if (m_connected) { - refreshPage(); - } - })); - } - - refreshReadonlyPage0(); - refreshReadonlyPage1(); - refreshReadonlyPage2(); - refreshReadonlyPage3(); - - std::this_thread::sleep_for(std::chrono::milliseconds(1000)); - } - }); - m_zqthread->start(); - - // connect(timer0, &QTimer::timeout, this, [this]() { refreshReadonlyPage0(); }); - // connect(timer1, &QTimer::timeout, this, [this]() { refreshReadonlyPage1(); }); - // connect(timer2, &QTimer::timeout, this, [this]() { refreshReadonlyPage2(); }); - // connect(timer3, &QTimer::timeout, this, [this]() { refreshReadonlyPage3(); }); - - // connect(checkConnectTimer0, &QTimer::timeout, this, [this]() { // - // static bool connected = false; - // bool connect = checkConnected(); - // if (connect) { - // ui->DeviceConnectStateTB->setText("已连接"); - // ui->DeviceConnectStateTB->setStyleSheet("color: green"); - - // } else { - // ui->DeviceConnectStateTB->setText("未连接"); - // ui->DeviceConnectStateTB->setStyleSheet("color: red"); - // } - // if (connected != connect) { - // connected = connect; - // if (connected) { - // refreshPage(); - // } - // } - // }); - - // timer0->setInterval(1100); // 每隔一秒触发一次 - // timer1->setInterval(1200); // 每隔一秒触发一次 - // timer2->setInterval(900); // 每隔一秒触发一次 - // timer3->setInterval(1000); // 每隔一秒触发一次 - // checkConnectTimer0->setInterval(100); - // timer0->start(); - // timer1->start(); - // timer2->start(); - // timer3->start(); - // checkConnectTimer0->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); @@ -878,4 +82,28 @@ void MainWindow::displayInfo(bool suc, QString info) { })); } +MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { + /******************************************************************************* + * QT初始化 * + *******************************************************************************/ + ui->setupUi(this); + m_mainWindow = this; + qRegisterMetaType("int32_t"); + qRegisterMetaType("uint32_t"); + qRegisterMetaType("float"); + qRegisterMetaType>("function"); + qRegisterMetaType("QFunction"); + connect(this, SIGNAL(doinui_signal(QFunction)), this, SLOT(doinui_slot(QFunction))); + + /******************************************************************************* + * 页面逻辑初始化 * + *******************************************************************************/ + constructUI(); +} MainWindow::~MainWindow() { delete ui; } + +/******************************************************************************* + * UI相关构造 * + *******************************************************************************/ + +void MainWindow::constructUI() {} diff --git a/mainwindow.h b/mainwindow.h index d05fad9..f8084c5 100644 --- a/mainwindow.h +++ b/mainwindow.h @@ -29,10 +29,10 @@ #include // +#include "camera_light_src_timing_controller/clst_controler.hpp" #include "logger.hpp" #include "qfunction.hpp" #include "zqthread.hpp" -#include "camera_light_src_timing_controller/clst_controler.hpp" QT_BEGIN_NAMESPACE namespace Ui { @@ -74,28 +74,16 @@ class MainWindow : public QMainWindow { MainWindow(QWidget *parent = nullptr); ~MainWindow(); - zaf_error_code_t refreshPage(); - zaf_error_code_t updatePage(); - - void refreshReadonlyPage0(); - void refreshReadonlyPage1(); - void refreshReadonlyPage2(); - void refreshReadonlyPage3(); - - bool checkConnected(); + void constructUI(); private slots: - /** - * @brief 一部修改UI方法 - */ void doinui_slot(QFunction); 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, ...); - void displayInfo(bool suc,QString info); + void displayInfo(bool suc, QString info); }; #endif // MAINWINDOW_H diff --git a/src/camera_light_src_timing_controller/clst_controler.cpp b/src/camera_light_src_timing_controller/clst_controler.cpp deleted file mode 100644 index 1689890..0000000 --- a/src/camera_light_src_timing_controller/clst_controler.cpp +++ /dev/null @@ -1,654 +0,0 @@ -#include "clst_controler.hpp" - -#include -#include - -#include "logger.hpp" -using namespace iflytop; -using namespace clst; - -#define TAG "CLSTControler" - -#define PACKET_LEN(__packet) (sizeof(zaf_packet_header_t) + (__packet->ndata) * sizeof(uint32_t) + 1 /*checksum*/ + 2 /*tail*/) -#define DO_CMD(exptr) \ - { \ - zaf_error_code_t ecode = exptr; \ - if (ecode != kaf_ec_success) return ecode; \ - } -CLSTControler *CLSTControler::ins() { - static CLSTControler *ins = nullptr; - if (ins == nullptr) { - ins = new CLSTControler(); - } - return ins; -} - -void CLSTControler::initialize(IDataChannel *channel) { // - m_channel = channel; - m_channel->regRxListener([this](uint8_t *data, size_t len) { - { - lock_guard lock(lock_); - if (len + m_rxlen > sizeof(m_rxcache)) { - m_rxlen = 0; - } - memcpy(m_rxcache + m_rxlen, data, len); - m_rxlen += len; - } - }); - - m_thread.reset(new thread([this]() { - uint32_t last_rx_cnt = 0; - uint8_t rx_process_cache[1024]; - uint32_t rx_process_cache_len; - while (true) { - this_thread::sleep_for(chrono::milliseconds(4)); - - { - lock_guard lock(lock_); - if (last_rx_cnt == m_rxlen && m_rxlen != 0) { - memcpy(rx_process_cache, m_rxcache, m_rxlen); - rx_process_cache_len = m_rxlen; - - m_rxlen = 0; - last_rx_cnt = 0; - } - } - - if (rx_process_cache_len != 0) { - processRxData(rx_process_cache, rx_process_cache_len); - memset(rx_process_cache, 0, sizeof(rx_process_cache)); - rx_process_cache_len = 0; - } - - last_rx_cnt = m_rxlen; - } - })); -} - -void CLSTControler::regRawDataListener(raw_data_cb_t cb) { m_raw_data_cb = cb; } - -void CLSTControler::processRxData(uint8_t *rx, uint32_t rxlen) { - /** - * @brief - * 1. findHeader - * 2. processRx - * - * 测试指令: - * 5A 5A 02 00 01 00 01 00 01 00 01 00 00 00 06 A5 A5 - * - */ - // ZLOGI(TAG, "processRxData %d", rxlen); - - for (uint32_t i = 0; i < rxlen; i++) { - zaf_packet_header_t *header = (zaf_packet_header_t *)(&rx[i]); - uint8_t *packetu8 = &rx[i]; - - if (header->packet_header == PACKET_HEADER) { - uint8_t check = packetu8[header->ndata * 4 + sizeof(zaf_packet_header_t) + 0]; - uint8_t tail0 = packetu8[header->ndata * 4 + sizeof(zaf_packet_header_t) + 1]; - uint8_t tail1 = packetu8[header->ndata * 4 + sizeof(zaf_packet_header_t) + 2]; - - uint16_t tail = (tail1 << 8) | tail0; - - uint8_t expectcheck = 0; - for (uint32_t j = 2; j < header->ndata * 4 + sizeof(zaf_packet_header_t); j++) { - expectcheck += packetu8[j]; - } - - if (tail == PACKET_TAIL) { - if (expectcheck == check) { - processRxPacket(header); - } else { - ZLOGE(TAG, "Rx packet check error %d != %d", expectcheck, check); - } - } - } - } -} - -void CLSTControler::processRxPacket(zaf_packet_header_t *packet) { - // - // ZLOGI(TAG, "RX packet"); - // ZLOGI(TAG, " type :%d", packet->packet_type); - // ZLOGI(TAG, " index :%d", packet->index); - // ZLOGI(TAG, " cmd :%d", packet->cmd); - // ZLOGI(TAG, " ndata :%d", packet->ndata); - // for (uint32_t i = 0; i < packet->ndata; i++) { - // ZLOGI(TAG, " data[%d]:%d", i, packet->data[i]); - // } - // ZLOGI(TAG, "Rx....."); - uint32_t packetlen = sizeof(zaf_packet_header_t) + packet->ndata * 4 + 3; - - if (m_raw_data_cb) { - m_raw_data_cb(kuart_raw_rx, (uint8_t *)packet, packetlen); - } - if (packet->packet_type == kzaf_packet_type_receipt) { - lock_guard lock(m_rxReceiptContext_lock); - if (m_rxReceiptContext.waittingForReceipt) { - if (m_rxReceiptContext.waittingIndex == packet->index) { - m_rxReceiptContext.receiptIsReady = true; - m_rxReceiptContext.receiptLen = PACKET_LEN(packet); - memcpy(m_rxReceiptContext.receipt, packet, PACKET_LEN(packet)); - } - m_rxReceiptContext.waittingForReceipt = false; - } - } -} - -bool CLSTControler::ping() {} - -zaf_error_code_t CLSTControler::sendPacket(zaf_packet_header_t *packet, uint32_t len, uint32_t overtime) { - zaf_packet_header_t *rxpacket = (zaf_packet_header_t *)&m_rxReceiptContext.receipt[0]; - - { - lock_guard lock(m_rxReceiptContext_lock); - m_rxReceiptContext.waittingIndex = packet->index; - m_rxReceiptContext.waittingForReceipt = true; - m_rxReceiptContext.receiptIsReady = false; - m_rxReceiptContext.receiptLen = 0; - } - - if (!m_channel) { - return kaf_ec_device_notopen; - } - - if (m_channel->isOpen() == false) { - return kaf_ec_device_notopen; - } - - if (m_raw_data_cb) { - m_raw_data_cb(kuart_raw_tx, (uint8_t *)packet, PACKET_LEN(packet)); - } - // ZLOGI(TAG, "Tx....."); - m_channel->send((uint8_t *)packet, len); - - for (size_t i = 0; i < overtime; i++) { - { - lock_guard lock(m_rxReceiptContext_lock); - // ZLOGI(TAG, "wait for ready %d", m_rxReceiptContext.receiptIsReady); - if (m_rxReceiptContext.receiptIsReady) { - if (rxpacket->data[0] != 0) { - return (zaf_error_code_t)rxpacket->data[0]; - } else { - return kaf_ec_success; - } - } - } - - this_thread::sleep_for(chrono::milliseconds(1)); - } - return kaf_ec_overtime; -} - -zaf_error_code_t CLSTControler::reg_write(uint32_t regadd, uint32_t regvalue, uint32_t ®backvalue, int32_t overtime_ms) { // - lock_guard lock(m_tx_lock); - - uint8_t txdata[128] = {0}; - - zaf_packet_header_t *txpacket = (zaf_packet_header_t *)txdata; - zaf_packet_header_t *rxpacket = (zaf_packet_header_t *)&m_rxReceiptContext.receipt[0]; - - txpacket->packet_header = PACKET_HEADER; - txpacket->packet_type = kzaf_packet_type_cmd; - txpacket->index = ++txindex; - txpacket->cmd = kzaf_cmd_reg_write; - txpacket->ndata = 2; - txpacket->data[0] = regadd; - txpacket->data[1] = regvalue; - - uint32_t txpacklen = PACKET_LEN(txpacket); - uint8_t checksum = 0; - for (int i = 2; i < txpacklen - 3; i++) { - checksum += txdata[i]; - } - txdata[txpacklen - 3] = checksum; - txdata[txpacklen - 2] = PACKET_TAIL & 0xFF; - txdata[txpacklen - 1] = (PACKET_TAIL >> 8) & 0xFF; - - zaf_error_code_t ecode = sendPacket(txpacket, txpacklen, overtime_ms); - if (ecode != kaf_ec_success) { - return ecode; - } - - regbackvalue = rxpacket->data[1]; - return kaf_ec_success; -} -uint32_t CLSTControler::reg_read_v2(uint32_t regadd) { - uint32_t regvalue = 0; - reg_read(regadd, regvalue, 30); - return regvalue; -} - -zaf_error_code_t CLSTControler::reg_read(uint32_t regadd, uint32_t ®value, int32_t overtime_ms) { - lock_guard lock(m_tx_lock); - - uint8_t txdata[128] = {0}; - - zaf_packet_header_t *txpacket = (zaf_packet_header_t *)txdata; - zaf_packet_header_t *rxpacket = (zaf_packet_header_t *)&m_rxReceiptContext.receipt[0]; - - txpacket->packet_header = PACKET_HEADER; - txpacket->packet_type = kzaf_packet_type_cmd; - txpacket->index = ++txindex; - txpacket->cmd = kzaf_cmd_reg_read; - txpacket->ndata = 1; - txpacket->data[0] = regadd; - - uint32_t txpacklen = PACKET_LEN(txpacket); - uint8_t checksum = 0; - for (int i = 2; i < txpacklen - 3; i++) { - checksum += txdata[i]; - } - txdata[txpacklen - 3] = checksum; - txdata[txpacklen - 2] = PACKET_TAIL & 0xFF; - txdata[txpacklen - 1] = (PACKET_TAIL >> 8) & 0xFF; - - zaf_error_code_t ecode = sendPacket(txpacket, txpacklen, overtime_ms); - if (ecode != kaf_ec_success) { - return ecode; - } - - regvalue = rxpacket->data[1]; - - // ZLOGI(TAG, "RX packet"); - // ZLOGI(TAG, " type :%d", rxpacket->packet_type); - // ZLOGI(TAG, " index :%d", rxpacket->index); - // ZLOGI(TAG, " cmd :%d", rxpacket->cmd); - // ZLOGI(TAG, " ndata :%d", rxpacket->ndata); - // for (uint32_t i = 0; i < rxpacket->ndata; i++) { - // ZLOGI(TAG, " data[%d]:%d", i, rxpacket->data[i]); - // } - // ZLOGI(TAG, "RX:%d", regvalue); - - return kaf_ec_success; -} - -zaf_error_code_t CLSTControler::factoryReset() { - lock_guard lock(m_tx_lock); - - uint8_t txdata[128] = {0}; - - zaf_packet_header_t *txpacket = (zaf_packet_header_t *)txdata; - zaf_packet_header_t *rxpacket = (zaf_packet_header_t *)&m_rxReceiptContext.receipt[0]; - - txpacket->packet_header = PACKET_HEADER; - txpacket->packet_type = kzaf_packet_type_cmd; - txpacket->index = ++txindex; - txpacket->cmd = kzaf_cmd_factory_reset; - txpacket->ndata = 0; - - uint32_t txpacklen = PACKET_LEN(txpacket); - uint8_t checksum = 0; - for (int i = 2; i < txpacklen - 3; i++) { - checksum += txdata[i]; - } - txdata[txpacklen - 3] = checksum; - txdata[txpacklen - 2] = PACKET_TAIL & 0xFF; - txdata[txpacklen - 1] = (PACKET_TAIL >> 8) & 0xFF; - - zaf_error_code_t ecode = sendPacket(txpacket, txpacklen, 1500); - if (ecode != kaf_ec_success) return ecode; - - return kaf_ec_success; -} -zaf_error_code_t CLSTControler::reboot() { - lock_guard lock(m_tx_lock); - - uint8_t txdata[128] = {0}; - - zaf_packet_header_t *txpacket = (zaf_packet_header_t *)txdata; - zaf_packet_header_t *rxpacket = (zaf_packet_header_t *)&m_rxReceiptContext.receipt[0]; - - txpacket->packet_header = PACKET_HEADER; - txpacket->packet_type = kzaf_packet_type_cmd; - txpacket->index = ++txindex; - txpacket->cmd = kzaf_cmd_reboot; - txpacket->ndata = 0; - - uint32_t txpacklen = PACKET_LEN(txpacket); - uint8_t checksum = 0; - for (int i = 2; i < txpacklen - 3; i++) { - checksum += txdata[i]; - } - txdata[txpacklen - 3] = checksum; - txdata[txpacklen - 2] = PACKET_TAIL & 0xFF; - txdata[txpacklen - 1] = (PACKET_TAIL >> 8) & 0xFF; - - zaf_error_code_t ecode = sendPacket(txpacket, txpacklen, 100); - if (ecode != kaf_ec_success) return ecode; - - return kaf_ec_success; -} -zaf_error_code_t CLSTControler::storageConfigs() { - lock_guard lock(m_tx_lock); - - uint8_t txdata[128] = {0}; - - zaf_packet_header_t *txpacket = (zaf_packet_header_t *)txdata; - zaf_packet_header_t *rxpacket = (zaf_packet_header_t *)&m_rxReceiptContext.receipt[0]; - - txpacket->packet_header = PACKET_HEADER; - txpacket->packet_type = kzaf_packet_type_cmd; - txpacket->index = ++txindex; - txpacket->cmd = kzaf_cmd_storage_cfg; - txpacket->ndata = 0; - - uint32_t txpacklen = PACKET_LEN(txpacket); - uint8_t checksum = 0; - for (int i = 2; i < txpacklen - 3; i++) { - checksum += txdata[i]; - } - txdata[txpacklen - 3] = checksum; - txdata[txpacklen - 2] = PACKET_TAIL & 0xFF; - txdata[txpacklen - 1] = (PACKET_TAIL >> 8) & 0xFF; - - zaf_error_code_t ecode = sendPacket(txpacket, txpacklen, 1500); - if (ecode != kaf_ec_success) return ecode; - - return kaf_ec_success; -} - -zaf_error_code_t CLSTControler::readFreq(uint32_t reg, float &freqfloat) { - uint32_t freq_cnt = 0; - DO_CMD(reg_read(reg, freq_cnt, 30)); - if (freq_cnt == 0) { - freqfloat = 0; - } - - if (freq_cnt != 0) { - uint32_t freq_1000x = ((1.0 / (freq_cnt * 1.0 / (100 * 1000 * 1000))) * 1000 + 0.5); //+0.5???c++ ?????????????????? - // ZLOGI(TAG, "freq_10x %f", freq_10x); - freqfloat = freq_1000x / 1000.0; - } else { - freqfloat = 0; - } - if (freqfloat < 0.05) { - freqfloat = 0; - } - - return kaf_ec_success; -} - -/******************************************************************************* - * ???? * - *******************************************************************************/ -zaf_error_code_t CLSTControler::InterClk_setFreq(float freq) { // - DO_CMD(InterClk_stop()); - ZLOGI(TAG, "InterClk_setFreq %f", freq); - double T = 1.0 / freq; - double T_ns = T * 1000 * 1000 * 1000; - double cnt = T_ns / 10 + 0.5; // 100MHZ <=> 10ns - - uint32_t cnt_u32 = uint32_t(cnt); - ZLOGI(TAG, "InterClk_setFreq %f %d", freq, cnt_u32); - - return reg_write(kreg_internal_clk_freq_cnt, cnt_u32); -} -zaf_error_code_t CLSTControler::InterClk_setPluseCnt(uint32_t cnt) { // - return reg_write(kreg_internal_clk_pluse_cnt, cnt); -} -zaf_error_code_t CLSTControler::InterClk_setSeqCtrlPluseCntMax(uint32_t cnt) { // - if (cnt == 0) return kaf_ec_param_error; - return reg_write(kreg_internal_clk_tri_sequential_control_pluse_cnt_max, cnt - 1); -} - -zaf_error_code_t CLSTControler::InterClk_getFreq(float &freq) { // - return readFreq(kreg_internal_clk_freq_cnt, freq); -} -zaf_error_code_t CLSTControler::InterClk_getPluseCnt(uint32_t &cnt) { // - return reg_read(kreg_internal_clk_pluse_cnt, cnt); -} -zaf_error_code_t CLSTControler::InterClk_getSeqCtrlPluseCntMax(uint32_t &cnt) { // - DO_CMD(reg_read(kreg_internal_clk_tri_sequential_control_pluse_cnt_max, cnt)); - cnt++; - return kaf_ec_success; -} -zaf_error_code_t CLSTControler::InterClk_readTriOutSignalFreq(float &freq) { // - return readFreq(kreg_internal_clk_tri_out_signal_freq, freq); -} -zaf_error_code_t CLSTControler::InterClk_trigger() { // - return reg_write(kreg_internal_clk_ctrl, 1); -} -zaf_error_code_t CLSTControler::InterClk_stop() { // - return reg_write(kreg_internal_clk_ctrl, 0); -} -/******************************************************************************* - * TTL????? * - *******************************************************************************/ -// kreg_trigger_in1_module -// kreg_trigger_in1_src_slect -// kreg_trigger_in1_fileter_coefficient -// kreg_trigger_in1_freq_detect_bias -// kreg_trigger_in1_mode -// kreg_trigger_in1_trigger_mode_trigger_edge -// kreg_trigger_in1_trigger_mode_freq_division -// kreg_trigger_in1_trigger_mode_freq_multiplication -// kreg_trigger_in1_sequential_control_pluse_cnt_max -// kreg_trigger_in1_in_signal_freq -// kreg_trigger_in1_out_signal_freq - -zaf_error_code_t CLSTControler::TriInX_setSrcSelect(int32_t index, ExtTriggerSrcType src) { // - if (index < 1 || index > 4) return kaf_ec_param_error; - return reg_write(kreg_trigger_in1_src_slect + (index - 1) * 32, src.getVal()); -} -zaf_error_code_t CLSTControler::TriInX_setFileterCoefficient(int32_t index, uint32_t coefficient) { // - if (index < 1 || index > 4) return kaf_ec_param_error; - return reg_write(kreg_trigger_in1_fileter_coefficient + (index - 1) * 32, coefficient); -} -zaf_error_code_t CLSTControler::TriInX_setFreqDetectBias(int32_t index, uint32_t bias) { // - if (index < 1 || index > 4) return kaf_ec_param_error; - return reg_write(kreg_trigger_in1_freq_detect_bias + (index - 1) * 32, bias); -} -zaf_error_code_t CLSTControler::TriInX_setMode(int32_t index, SigProcessMode mode) { // - if (index < 1 || index > 4) return kaf_ec_param_error; - return reg_write(kreg_trigger_in1_mode + (index - 1) * 32, mode.getVal()); -} -zaf_error_code_t CLSTControler::TriInX_setTriggerModeTriggerEdge(int32_t index, TriggerEdge edge) { // - if (index < 1 || index > 4) return kaf_ec_param_error; - return reg_write(kreg_trigger_in1_trigger_mode_trigger_edge + (index - 1) * 32, edge); -} -zaf_error_code_t CLSTControler::TriInX_setTriggerModeFreqDivision(int32_t index, uint32_t division) { // - if (index < 1 || index > 4) return kaf_ec_param_error; - return reg_write(kreg_trigger_in1_trigger_mode_freq_division + (index - 1) * 32, division); -} -zaf_error_code_t CLSTControler::TriInX_setTriggerModeFreqMultiplication(int32_t index, uint32_t multiplication) { // - if (index < 1 || index > 4) return kaf_ec_param_error; - return reg_write(kreg_trigger_in1_trigger_mode_freq_multiplication + (index - 1) * 32, multiplication); -} -zaf_error_code_t CLSTControler::TriInX_setSequentialControlPluseCntMax(int32_t index, uint32_t cnt) { // - if (index < 1 || index > 4) return kaf_ec_param_error; - return reg_write(kreg_trigger_in1_sequential_control_pluse_cnt_max + (index - 1) * 32, cnt - 1); -} - -zaf_error_code_t CLSTControler::TriInX_getSrcSelect(int32_t index, ExtTriggerSrcType &src) { // - if (index < 1 || index > 4) return kaf_ec_param_error; - uint32_t val; - DO_CMD(reg_read(kreg_trigger_in1_src_slect + (index - 1) * 32, val)); - src = ExtTriggerSrcType(val); - return kaf_ec_success; -} -zaf_error_code_t CLSTControler::TriInX_getFileterCoefficient(int32_t index, uint32_t &coefficient) { // - if (index < 1 || index > 4) return kaf_ec_param_error; - return reg_read(kreg_trigger_in1_fileter_coefficient + (index - 1) * 32, coefficient); -} -zaf_error_code_t CLSTControler::TriInX_getFreqDetectBias(int32_t index, uint32_t &bias) { // - if (index < 1 || index > 4) return kaf_ec_param_error; - return reg_read(kreg_trigger_in1_freq_detect_bias + (index - 1) * 32, bias); -} -zaf_error_code_t CLSTControler::TriInX_getMode(int32_t index, SigProcessMode &mode) { // - if (index < 1 || index > 4) return kaf_ec_param_error; - uint32_t reakbak = 0; - DO_CMD(reg_read(kreg_trigger_in1_mode + (index - 1) * 32, reakbak)); - mode = SigProcessMode(reakbak); - return kaf_ec_success; -} -zaf_error_code_t CLSTControler::TriInX_getTriggerModeTriggerEdge(int32_t index, TriggerEdge &edge) { // - if (index < 1 || index > 4) return kaf_ec_param_error; - uint32_t val; - DO_CMD(reg_read(kreg_trigger_in1_trigger_mode_trigger_edge + (index - 1) * 32, val)); - edge = TriggerEdge(val); - return kaf_ec_success; -} -zaf_error_code_t CLSTControler::TriInX_getTriggerModeFreqDivision(int32_t index, uint32_t &division) { // - if (index < 1 || index > 4) return kaf_ec_param_error; - return reg_read(kreg_trigger_in1_trigger_mode_freq_division + (index - 1) * 32, division); -} -zaf_error_code_t CLSTControler::TriInX_getTriggerModeFreqMultiplication(int32_t index, uint32_t &multiplication) { // - if (index < 1 || index > 4) return kaf_ec_param_error; - return reg_read(kreg_trigger_in1_trigger_mode_freq_multiplication + (index - 1) * 32, multiplication); -} - -zaf_error_code_t CLSTControler::TriInX_readInSignalFreq(int32_t index, float &freq) { // - if (index < 1 || index > 4) return kaf_ec_param_error; - return readFreq(kreg_trigger_in1_in_signal_freq + (index - 1) * 32, freq); -} -zaf_error_code_t CLSTControler::TriInX_readOutSignalFreq(int32_t index, float &freq) { // - if (index < 1 || index > 4) return kaf_ec_param_error; - return readFreq(kreg_trigger_in1_out_signal_freq + (index - 1) * 32, freq); - return kaf_ec_success; -} -zaf_error_code_t CLSTControler::TriInX_getSequentialControlPluseCntMax(int32_t index, uint32_t &cnt) { - if (index < 1 || index > 4) return kaf_ec_param_error; - DO_CMD(reg_read(kreg_trigger_in1_sequential_control_pluse_cnt_max + (index - 1) * 32, cnt)); - cnt++; - return kaf_ec_success; -} - -/******************************************************************************* - * ???? * - *******************************************************************************/ - -zaf_error_code_t CLSTControler::LightSrcX_setTriSrc(int32_t index, InternalSig src) { // - if (index < 1 || index > 4) return kaf_ec_param_error; - return reg_write(kreg_light_ctrol_module1_source_select + (index - 1) * 32, src); -} -zaf_error_code_t CLSTControler::LightSrcX_setTriggerModePluseWidth(int32_t index, uint32_t width) { // - if (index < 1 || index > 4) return kaf_ec_param_error; - return reg_write(kreg_light_ctrol_module1_trigger_mode_pluse_width + (index - 1) * 32, width * 10); // 0.1us -} -zaf_error_code_t CLSTControler::LightSrcX_setTriggerModeFirstPluseOffset(int32_t index, uint32_t offset) { // - if (index < 1 || index > 4) return kaf_ec_param_error; - return reg_write(kreg_light_ctrol_module1_trigger_mode_first_pluse_offset + (index - 1) * 32, offset * 10); // 0.1us -} -zaf_error_code_t CLSTControler::LightSrcX_setLightIntensityDuty(int32_t index, float duty) { // - if (index < 1 || index > 4) return kaf_ec_param_error; - - uint32_t freqcnt = 0; - DO_CMD(reg_read(kreg_light_ctrol_module1_light_driver_freq_cnt + (index - 1) * 32, freqcnt)); - - uint32_t cnt = freqcnt * (duty / 100.0); - return reg_write(kreg_light_ctrol_module1_light_intensity_cnt + (index - 1) * 32, cnt); -} -zaf_error_code_t CLSTControler::LightSrcX_setLightDriverFreq(int32_t index, float freq) { // - - double T = 1.0 / freq; - double T_ns = T * 1000 * 1000 * 1000; - double cnt = T_ns / 10 + 0.5; // 100MHZ <=> 10ns - - uint32_t cnt_u32 = uint32_t(cnt); - return reg_write(kreg_light_ctrol_module1_light_driver_freq_cnt + (index - 1) * 32, cnt_u32); -} - -zaf_error_code_t CLSTControler::LightSrcX_getTriSrc(int32_t index, InternalSig &src) { // - if (index < 1 || index > 4) return kaf_ec_param_error; - uint32_t val; - DO_CMD(reg_read(kreg_light_ctrol_module1_source_select + (index - 1) * 32, val)); - src = InternalSig(val); - return kaf_ec_success; -} -zaf_error_code_t CLSTControler::LightSrcX_getTriggerModePluseWidth(int32_t index, uint32_t &width) { // - if (index < 1 || index > 4) return kaf_ec_param_error; - uint32_t val; - DO_CMD(reg_read(kreg_light_ctrol_module1_trigger_mode_pluse_width + (index - 1) * 32, val)); - width = val / 10; - return kaf_ec_success; -} -zaf_error_code_t CLSTControler::LightSrcX_getTriggerModeFirstPluseOffset(int32_t index, uint32_t &offset) { // - if (index < 1 || index > 4) return kaf_ec_param_error; - uint32_t val; - DO_CMD(reg_read(kreg_light_ctrol_module1_trigger_mode_first_pluse_offset + (index - 1) * 32, val)); - offset = val / 10; - return kaf_ec_success; -} -zaf_error_code_t CLSTControler::LightSrcX_getLightIntensityDuty(int32_t index, float &duty) { // - if (index < 1 || index > 4) return kaf_ec_param_error; - uint32_t freqcnt = 0; - DO_CMD(reg_read(kreg_light_ctrol_module1_light_driver_freq_cnt + (index - 1) * 32, freqcnt)); - - uint32_t cnt = 0; - DO_CMD(reg_read(kreg_light_ctrol_module1_light_intensity_cnt + (index - 1) * 32, cnt)); - - duty = (cnt * 100.0 / freqcnt); - return kaf_ec_success; -} -zaf_error_code_t CLSTControler::LightSrcX_getLightDriverFreq(int32_t index, float &freq) { // - return readFreq(kreg_light_ctrol_module1_light_driver_freq_cnt + (index - 1) * 32, freq); -} - -zaf_error_code_t CLSTControler::LightSrcX_readLightSrcErrorState(int32_t index, uint32_t &state) { // - if (index < 1 || index > 4) return kaf_ec_param_error; - return reg_read(kreg_light_ctrol_module1_light_src_error_state + (index - 1) * 32, state); -} -zaf_error_code_t CLSTControler::LightSrcX_readInSigFreqDetect(int32_t index, float &freq) { // - return readFreq(kreg_light_ctrol_module1_in_sig_freq_detect + (index - 1) * 32, freq); -} -zaf_error_code_t CLSTControler::LightSrcX_readOutSigFreqDetect(int32_t index, float &freq) { // - return readFreq(kreg_light_ctrol_module1_out_sig_freq_detect + (index - 1) * 32, freq); -} - -/******************************************************************************* - * * - *******************************************************************************/ - -zaf_error_code_t CLSTControler::ShutterX_setOutputCtrlMode(int32_t index, SigProcessMode mode) { // - return reg_write(kreg_ttl_output_module1_output_ctrl_mode + (index - 1) * 32, mode); -} -zaf_error_code_t CLSTControler::ShutterX_setLtEnBind(int32_t index, uint32_t lt_en_sig_index, uint32_t state) { // - uint32_t readbak_state = 0; - DO_CMD(reg_read(kreg_ttl_output_module1_lt_en_bind + (index - 1) * 32, readbak_state)); - if (state == 1) { - readbak_state |= (1 << (lt_en_sig_index - 1)); - } else { - readbak_state &= ~(1 << (lt_en_sig_index - 1)); - } - DO_CMD(reg_write(kreg_ttl_output_module1_lt_en_bind + (index - 1) * 32, readbak_state)); - return kaf_ec_success; -} -zaf_error_code_t CLSTControler::ShutterX_setLtEnOffset(int32_t index, uint32_t offset) { // - return reg_write(kreg_ttl_output_module1_lt_en_offset + (index - 1) * 32, offset * 10); // 0.1us -} -zaf_error_code_t CLSTControler::ShutterX_setInSigSelect(int32_t index, InternalSig sig) { // - return reg_write(kreg_ttl_output_module1_in_sig_select + (index - 1) * 32, sig); -} - -zaf_error_code_t CLSTControler::ShutterX_setOutPolarityReversal(int32_t index, uint32_t reversal) { return reg_write(kreg_ttl_output_module1_out_polarity_reversal + (index - 1) * 32, reversal); } - -zaf_error_code_t CLSTControler::ShutterX_getOutputCtrlMode(int32_t index, SigProcessMode &mode) { // - uint32_t val; - DO_CMD(reg_read(kreg_ttl_output_module1_output_ctrl_mode + (index - 1) * 32, val)); - mode = SigProcessMode(val); - return kaf_ec_success; -} -zaf_error_code_t CLSTControler::ShutterX_getLtEnBind(int32_t index, uint32_t lt_en_sig_index, uint32_t &state) { // - uint32_t readbak_state = 0; - DO_CMD(reg_read(kreg_ttl_output_module1_lt_en_bind + (index - 1) * 32, readbak_state)); - state = (readbak_state >> (lt_en_sig_index - 1)) & 0x01; - return kaf_ec_success; -} -zaf_error_code_t CLSTControler::ShutterX_getLtEnOffset(int32_t index, uint32_t &offset) { // - uint32_t val; - DO_CMD(reg_read(kreg_ttl_output_module1_lt_en_offset + (index - 1) * 32, val)); - offset = val / 10; - return kaf_ec_success; -} -zaf_error_code_t CLSTControler::ShutterX_getInSigSelect(int32_t index, InternalSig &sig) { // - uint32_t val; - DO_CMD(reg_read(kreg_ttl_output_module1_in_sig_select + (index - 1) * 32, val)); - sig = InternalSig(val); - return kaf_ec_success; -} - -zaf_error_code_t CLSTControler::ShutterX_getOutPolarityReversal(int32_t index, uint32_t &reversal) { - DO_CMD(reg_read(kreg_ttl_output_module1_out_polarity_reversal + (index - 1) * 32, reversal)); - return kaf_ec_success; -} diff --git a/src/camera_light_src_timing_controller/clst_controler.hpp b/src/camera_light_src_timing_controller/clst_controler.hpp deleted file mode 100644 index 4bcb9ee..0000000 --- a/src/camera_light_src_timing_controller/clst_controler.hpp +++ /dev/null @@ -1,177 +0,0 @@ -#pragma once -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "clst_controler_sig_type.hpp" -#include "zaf_protocol/zaf_protocol.h" - -#define SDK_VERSION 1 - -namespace iflytop { -namespace clst { -using namespace std; - -typedef enum { - kuart_raw_tx, - kuart_raw_rx, -} uart_message_type_t; - -typedef function device_state_cb_t; -typedef function raw_data_cb_t; - -class IDataChannel { - public: - virtual ~IDataChannel(){}; - virtual bool isOpen() = 0; - virtual bool send(const uint8_t *data, size_t len) = 0; - virtual void regRxListener(function cb) = 0; -}; - -class RxReceiptContext { - public: - bool waittingForReceipt; - bool receiptIsReady; - uint16_t waittingIndex; - uint8_t receipt[1024]; - size_t receiptLen; -}; - -class CLSTControler { - CLSTControler() {} - - IDataChannel *m_channel = nullptr; - - uint8_t m_rxcache[1024]; - size_t m_rxlen = 0; - - mutex lock_; - - unique_ptr m_thread; - - RxReceiptContext m_rxReceiptContext; - mutex m_rxReceiptContext_lock; - mutex m_tx_lock; - - raw_data_cb_t m_raw_data_cb; - uint16_t txindex = 0; - - public: - static CLSTControler *ins(); - - void initialize(IDataChannel *channel); - void regRawDataListener(raw_data_cb_t cb); - - public: - bool ping(); - zaf_error_code_t factoryReset(); - zaf_error_code_t reboot(); - zaf_error_code_t storageConfigs(); - - void initDevice(); - - public: - zaf_error_code_t reg_write(uint32_t regadd, uint32_t regvalue, uint32_t ®backvalue, int32_t overtime_ms = 30); - zaf_error_code_t reg_write(uint32_t regadd, uint32_t regvalue) { - uint32_t regbackvalue; - return reg_write(regadd, regvalue, regbackvalue, 30); - } - zaf_error_code_t reg_read(uint32_t regadd, uint32_t ®value, int32_t overtime_ms = 30); - uint32_t reg_read_v2(uint32_t regadd); - - public: - /******************************************************************************* - * 内部触发源 * - *******************************************************************************/ - zaf_error_code_t InterClk_setFreq(float freq); - zaf_error_code_t InterClk_setPluseCnt(uint32_t cnt); - zaf_error_code_t InterClk_setSeqCtrlPluseCntMax(uint32_t cnt); - - zaf_error_code_t InterClk_getFreq(float &freq); - zaf_error_code_t InterClk_getPluseCnt(uint32_t &cnt); - zaf_error_code_t InterClk_getSeqCtrlPluseCntMax(uint32_t &cnt); - - zaf_error_code_t InterClk_readTriOutSignalFreq(float &freq); - - zaf_error_code_t InterClk_trigger(); - zaf_error_code_t InterClk_stop(); - - /******************************************************************************* - * TTL外部触发源 * - *******************************************************************************/ - zaf_error_code_t TriInX_setSrcSelect(int32_t index, ExtTriggerSrcType src); // 0 - zaf_error_code_t TriInX_setFileterCoefficient(int32_t index, uint32_t coefficient); - zaf_error_code_t TriInX_setFreqDetectBias(int32_t index, uint32_t bias); - zaf_error_code_t TriInX_setMode(int32_t index, SigProcessMode mode); - zaf_error_code_t TriInX_setTriggerModeTriggerEdge(int32_t index, TriggerEdge edge); - zaf_error_code_t TriInX_setTriggerModeFreqDivision(int32_t index, uint32_t division); - zaf_error_code_t TriInX_setTriggerModeFreqMultiplication(int32_t index, uint32_t multiplication); - zaf_error_code_t TriInX_setSequentialControlPluseCntMax(int32_t index, uint32_t cnt); - - zaf_error_code_t TriInX_getSrcSelect(int32_t index, ExtTriggerSrcType &src); - zaf_error_code_t TriInX_getFileterCoefficient(int32_t index, uint32_t &coefficient); - zaf_error_code_t TriInX_getFreqDetectBias(int32_t index, uint32_t &bias); - zaf_error_code_t TriInX_getMode(int32_t index, SigProcessMode &mode); - zaf_error_code_t TriInX_getTriggerModeTriggerEdge(int32_t index, TriggerEdge &edge); - zaf_error_code_t TriInX_getTriggerModeFreqDivision(int32_t index, uint32_t &division); - zaf_error_code_t TriInX_getTriggerModeFreqMultiplication(int32_t index, uint32_t &multiplication); - zaf_error_code_t TriInX_getSequentialControlPluseCntMax(int32_t index, uint32_t& cnt); - - - zaf_error_code_t TriInX_readInSignalFreq(int32_t index, float &freq); - zaf_error_code_t TriInX_readOutSignalFreq(int32_t index, float &freq); - - /******************************************************************************* - * 光源控制 * - *******************************************************************************/ - zaf_error_code_t LightSrcX_setTriSrc(int32_t index, InternalSig src); - zaf_error_code_t LightSrcX_setTriggerModePluseWidth(int32_t index, uint32_t width); - zaf_error_code_t LightSrcX_setTriggerModeFirstPluseOffset(int32_t index, uint32_t offset); - zaf_error_code_t LightSrcX_setLightIntensityDuty(int32_t index, float duty); - zaf_error_code_t LightSrcX_setLightDriverFreq(int32_t index, float freq); - - zaf_error_code_t LightSrcX_getTriSrc(int32_t index, InternalSig &src); - zaf_error_code_t LightSrcX_getTriggerModePluseWidth(int32_t index, uint32_t &width); - zaf_error_code_t LightSrcX_getTriggerModeFirstPluseOffset(int32_t index, uint32_t &offset); - zaf_error_code_t LightSrcX_getLightIntensityDuty(int32_t index, float &duty); - zaf_error_code_t LightSrcX_getLightDriverFreq(int32_t index, float &freq); - - zaf_error_code_t LightSrcX_readLightSrcErrorState(int32_t index, uint32_t &state); - zaf_error_code_t LightSrcX_readInSigFreqDetect(int32_t index, float &freq); - zaf_error_code_t LightSrcX_readOutSigFreqDetect(int32_t index, float &freq); - - /******************************************************************************* - * 快门控制 * - *******************************************************************************/ - - zaf_error_code_t ShutterX_setOutputCtrlMode(int32_t index, SigProcessMode mode); - zaf_error_code_t ShutterX_setLtEnBind(int32_t index, uint32_t lt_en_sig_index, uint32_t state); - zaf_error_code_t ShutterX_setLtEnOffset(int32_t index, uint32_t offset); - zaf_error_code_t ShutterX_setInSigSelect(int32_t index, InternalSig sig); - zaf_error_code_t ShutterX_setOutPolarityReversal(int32_t index, uint32_t reversal); - - zaf_error_code_t ShutterX_getOutputCtrlMode(int32_t index, SigProcessMode &mode); - zaf_error_code_t ShutterX_getLtEnBind(int32_t index, uint32_t lt_en_sig_index, uint32_t &state); - zaf_error_code_t ShutterX_getLtEnOffset(int32_t index, uint32_t &offset); - zaf_error_code_t ShutterX_getInSigSelect(int32_t index, InternalSig &sig); - zaf_error_code_t ShutterX_getOutPolarityReversal(int32_t index, uint32_t &reversal); - - private: - void processRxData(uint8_t *rx, uint32_t rxlen); - void processRxPacket(zaf_packet_header_t *packet); - - zaf_error_code_t sendPacket(zaf_packet_header_t *packet, uint32_t len, uint32_t overtime); - zaf_error_code_t readFreq(uint32_t reg, float &freq); -}; - -} // namespace clst -} // namespace iflytop diff --git a/src/camera_light_src_timing_controller/clst_controler_sig_type.cpp b/src/camera_light_src_timing_controller/clst_controler_sig_type.cpp deleted file mode 100644 index 2d87637..0000000 --- a/src/camera_light_src_timing_controller/clst_controler_sig_type.cpp +++ /dev/null @@ -1,57 +0,0 @@ -#include "clst_controler_sig_type.hpp" - -using namespace iflytop; -using namespace clst; - -map ExtTriggerSrcType::emap = { - {"OPTOCOUPLER_INPUT", OPTOCOUPLER_INPUT}, // - {"DIFF_INPUT", DIFF_INPUT}, // -}; - -map TriggerEdge::emap = { - {"RISING", RISING}, // - {"FALLING", FALLING}, // - {"BOTH", BOTH} // -}; - -map SigProcessMode::emap = { - {"TRIGGER_MODE", TRIGGER_MODE}, // - {"TRANSPARENT_MODE", TRANSPARENT_MODE}, // - {"BIND_MODE", BIND_MODE} // - -}; - -map InternalSig::emap = { - {"LOGIC0", LOGIC0}, // - {"LOGIC1", LOGIC1}, // - - {"INTERNAL_TRIGGER", INTERNAL_TRIGGER}, // - {"INTERNAL_TRIGGER_I1", INTERNAL_TRIGGER_I1}, // - {"INTERNAL_TRIGGER_I2", INTERNAL_TRIGGER_I2}, // - {"INTERNAL_TRIGGER_I3", INTERNAL_TRIGGER_I3}, // - {"INTERNAL_TRIGGER_I4", INTERNAL_TRIGGER_I4}, // - - {"EXT_TRIGGER_1", EXT_TRIGGER_1}, // - {"EXT_TRIGGER_1_I1", EXT_TRIGGER_1_I1}, // - {"EXT_TRIGGER_1_I2", EXT_TRIGGER_1_I2}, // - {"EXT_TRIGGER_1_I3", EXT_TRIGGER_1_I3}, // - {"EXT_TRIGGER_1_I4", EXT_TRIGGER_1_I4}, // - - {"EXT_TRIGGER_2", EXT_TRIGGER_2}, // - {"EXT_TRIGGER_2_I1", EXT_TRIGGER_2_I1}, // - {"EXT_TRIGGER_2_I2", EXT_TRIGGER_2_I2}, // - {"EXT_TRIGGER_2_I3", EXT_TRIGGER_2_I3}, // - {"EXT_TRIGGER_2_I4", EXT_TRIGGER_2_I4}, // - - {"EXT_TRIGGER_3", EXT_TRIGGER_3}, // - {"EXT_TRIGGER_3_I1", EXT_TRIGGER_3_I1}, // - {"EXT_TRIGGER_3_I2", EXT_TRIGGER_3_I2}, // - {"EXT_TRIGGER_3_I3", EXT_TRIGGER_3_I3}, // - {"EXT_TRIGGER_3_I4", EXT_TRIGGER_3_I4}, // - - {"EXT_TRIGGER_4", EXT_TRIGGER_4}, // - {"EXT_TRIGGER_4_I1", EXT_TRIGGER_4_I1}, // - {"EXT_TRIGGER_4_I2", EXT_TRIGGER_4_I2}, // - {"EXT_TRIGGER_4_I3", EXT_TRIGGER_4_I3}, // - {"EXT_TRIGGER_4_I4", EXT_TRIGGER_4_I4}, // -}; \ No newline at end of file diff --git a/src/camera_light_src_timing_controller/clst_controler_sig_type.hpp b/src/camera_light_src_timing_controller/clst_controler_sig_type.hpp deleted file mode 100644 index 333c2ed..0000000 --- a/src/camera_light_src_timing_controller/clst_controler_sig_type.hpp +++ /dev/null @@ -1,169 +0,0 @@ -#pragma once -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "zaf_protocol/zaf_protocol.h" - -namespace iflytop { -namespace clst { -using namespace std; - -class ExtTriggerSrcType { - public: - typedef enum { - OPTOCOUPLER_INPUT = 0, // 光耦输入 - DIFF_INPUT = 1, // 差分输入 - } EnumType_t; - - private: - static map emap; - - public: - EnumType_t val; - - ExtTriggerSrcType() { val = OPTOCOUPLER_INPUT; } - ExtTriggerSrcType(EnumType_t e) { val = e; } - ExtTriggerSrcType(uint32_t e) { val = (EnumType_t)e; } - ExtTriggerSrcType(string string) { emap.find(string) != emap.end() ? val = emap[string] : val = OPTOCOUPLER_INPUT; } - string toString() { return toString(val); } - string toString(EnumType_t ein) { - for (auto &item : emap) { - if (item.second == ein) return item.first; - } - return "unkown"; - } - uint32_t getVal() { return val; } - operator uint32_t() { return val; } -}; - -class TriggerEdge { - public: - typedef enum { - RISING = 1, // 上升沿触发 - FALLING = 0, // 下降沿触发 - BOTH = 2, // 上升沿和下降沿触发 - } EnumType_t; - - private: - static map emap; - - public: - EnumType_t val; - - TriggerEdge() { val = RISING; } - TriggerEdge(EnumType_t e) { val = e; } - TriggerEdge(uint32_t e) { val = (EnumType_t)e; } - TriggerEdge(string string) { emap.find(string) != emap.end() ? val = emap[string] : val = RISING; } - string toString() { return toString(val); } - string toString(EnumType_t ein) { - for (auto &item : emap) { - if (item.second == ein) return item.first; - } - return "unkown"; - } - uint32_t getVal() { return val; } - operator uint32_t() { return val; } -}; - -class SigProcessMode { - public: - typedef enum { - TRIGGER_MODE = 0, // 触发模式 - TRANSPARENT_MODE = 1, // 透传模式 - BIND_MODE = 2 // 绑定模式 - } EnumType_t; - - private: - static map emap; - - public: - EnumType_t val; - - SigProcessMode() { val = TRIGGER_MODE; } - SigProcessMode(EnumType_t e) { val = e; } - SigProcessMode(uint32_t e) { val = (EnumType_t)e; } - SigProcessMode(string string) { emap.find(string) != emap.end() ? val = emap[string] : val = TRIGGER_MODE; } - string toString() { return toString(val); } - string toString(EnumType_t ein) { - for (auto &item : emap) { - if (item.second == ein) return item.first; - } - return "unkown"; - } - uint32_t getVal() { return val; } - operator uint32_t() { return val; } -}; - -class InternalSig { - public: - typedef enum { - - LOGIC0 = 0, - LOGIC1 = 1, - - INTERNAL_TRIGGER = 2, - INTERNAL_TRIGGER_I1 = 3, - INTERNAL_TRIGGER_I2 = 4, - INTERNAL_TRIGGER_I3 = 5, - INTERNAL_TRIGGER_I4 = 6, - - EXT_TRIGGER_1 = 7, - EXT_TRIGGER_1_I1 = 8, - EXT_TRIGGER_1_I2 = 9, - EXT_TRIGGER_1_I3 = 10, - EXT_TRIGGER_1_I4 = 11, - - EXT_TRIGGER_2 = 12, - EXT_TRIGGER_2_I1 = 13, - EXT_TRIGGER_2_I2 = 14, - EXT_TRIGGER_2_I3 = 15, - EXT_TRIGGER_2_I4 = 16, - - EXT_TRIGGER_3 = 17, - EXT_TRIGGER_3_I1 = 18, - EXT_TRIGGER_3_I2 = 19, - EXT_TRIGGER_3_I3 = 20, - EXT_TRIGGER_3_I4 = 21, - - EXT_TRIGGER_4 = 22, - EXT_TRIGGER_4_I1 = 23, - EXT_TRIGGER_4_I2 = 24, - EXT_TRIGGER_4_I3 = 25, - EXT_TRIGGER_4_I4 = 26, - - } EnumType_t; - - private: - static map emap; - - public: - EnumType_t val; - - InternalSig() { val = LOGIC0; } - InternalSig(EnumType_t e) { val = e; } - InternalSig(uint32_t e) { val = (EnumType_t)e; } - InternalSig(string string) { emap.find(string) != emap.end() ? val = emap[string] : val = LOGIC0; } - string toString() { return toString(val); } - string toString(EnumType_t ein) { - for (auto &item : emap) { - if (item.second == ein) return item.first; - } - return "unkown"; - } - - uint32_t getVal() { return val; } - operator uint32_t() { return val; } -}; - -} // namespace clst -} // namespace iflytop \ No newline at end of file diff --git a/src/camera_light_src_timing_controller/qt_serial_datachannel.cpp b/src/camera_light_src_timing_controller/qt_serial_datachannel.cpp deleted file mode 100644 index b5e86da..0000000 --- a/src/camera_light_src_timing_controller/qt_serial_datachannel.cpp +++ /dev/null @@ -1,155 +0,0 @@ -#include "qt_serial_datachannel.hpp" - -// - -#include -#include - -#pragma comment(lib, "ws2_32.lib") - -#include "logger.hpp" - -using namespace iflytop; -using namespace std; -using namespace clst; - -#define TAG "QTDataChannel" - -void QTDataChannel::init() { - m_thread.reset(new thread([this]() { - while (true) { - if (m_isOpen) { - uint8_t rx[1024] = {0}; - int rx_cnt = com_receive(rx, 1024); - if (rx_cnt != 0) { - // ZLOGI(TAG, "rx %d bytes", rx_cnt); - if (m_rxcb) m_rxcb(rx, rx_cnt); - } - this_thread::sleep_for(chrono::microseconds(100)); - } else { - this_thread::sleep_for(chrono::microseconds(10000)); - } - } - })); -} -bool QTDataChannel::open() { - char portnamebuf[256] = {0}; - sprintf(portnamebuf, "\\\\.\\%s", m_name.c_str()); - m_CommHandler = CreateFileA(portnamebuf, // port name - GENERIC_READ | GENERIC_WRITE, // Read/Write - 0, // No Sharing - NULL, // No Security - OPEN_EXISTING, // Open existing port only - 0, // Non Overlapped I/O - NULL); // Null for Comm Devices - if (m_CommHandler == INVALID_HANDLE_VALUE) { - ZLOGI(TAG, "Error in opening serial port"); - return false; - } - DCB p; - memset(&p, 0, sizeof(p)); - p.DCBlength = sizeof(p); - p.BaudRate = m_baudRate; // 波特率 - - switch (m_dataBits) { - case QSerialPort::Data5: - p.ByteSize = 5; - break; - case QSerialPort::Data6: - p.ByteSize = 6; - break; - case QSerialPort::Data7: - p.ByteSize = 7; - break; - case QSerialPort::Data8: - p.ByteSize = 8; - break; - default: - p.ByteSize = 8; - break; - } - - // QSerialPort::NoParity = 0, - // QSerialPort::EvenParity = 2, - // QSerialPort::OddParity = 3, - // QSerialPort::SpaceParity = 4, - // QSerialPort::MarkParity = 5, - // QSerialPort::UnknownParity = -1 - - switch (m_parity) // 校验位 - { - case QSerialPort::NoParity: - p.Parity = NOPARITY; // 无校验 - break; - case QSerialPort::EvenParity: - p.Parity = EVENPARITY; // 奇校验 - break; - case QSerialPort::OddParity: - p.Parity = ODDPARITY; // 偶校验 - break; - case QSerialPort::MarkParity: - p.Parity = MARKPARITY; // 标记校验 - break; - default: - p.Parity = NOPARITY; // 无校验 - } - - switch (m_stopBits) // 停止位 - { - case QSerialPort::OneStop: - p.StopBits = ONESTOPBIT; // 1位停止位 - break; - case QSerialPort::OneAndHalfStop: - p.StopBits = TWOSTOPBITS; // 2位停止位 - break; - case QSerialPort::TwoStop: - p.StopBits = ONE5STOPBITS; // 1.5位停止位 - break; - default: - p.StopBits = ONESTOPBIT; // 无校验 - } - - if (!SetCommState(m_CommHandler, &p)) { - // 设置参数失败 - CloseHandle(m_CommHandler); - return false; - } - m_isOpen = true; - return true; -} - -void QTDataChannel::close() { - CloseHandle(m_CommHandler); - m_isOpen = false; -} - -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*为异步发送 - return dwBytesWrite; -} -void QTDataChannel::regRxListener(function cb) { m_rxcb = 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; // 读时间常量 - SetCommTimeouts(m_CommHandler, &TimeOuts); - - // PurgeComm(m_CommHandler, PURGE_RXCLEAR); - - DWORD wCount = rxbufsize; // 成功读取的数据字节数 - BOOL bReadStat = ReadFile(m_CommHandler, // 串口句柄 - rxbuf, // 数据首地址 - wCount, // 要读取的数据最大字节数 - &wCount, // DWORD*,用来接收返回成功读取的数据字节数 - NULL); - return wCount; -} diff --git a/src/camera_light_src_timing_controller/qt_serial_datachannel.hpp b/src/camera_light_src_timing_controller/qt_serial_datachannel.hpp deleted file mode 100644 index 4c54db6..0000000 --- a/src/camera_light_src_timing_controller/qt_serial_datachannel.hpp +++ /dev/null @@ -1,79 +0,0 @@ -#pragma once - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -// - -#include -// -#include -// -#include -#include -// -#include "clst_controler.hpp" -#include "zqthread.hpp" - -#define SDK_VERSION 1 - -namespace iflytop { -namespace clst { -using namespace std; -// QT_CHARTS_USE_NAMESPACE - -typedef function device_state_cb_t; - -class QTDataChannel : public IDataChannel { - function m_rxcb; - - QSerialPort::DataBits m_dataBits; - QSerialPort::Parity m_parity; - QSerialPort::StopBits m_stopBits; - QSerialPort::FlowControl m_flowControl; - string m_name; - - unique_ptr m_thread; - - uint32_t m_baudRate; - HANDLE m_CommHandler; - - bool m_isOpen = false; - - public: - void init(); - - virtual bool isOpen() override; - virtual bool send(const uint8_t *data, size_t len) override; - virtual void regRxListener(function cb) override; - - bool open(); - void close(); - - bool setBaudRate(qint32 baudRate) { m_baudRate = baudRate; } - qint32 baudRate() const { return m_baudRate; } - - bool setPortName(string name) { m_name = name; } - bool setDataBits(QSerialPort::DataBits dataBits) { m_dataBits = dataBits; } - bool setParity(QSerialPort::Parity parity) { m_parity = parity; } - bool setStopBits(QSerialPort::StopBits stopBits) { m_stopBits = stopBits; } - bool setFlowControl(QSerialPort::FlowControl flowControl) { m_flowControl = flowControl; } - - QSerialPort::DataBits dataBits() const { return m_dataBits; } - QSerialPort::Parity parity() const { return m_parity; } - QSerialPort::StopBits stopBits() const { return m_stopBits; } - QSerialPort::FlowControl flowControl() const { return m_flowControl; } - - private: - int com_receive(uint8_t *rxbuf, int rxbufsize); -}; -} // namespace clst -} // namespace iflytop diff --git a/zaf_protocol b/zaf_protocol deleted file mode 160000 index c6d92f6..0000000 --- a/zaf_protocol +++ /dev/null @@ -1 +0,0 @@ -Subproject commit c6d92f6fde665a4821dfdf968a84b2d987e441e6