diff --git a/mainwindow.cpp b/mainwindow.cpp index d78800f..13c126a 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -123,15 +123,42 @@ void MainWindow::updatePage() { 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); + } } void MainWindow::refreshReadonlyPage() { zaf_error_code_t ecode; + if (!G_QTDataChannel.isOpen()) { + return; + } + { float TriOutSignalFreq; - ecode = m_clstc->InterClk_readTriOutSignalFreq(TriOutSignalFreq); - if (ecode != kaf_ec_success) return; - + DO(m_clstc->InterClk_readTriOutSignalFreq(TriOutSignalFreq)); ui->InterClk_TriOutSignalFreq_Text->setText(QString::number(TriOutSignalFreq, 'f', 2)); } @@ -152,9 +179,32 @@ void MainWindow::refreshReadonlyPage() { #undef UPDATE } + + // 刷新光源时序控制页面 + { + float infreq; + float outfreq; + uint32_t state; + +#define UPDATE(index) \ + DO(m_clstc->LightSrcX_readInSigFreqDetect(index, infreq)); \ + DO(m_clstc->LightSrcX_readOutSigFreqDetect(index, outfreq)); \ + DO(m_clstc->LightSrcX_readLightSrcErrorState(index, 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); + } } void MainWindow::refreshPage() { + /******************************************************************************* + * 刷新内部触发源页面 * + *******************************************************************************/ { float Freq; uint32_t PluseCnt; @@ -171,7 +221,9 @@ void MainWindow::refreshPage() { ui->InterClk_SeqCtrlPluseCntMax_Text->setText(QString::number(SeqCtrlPluseCntMax)); ui->InterClk_TriOutSignalFreq_Text->setText(QString::number(TriOutSignalFreq, 'f', 2)); } - + /******************************************************************************* + * 刷新外部触发源页面 * + *******************************************************************************/ { ExtTriggerSrcType src; SigProcessMode mode; @@ -210,6 +262,41 @@ void MainWindow::refreshPage() { #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); + } } void MainWindow::constructUI() { @@ -374,6 +461,74 @@ void MainWindow::constructUI() { 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(true); + ui->LightSrcX_LightDriverFreq_2->setDisabled(true); + ui->LightSrcX_LightDriverFreq_3->setDisabled(true); + ui->LightSrcX_LightDriverFreq_4->setDisabled(true); } MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { diff --git a/mainwindow.ui b/mainwindow.ui index 01d522f..b2680ca 100644 --- a/mainwindow.ui +++ b/mainwindow.ui @@ -255,6 +255,20 @@ + + + + 触发(内部) + + + + + + + 停止(内部) + + + @@ -426,7 +440,7 @@ - + @@ -435,7 +449,7 @@ - 0 + 1 true @@ -1915,7 +1929,7 @@ 20 10 300 - 191 + 151 @@ -1998,13 +2012,6 @@ - - - - 触发 - - - @@ -2075,13 +2082,6 @@ - - - - 停止 - - - @@ -2089,6 +2089,1242 @@ 光源时序配置 + + + + + + 400 + 16777215 + + + + 光源3 + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 16777215 + 25 + + + + 输入触发频率(HZ) + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 16777215 + 25 + + + + 触发源 + + + + + + + Qt::Horizontal + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 16777215 + 25 + + + + 脉冲偏移(100ns) + + + + + + + + 0 + 25 + + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 16777215 + 25 + + + + 脉冲宽度(100ns) + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 16777215 + 25 + + + + 光源亮度(%) + + + + + + + + 0 + 25 + + + + + + + + + 0 + 25 + + + + + + + + + 0 + 25 + + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 16777215 + 25 + + + + 光源驱动器状态 + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 16777215 + 25 + + + + 光源驱动频率(HZ) + + + + + + + + 0 + 25 + + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 16777215 + 25 + + + + 输出频率(HZ) + + + + + + + + 0 + 25 + + + + + + + + + 0 + 25 + + + + + + + + + 0 + 25 + + + + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + 400 + 16777215 + + + + 光源2 + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 16777215 + 25 + + + + 输入触发频率(HZ) + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 16777215 + 25 + + + + 触发源 + + + + + + + Qt::Horizontal + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 16777215 + 25 + + + + 脉冲偏移(100ns) + + + + + + + + 0 + 25 + + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 16777215 + 25 + + + + 脉冲宽度(100ns) + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 16777215 + 25 + + + + 光源亮度(%) + + + + + + + + 0 + 25 + + + + + + + + + 0 + 25 + + + + + + + + + 0 + 25 + + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 16777215 + 25 + + + + 光源驱动器状态 + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 16777215 + 25 + + + + 光源驱动频率(HZ) + + + + + + + + 0 + 25 + + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 16777215 + 25 + + + + 输出频率(HZ) + + + + + + + + 0 + 25 + + + + + + + + + 0 + 25 + + + + + + + + + 0 + 25 + + + + + + + + + + + + 400 + 16777215 + + + + 光源4 + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 16777215 + 25 + + + + 输入触发频率(HZ) + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 16777215 + 25 + + + + 触发源 + + + + + + + Qt::Horizontal + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 16777215 + 25 + + + + 脉冲偏移(100ns) + + + + + + + + 0 + 25 + + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 16777215 + 25 + + + + 脉冲宽度(100ns) + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 16777215 + 25 + + + + 光源亮度(%) + + + + + + + + 0 + 25 + + + + + + + + + 0 + 25 + + + + + + + + + 0 + 25 + + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 16777215 + 25 + + + + 光源驱动器状态 + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 16777215 + 25 + + + + 光源驱动频率(HZ) + + + + + + + + 0 + 25 + + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 16777215 + 25 + + + + 输出频率(HZ) + + + + + + + + 0 + 25 + + + + + + + + + 0 + 25 + + + + + + + + + 0 + 25 + + + + + + + + + + + + 400 + 16777215 + + + + 光源1 + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 16777215 + 25 + + + + 输入触发频率(HZ) + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 16777215 + 25 + + + + 触发源 + + + + + + + Qt::Horizontal + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 16777215 + 25 + + + + 脉冲偏移(100ns) + + + + + + + + 0 + 25 + + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 16777215 + 25 + + + + 脉冲宽度(100ns) + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 16777215 + 25 + + + + 光源亮度(%) + + + + + + + + 0 + 25 + + + + + + + + + 0 + 25 + + + + + + + + + 0 + 25 + + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 16777215 + 25 + + + + 光源驱动器状态 + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 16777215 + 25 + + + + 光源驱动频率(HZ) + + + + + + + + 0 + 25 + + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 16777215 + 25 + + + + 输出频率(HZ) + + + + + + + + 0 + 25 + + + + + + + + + 0 + 25 + + + + + + + + + 0 + 25 + + + + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + diff --git a/src/camera_light_src_timing_controller/clst_controler.cpp b/src/camera_light_src_timing_controller/clst_controler.cpp index c6dbb16..530008d 100644 --- a/src/camera_light_src_timing_controller/clst_controler.cpp +++ b/src/camera_light_src_timing_controller/clst_controler.cpp @@ -42,7 +42,7 @@ void CLSTControler::initialize(IDataChannel *channel) { // uint8_t rx_process_cache[1024]; uint32_t rx_process_cache_len; while (true) { - this_thread::sleep_for(chrono::milliseconds(5)); + this_thread::sleep_for(chrono::milliseconds(3)); { lock_guard lock(lock_); @@ -532,7 +532,7 @@ zaf_error_code_t CLSTControler::LightSrcX_setLightIntensityDuty(int32_t index, f DO_CMD(reg_read(kreg_light_ctrol_module1_light_driver_freq_cnt + (index - 1) * 32, freqcnt)); uint32_t cnt = freqcnt * (duty / 100.0); - return kaf_ec_success; + 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) { // diff --git a/src/camera_light_src_timing_controller/qt_serial_datachannel.cpp b/src/camera_light_src_timing_controller/qt_serial_datachannel.cpp index 9e7549b..294287f 100644 --- a/src/camera_light_src_timing_controller/qt_serial_datachannel.cpp +++ b/src/camera_light_src_timing_controller/qt_serial_datachannel.cpp @@ -26,7 +26,7 @@ void QTDataChannel::init() { if (m_rxcb) m_rxcb(rx, rx_cnt); } } - this_thread::sleep_for(chrono::milliseconds(1)); + this_thread::sleep_for(chrono::microseconds(100)); } })); }