From 82178385b72f00466b1fd293a47cd3c24792af45 Mon Sep 17 00:00:00 2001 From: zhaohe Date: Wed, 27 Mar 2024 14:44:07 +0800 Subject: [PATCH] update --- .vscode/settings.json | 3 +- libxsync | 2 +- mainwindow.cpp | 293 ++++-- mainwindow.h | 6 +- mainwindow.ui | 2391 +++++++++++++++++++++++++++++-------------------- 5 files changed, 1654 insertions(+), 1041 deletions(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index b4e875c..3b20dbb 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -82,7 +82,8 @@ "qcategoryaxis": "cpp", "qaction": "cpp", "qthread": "cpp", - "qlineseries": "cpp" + "qlineseries": "cpp", + "qsplineseries": "cpp" }, "files.autoGuessEncoding": true, } \ No newline at end of file diff --git a/libxsync b/libxsync index 66f7b45..5a72f42 160000 --- a/libxsync +++ b/libxsync @@ -1 +1 @@ -Subproject commit 66f7b456ad321d5c0d02472444e2a5a18001abc6 +Subproject commit 5a72f427d6aaeae4d1ebd58797c07e02275e5769 diff --git a/mainwindow.cpp b/mainwindow.cpp index 82f4b74..ec36c08 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -322,8 +322,6 @@ void MainWindow::construct_reg_table() { // push_reg(ui->gridLayoutWidget, regoff++, "record_sig_gen_ttlin_trigger_sig_source", reg::record_sig_gen_ttlin_trigger_sig_source, 0, kreg_val_type_decimal); push_reg(ui->gridLayoutWidget, regoff++, "record_sig_gen_ttlin_trigger_level", reg::record_sig_gen_ttlin_trigger_level, 0, kreg_val_type_decimal); - push_reg(ui->gridLayoutWidget, regoff++, "record_sig_gen_exposure_time", reg::record_sig_gen_exposure_time, 0, kreg_val_type_decimal); - push_reg(ui->gridLayoutWidget, regoff++, "record_sig_gen_exposure_offset_time", reg::record_sig_gen_exposure_offset_time, 0, kreg_val_type_decimal); push_reg(ui->gridLayoutWidget, regoff++, "record_sig_gen_manual_ctrl", reg::record_sig_gen_manual_ctrl, 0, kreg_val_type_decimal); push_reg(ui->gridLayoutWidget, regoff++, "record_sig_gen_timecode_snapshot0", reg::record_sig_gen_timecode_snapshot0, 0, kreg_val_type_decimal); push_reg(ui->gridLayoutWidget, regoff++, "record_sig_gen_timecode_snapshot1", reg::record_sig_gen_timecode_snapshot1, 0, kreg_val_type_decimal); @@ -331,6 +329,11 @@ void MainWindow::construct_reg_table() { // push_reg(ui->gridLayoutWidget, regoff++, "camera_sync_module", reg::camera_sync_module, 0, kreg_val_type_hex); push_reg(ui->gridLayoutWidget, regoff++, "camera_sync_pulse_mode_valid_len", reg::camera_sync_pulse_mode_valid_len, 0, kreg_val_type_decimal); + push_reg(ui->gridLayoutWidget, regoff++, "delayer_module", reg::delayer_module, 0, kreg_val_type_hex); + push_reg(ui->gridLayoutWidget, regoff++, "delayer_delay_sig_index", reg::delayer_delay_sig_index, 0, kreg_val_type_decimal); + push_reg(ui->gridLayoutWidget, regoff++, "delayer_delay_us", reg::delayer_delay_us, 0, kreg_val_type_decimal); + + auto qrect = ui->gridLayoutWidget->geometry(); qrect.setHeight(31 * regoff - 1); @@ -381,6 +384,9 @@ void MainWindow::UI_TTLPageConstruct() { list.push_back(QString::fromStdString(SignalType2Str(SIGNAL_SYS_TIMECODE_FREQ_OUTPUT))); list.push_back(QString::fromStdString(SignalType2Str(SIGNAL_BUSINESS_RECORD_SIG))); list.push_back(QString::fromStdString(SignalType2Str(SIGNAL_BUSINESS_RECORD_EXPOSURE_SIG))); + list.push_back(QString::fromStdString(SignalType2Str(SIGNAL_BUSINESS_RECORD_EN_RSING_EDGE))); + list.push_back(QString::fromStdString(SignalType2Str(SIGNAL_BUSINESS_RECORD_EN_FALLING_EDGE))); + list.push_back(QString::fromStdString(SignalType2Str(SIGNAL_BUSINESS_RECORD_EN_EDGE))); ui->TTLOutputModule_SrcSigType_1->clear(); ui->TTLOutputModule_SrcSigType_1->addItems(list); @@ -393,6 +399,26 @@ void MainWindow::UI_TTLPageConstruct() { ui->TTLOutputModule_SrcSigType_4->clear(); ui->TTLOutputModule_SrcSigType_4->addItems(list); + + ui->TTLOutputModule_TriggerEdge_1->clear(); + ui->TTLOutputModule_TriggerEdge_1->addItem(QString::fromStdString(TriggerEdge2Str(TRIGGER_EDGE_RISING))); + ui->TTLOutputModule_TriggerEdge_1->addItem(QString::fromStdString(TriggerEdge2Str(TRIGGER_EDGE_FALLING))); + ui->TTLOutputModule_TriggerEdge_1->addItem(QString::fromStdString(TriggerEdge2Str(TRIGGER_EDGE_BOTH))); + + ui->TTLOutputModule_TriggerEdge_2->clear(); + ui->TTLOutputModule_TriggerEdge_2->addItem(QString::fromStdString(TriggerEdge2Str(TRIGGER_EDGE_RISING))); + ui->TTLOutputModule_TriggerEdge_2->addItem(QString::fromStdString(TriggerEdge2Str(TRIGGER_EDGE_FALLING))); + ui->TTLOutputModule_TriggerEdge_2->addItem(QString::fromStdString(TriggerEdge2Str(TRIGGER_EDGE_BOTH))); + + ui->TTLOutputModule_TriggerEdge_3->clear(); + ui->TTLOutputModule_TriggerEdge_3->addItem(QString::fromStdString(TriggerEdge2Str(TRIGGER_EDGE_RISING))); + ui->TTLOutputModule_TriggerEdge_3->addItem(QString::fromStdString(TriggerEdge2Str(TRIGGER_EDGE_FALLING))); + ui->TTLOutputModule_TriggerEdge_3->addItem(QString::fromStdString(TriggerEdge2Str(TRIGGER_EDGE_BOTH))); + + ui->TTLOutputModule_TriggerEdge_4->clear(); + ui->TTLOutputModule_TriggerEdge_4->addItem(QString::fromStdString(TriggerEdge2Str(TRIGGER_EDGE_RISING))); + ui->TTLOutputModule_TriggerEdge_4->addItem(QString::fromStdString(TriggerEdge2Str(TRIGGER_EDGE_FALLING))); + ui->TTLOutputModule_TriggerEdge_4->addItem(QString::fromStdString(TriggerEdge2Str(TRIGGER_EDGE_BOTH))); } void MainWindow::UI_GenlockPageConstruct() { // @@ -418,6 +444,11 @@ void MainWindow::UI_SysClockPageConstruct() { ui->SysClock_Src->addItem(QString::fromStdString(SignalType2Str(SIGNAL_INTERNAL_CLOCK_SIG))); ui->SysClock_Src->addItem(QString::fromStdString(SignalType2Str(SIGNAL_SYS_GENLOCK_OUTPUT))); ui->SysClock_Src->addItem(QString::fromStdString(SignalType2Str(SIGNAL_SYS_TIMECODE_FREQ_OUTPUT))); + + ui->SysClock_TriggerEdge->clear(); + ui->SysClock_TriggerEdge->addItem(QString::fromStdString(TriggerEdge2Str(TRIGGER_EDGE_RISING))); + ui->SysClock_TriggerEdge->addItem(QString::fromStdString(TriggerEdge2Str(TRIGGER_EDGE_FALLING))); + ui->SysClock_TriggerEdge->addItem(QString::fromStdString(TriggerEdge2Str(TRIGGER_EDGE_BOTH))); } void MainWindow::UI_RecordSigGenConstruct() { ui->RecordSigGenerator_ContrlMode->clear(); @@ -644,6 +675,9 @@ void MainWindow::on_tabWidget_currentChanged(int index) { } void MainWindow::on_TTLPage_Read_clicked() { + /******************************************************************************* + * TTL输入页面 * + *******************************************************************************/ { float freq1 = 0; float freq2 = 0; @@ -662,107 +696,184 @@ void MainWindow::on_TTLPage_Read_clicked() { ui->TTLinModule_ttl_freq_4->setText(QString::number(freq4, 'f', 2)); } - SignalType_t source; - uint32_t div; - uint32_t multi; - float infreq; - float outfreq; + /******************************************************************************* + * TTL输出组件 * + *******************************************************************************/ + + SignalType_t source; + TriggerEdge_t edge; + uint32_t div; + uint32_t multi; + + uint32_t PluseWidth; + uint32_t OffsetTime; + uint32_t outPolarity; + + float infreq; + float outfreq; { - DO_XSYNC_FUNC(XsyncIns()->TTLOutputModule1_getSrcSigType(source)); - DO_XSYNC_FUNC(XsyncIns()->TTLOutputModule1_getFreqDivision(div)); - DO_XSYNC_FUNC(XsyncIns()->TTLOutputModule1_getFreqMultiplication(multi)); - DO_XSYNC_FUNC(XsyncIns()->TTLOutputModule1_readInFreq(infreq)); - DO_XSYNC_FUNC(XsyncIns()->TTLOutputModule1_readOutFreq(outfreq)); + DO_XSYNC_FUNC(XsyncIns()->TTLOutputModule_getSrcSigType(1, source)); + DO_XSYNC_FUNC(XsyncIns()->TTLOutputModule_getTriggerEdge(1, edge)); + DO_XSYNC_FUNC(XsyncIns()->TTLOutputModule_getFreqDivision(1, div)); + DO_XSYNC_FUNC(XsyncIns()->TTLOutputModule_getFreqMultiplication(1, multi)); + DO_XSYNC_FUNC(XsyncIns()->TTLOutputModule_getPluseWidth(1, PluseWidth)); + DO_XSYNC_FUNC(XsyncIns()->TTLOutputModule_getOffsetTime(1, OffsetTime)); + DO_XSYNC_FUNC(XsyncIns()->TTLOutputModule_getPolarity(1, outPolarity)); + DO_XSYNC_FUNC(XsyncIns()->TTLOutputModule_readInFreq(1, infreq)); + DO_XSYNC_FUNC(XsyncIns()->TTLOutputModule_readOutFreq(1, outfreq)); ui->TTLOutputModule_SrcSigType_1->setCurrentText(QString::fromStdString(SignalType2Str(source))); + ui->TTLOutputModule_TriggerEdge_1->setCurrentText(QString::fromStdString(TriggerEdge2Str(edge))); ui->TTLOutputModule_FreqDivision_1->setText(QString::number(div)); ui->TTLOutputModule_FreqMultiplication_1->setText(QString::number(multi)); + ui->TTLOutputModule_PluseWidth_1->setText(QString::number(PluseWidth)); + ui->TTLOutputModule_OffsetTime_1->setText(QString::number(OffsetTime)); + ui->TTLOutputModule_Polarity_1->setText(QString::number(outPolarity)); + ui->TTLOutputModule_InFreq_1->setText(QString::number(infreq, 'f', 2)); ui->TTLOutputModule_OutFreq_1->setText(QString::number(outfreq, 'f', 2)); } { - DO_XSYNC_FUNC(XsyncIns()->TTLOutputModule2_getSrcSigType(source)); - DO_XSYNC_FUNC(XsyncIns()->TTLOutputModule2_getFreqDivision(div)); - DO_XSYNC_FUNC(XsyncIns()->TTLOutputModule2_getFreqMultiplication(multi)); - DO_XSYNC_FUNC(XsyncIns()->TTLOutputModule2_readInFreq(infreq)); - DO_XSYNC_FUNC(XsyncIns()->TTLOutputModule2_readOutFreq(outfreq)); + DO_XSYNC_FUNC(XsyncIns()->TTLOutputModule_getSrcSigType(2, source)); + DO_XSYNC_FUNC(XsyncIns()->TTLOutputModule_getTriggerEdge(2, edge)); + DO_XSYNC_FUNC(XsyncIns()->TTLOutputModule_getFreqDivision(2, div)); + DO_XSYNC_FUNC(XsyncIns()->TTLOutputModule_getFreqMultiplication(2, multi)); + DO_XSYNC_FUNC(XsyncIns()->TTLOutputModule_getPluseWidth(2, PluseWidth)); + DO_XSYNC_FUNC(XsyncIns()->TTLOutputModule_getOffsetTime(2, OffsetTime)); + DO_XSYNC_FUNC(XsyncIns()->TTLOutputModule_getPolarity(2, outPolarity)); + DO_XSYNC_FUNC(XsyncIns()->TTLOutputModule_readInFreq(2, infreq)); + DO_XSYNC_FUNC(XsyncIns()->TTLOutputModule_readOutFreq(2, outfreq)); ui->TTLOutputModule_SrcSigType_2->setCurrentText(QString::fromStdString(SignalType2Str(source))); + ui->TTLOutputModule_TriggerEdge_2->setCurrentText(QString::fromStdString(TriggerEdge2Str(edge))); ui->TTLOutputModule_FreqDivision_2->setText(QString::number(div)); ui->TTLOutputModule_FreqMultiplication_2->setText(QString::number(multi)); + ui->TTLOutputModule_PluseWidth_2->setText(QString::number(PluseWidth)); + ui->TTLOutputModule_OffsetTime_2->setText(QString::number(OffsetTime)); + ui->TTLOutputModule_Polarity_2->setText(QString::number(outPolarity)); + ui->TTLOutputModule_InFreq_2->setText(QString::number(infreq, 'f', 2)); ui->TTLOutputModule_OutFreq_2->setText(QString::number(outfreq, 'f', 2)); } { - DO_XSYNC_FUNC(XsyncIns()->TTLOutputModule3_getSrcSigType(source)); - DO_XSYNC_FUNC(XsyncIns()->TTLOutputModule3_getFreqDivision(div)); - DO_XSYNC_FUNC(XsyncIns()->TTLOutputModule3_getFreqMultiplication(multi)); - DO_XSYNC_FUNC(XsyncIns()->TTLOutputModule3_readInFreq(infreq)); - DO_XSYNC_FUNC(XsyncIns()->TTLOutputModule3_readOutFreq(outfreq)); + DO_XSYNC_FUNC(XsyncIns()->TTLOutputModule_getSrcSigType(3, source)); + DO_XSYNC_FUNC(XsyncIns()->TTLOutputModule_getTriggerEdge(3, edge)); + DO_XSYNC_FUNC(XsyncIns()->TTLOutputModule_getFreqDivision(3, div)); + DO_XSYNC_FUNC(XsyncIns()->TTLOutputModule_getFreqMultiplication(3, multi)); + DO_XSYNC_FUNC(XsyncIns()->TTLOutputModule_getPluseWidth(3, PluseWidth)); + DO_XSYNC_FUNC(XsyncIns()->TTLOutputModule_getOffsetTime(3, OffsetTime)); + DO_XSYNC_FUNC(XsyncIns()->TTLOutputModule_getPolarity(3, outPolarity)); + DO_XSYNC_FUNC(XsyncIns()->TTLOutputModule_readInFreq(3, infreq)); + DO_XSYNC_FUNC(XsyncIns()->TTLOutputModule_readOutFreq(3, outfreq)); ui->TTLOutputModule_SrcSigType_3->setCurrentText(QString::fromStdString(SignalType2Str(source))); + ui->TTLOutputModule_TriggerEdge_3->setCurrentText(QString::fromStdString(TriggerEdge2Str(edge))); ui->TTLOutputModule_FreqDivision_3->setText(QString::number(div)); ui->TTLOutputModule_FreqMultiplication_3->setText(QString::number(multi)); + ui->TTLOutputModule_PluseWidth_3->setText(QString::number(PluseWidth)); + ui->TTLOutputModule_OffsetTime_3->setText(QString::number(OffsetTime)); + ui->TTLOutputModule_Polarity_3->setText(QString::number(outPolarity)); + ui->TTLOutputModule_InFreq_3->setText(QString::number(infreq, 'f', 2)); ui->TTLOutputModule_OutFreq_3->setText(QString::number(outfreq, 'f', 2)); } { - DO_XSYNC_FUNC(XsyncIns()->TTLOutputModule4_getSrcSigType(source)); - DO_XSYNC_FUNC(XsyncIns()->TTLOutputModule4_getFreqDivision(div)); - DO_XSYNC_FUNC(XsyncIns()->TTLOutputModule4_getFreqMultiplication(multi)); - DO_XSYNC_FUNC(XsyncIns()->TTLOutputModule4_readInFreq(infreq)); - DO_XSYNC_FUNC(XsyncIns()->TTLOutputModule4_readOutFreq(outfreq)); + DO_XSYNC_FUNC(XsyncIns()->TTLOutputModule_getSrcSigType(4, source)); + DO_XSYNC_FUNC(XsyncIns()->TTLOutputModule_getTriggerEdge(4, edge)); + DO_XSYNC_FUNC(XsyncIns()->TTLOutputModule_getFreqDivision(4, div)); + DO_XSYNC_FUNC(XsyncIns()->TTLOutputModule_getFreqMultiplication(4, multi)); + DO_XSYNC_FUNC(XsyncIns()->TTLOutputModule_getPluseWidth(4, PluseWidth)); + DO_XSYNC_FUNC(XsyncIns()->TTLOutputModule_getOffsetTime(4, OffsetTime)); + DO_XSYNC_FUNC(XsyncIns()->TTLOutputModule_getPolarity(4, outPolarity)); + DO_XSYNC_FUNC(XsyncIns()->TTLOutputModule_readInFreq(4, infreq)); + DO_XSYNC_FUNC(XsyncIns()->TTLOutputModule_readOutFreq(4, outfreq)); ui->TTLOutputModule_SrcSigType_4->setCurrentText(QString::fromStdString(SignalType2Str(source))); + ui->TTLOutputModule_TriggerEdge_4->setCurrentText(QString::fromStdString(TriggerEdge2Str(edge))); ui->TTLOutputModule_FreqDivision_4->setText(QString::number(div)); ui->TTLOutputModule_FreqMultiplication_4->setText(QString::number(multi)); + ui->TTLOutputModule_PluseWidth_4->setText(QString::number(PluseWidth)); + ui->TTLOutputModule_OffsetTime_4->setText(QString::number(OffsetTime)); + ui->TTLOutputModule_Polarity_4->setText(QString::number(outPolarity)); + ui->TTLOutputModule_InFreq_4->setText(QString::number(infreq, 'f', 2)); ui->TTLOutputModule_OutFreq_4->setText(QString::number(outfreq, 'f', 2)); } } void MainWindow::on_TTLPage_Write_clicked() { { - auto source = Str2SignalType(ui->TTLOutputModule_SrcSigType_1->currentText().toStdString()); - auto div = ui->TTLOutputModule_FreqDivision_1->text().toUInt(); - auto multi = ui->TTLOutputModule_FreqMultiplication_1->text().toUInt(); - - DO_XSYNC_FUNC(XsyncIns()->TTLOutputModule1_setSrcSigType(source)); - DO_XSYNC_FUNC(XsyncIns()->TTLOutputModule1_setFreqDivision(div)); - DO_XSYNC_FUNC(XsyncIns()->TTLOutputModule1_setFreqMultiplication(multi)); + auto source = Str2SignalType(ui->TTLOutputModule_SrcSigType_1->currentText().toStdString()); + auto edge = Str2TriggerEdge(ui->TTLOutputModule_TriggerEdge_1->currentText().toStdString()); + auto div = ui->TTLOutputModule_FreqDivision_1->text().toUInt(); + auto multi = ui->TTLOutputModule_FreqMultiplication_1->text().toUInt(); + auto PluseWidth = ui->TTLOutputModule_PluseWidth_1->text().toUInt(); + auto OffsetTime = ui->TTLOutputModule_OffsetTime_1->text().toUInt(); + auto outPolarity = ui->TTLOutputModule_Polarity_1->text().toUInt(); + + DO_XSYNC_FUNC(XsyncIns()->TTLOutputModule_setSrcSigType(1, source)); + DO_XSYNC_FUNC(XsyncIns()->TTLOutputModule_setTriggerEdge(1, edge)); + DO_XSYNC_FUNC(XsyncIns()->TTLOutputModule_setFreqDivision(1, div)); + DO_XSYNC_FUNC(XsyncIns()->TTLOutputModule_setFreqMultiplication(1, multi)); + DO_XSYNC_FUNC(XsyncIns()->TTLOutputModule_setPluseWidth(1, PluseWidth)); + DO_XSYNC_FUNC(XsyncIns()->TTLOutputModule_setOffsetTime(1, OffsetTime)); + DO_XSYNC_FUNC(XsyncIns()->TTLOutputModule_setPolarity(1, outPolarity)); } { - auto source = Str2SignalType(ui->TTLOutputModule_SrcSigType_2->currentText().toStdString()); - auto div = ui->TTLOutputModule_FreqDivision_2->text().toUInt(); - auto multi = ui->TTLOutputModule_FreqMultiplication_2->text().toUInt(); - - DO_XSYNC_FUNC(XsyncIns()->TTLOutputModule2_setSrcSigType(source)); - DO_XSYNC_FUNC(XsyncIns()->TTLOutputModule2_setFreqDivision(div)); - DO_XSYNC_FUNC(XsyncIns()->TTLOutputModule2_setFreqMultiplication(multi)); + auto source = Str2SignalType(ui->TTLOutputModule_SrcSigType_2->currentText().toStdString()); + auto edge = Str2TriggerEdge(ui->TTLOutputModule_TriggerEdge_2->currentText().toStdString()); + auto div = ui->TTLOutputModule_FreqDivision_2->text().toUInt(); + auto multi = ui->TTLOutputModule_FreqMultiplication_2->text().toUInt(); + auto PluseWidth = ui->TTLOutputModule_PluseWidth_2->text().toUInt(); + auto OffsetTime = ui->TTLOutputModule_OffsetTime_2->text().toUInt(); + auto outPolarity = ui->TTLOutputModule_Polarity_2->text().toUInt(); + + DO_XSYNC_FUNC(XsyncIns()->TTLOutputModule_setSrcSigType(2, source)); + DO_XSYNC_FUNC(XsyncIns()->TTLOutputModule_setTriggerEdge(2, edge)); + DO_XSYNC_FUNC(XsyncIns()->TTLOutputModule_setFreqDivision(2, div)); + DO_XSYNC_FUNC(XsyncIns()->TTLOutputModule_setFreqMultiplication(2, multi)); + DO_XSYNC_FUNC(XsyncIns()->TTLOutputModule_setPluseWidth(2, PluseWidth)); + DO_XSYNC_FUNC(XsyncIns()->TTLOutputModule_setOffsetTime(2, OffsetTime)); + DO_XSYNC_FUNC(XsyncIns()->TTLOutputModule_setPolarity(2, outPolarity)); } - { - auto source = Str2SignalType(ui->TTLOutputModule_SrcSigType_3->currentText().toStdString()); - auto div = ui->TTLOutputModule_FreqDivision_3->text().toUInt(); - auto multi = ui->TTLOutputModule_FreqMultiplication_3->text().toUInt(); - - DO_XSYNC_FUNC(XsyncIns()->TTLOutputModule3_setSrcSigType(source)); - DO_XSYNC_FUNC(XsyncIns()->TTLOutputModule3_setFreqDivision(div)); - DO_XSYNC_FUNC(XsyncIns()->TTLOutputModule3_setFreqMultiplication(multi)); + auto source = Str2SignalType(ui->TTLOutputModule_SrcSigType_3->currentText().toStdString()); + auto edge = Str2TriggerEdge(ui->TTLOutputModule_TriggerEdge_3->currentText().toStdString()); + auto div = ui->TTLOutputModule_FreqDivision_3->text().toUInt(); + auto multi = ui->TTLOutputModule_FreqMultiplication_3->text().toUInt(); + auto PluseWidth = ui->TTLOutputModule_PluseWidth_3->text().toUInt(); + auto OffsetTime = ui->TTLOutputModule_OffsetTime_3->text().toUInt(); + auto outPolarity = ui->TTLOutputModule_Polarity_3->text().toUInt(); + + DO_XSYNC_FUNC(XsyncIns()->TTLOutputModule_setSrcSigType(3, source)); + DO_XSYNC_FUNC(XsyncIns()->TTLOutputModule_setTriggerEdge(3, edge)); + DO_XSYNC_FUNC(XsyncIns()->TTLOutputModule_setFreqDivision(3, div)); + DO_XSYNC_FUNC(XsyncIns()->TTLOutputModule_setFreqMultiplication(3, multi)); + DO_XSYNC_FUNC(XsyncIns()->TTLOutputModule_setPluseWidth(3, PluseWidth)); + DO_XSYNC_FUNC(XsyncIns()->TTLOutputModule_setOffsetTime(3, OffsetTime)); + DO_XSYNC_FUNC(XsyncIns()->TTLOutputModule_setPolarity(3, outPolarity)); } { - auto source = Str2SignalType(ui->TTLOutputModule_SrcSigType_4->currentText().toStdString()); - auto div = ui->TTLOutputModule_FreqDivision_4->text().toUInt(); - auto multi = ui->TTLOutputModule_FreqMultiplication_4->text().toUInt(); - - DO_XSYNC_FUNC(XsyncIns()->TTLOutputModule4_setSrcSigType(source)); - DO_XSYNC_FUNC(XsyncIns()->TTLOutputModule4_setFreqDivision(div)); - DO_XSYNC_FUNC(XsyncIns()->TTLOutputModule4_setFreqMultiplication(multi)); + auto source = Str2SignalType(ui->TTLOutputModule_SrcSigType_4->currentText().toStdString()); + auto edge = Str2TriggerEdge(ui->TTLOutputModule_TriggerEdge_4->currentText().toStdString()); + auto div = ui->TTLOutputModule_FreqDivision_4->text().toUInt(); + auto multi = ui->TTLOutputModule_FreqMultiplication_4->text().toUInt(); + auto PluseWidth = ui->TTLOutputModule_PluseWidth_4->text().toUInt(); + auto OffsetTime = ui->TTLOutputModule_OffsetTime_4->text().toUInt(); + auto outPolarity = ui->TTLOutputModule_Polarity_4->text().toUInt(); + + DO_XSYNC_FUNC(XsyncIns()->TTLOutputModule_setSrcSigType(4, source)); + DO_XSYNC_FUNC(XsyncIns()->TTLOutputModule_setTriggerEdge(4, edge)); + DO_XSYNC_FUNC(XsyncIns()->TTLOutputModule_setFreqDivision(4, div)); + DO_XSYNC_FUNC(XsyncIns()->TTLOutputModule_setFreqMultiplication(4, multi)); + DO_XSYNC_FUNC(XsyncIns()->TTLOutputModule_setPluseWidth(4, PluseWidth)); + DO_XSYNC_FUNC(XsyncIns()->TTLOutputModule_setOffsetTime(4, OffsetTime)); + DO_XSYNC_FUNC(XsyncIns()->TTLOutputModule_setPolarity(4, outPolarity)); } } @@ -772,6 +883,11 @@ void MainWindow::on_GenlockPage_Read_clicked() { DO_XSYNC_FUNC(XsyncIns()->InternalGenlock_getFormat(format)); ui->InternalGenlock_Format->setCurrentText(QString::fromStdString(GenlockFormatToStr(format))); } + { + float freq; + DO_XSYNC_FUNC(XsyncIns()->InternalGenlock_readFreq(freq)); + ui->InternalGenlock_Freq->setText(QString::number(freq, 'f', 2)); + } { float freq; @@ -811,6 +927,12 @@ void MainWindow::on_SysClockPage_Read_clicked() { } { + float freq; + DO_XSYNC_FUNC(XsyncIns()->InternalClock_readOutFreq(freq)); + ui->InternalClock_OutFreq->setText(QString::number(freq, 'f', 2)); + } + + { SignalType_t src; DO_XSYNC_FUNC(XsyncIns()->SysClock_getSrc(src)); ui->SysClock_Src->setCurrentText(QString::fromStdString(SignalType2Str(src))); @@ -839,6 +961,12 @@ void MainWindow::on_SysClockPage_Read_clicked() { DO_XSYNC_FUNC(XsyncIns()->SysClock_readOutSigFreq(freq)); ui->SysClock_OutSigFreq->setText(QString::number(freq, 'f', 2)); } + + { + TriggerEdge_t edge; + DO_XSYNC_FUNC(XsyncIns()->SysClock_getTriggerEdge(edge)); + ui->SysClock_TriggerEdge->setCurrentText(QString::fromStdString(TriggerEdge2Str(edge))); + } } void MainWindow::on_SysClockPage_Wirte_clicked() { { @@ -860,6 +988,11 @@ void MainWindow::on_SysClockPage_Wirte_clicked() { auto multi = ui->SysClock_FreqMultiplication->text().toUInt(); DO_XSYNC_FUNC(XsyncIns()->SysClock_setFreqMultiplication(multi)); } + + { + TriggerEdge_t edge = Str2TriggerEdge(ui->SysClock_TriggerEdge->currentText().toStdString()); + DO_XSYNC_FUNC(XsyncIns()->SysClock_setTriggerEdge(edge)); + } } void MainWindow::on_RecordSigGen_Read_clicked() { @@ -881,8 +1014,6 @@ void MainWindow::on_RecordSigGen_Read_clicked() { DO_XSYNC_FUNC(XsyncIns()->RecordSigGenerator_getTimecodeCtrlFlag(autoStart, autoStop)); DO_XSYNC_FUNC(XsyncIns()->RecordSigGenerator_getExternalTTLTriggerSrc(ttlPortNum)); DO_XSYNC_FUNC(XsyncIns()->RecordSigGenerator_getExternalTTLTriggerPolarity(polarity)); - DO_XSYNC_FUNC(XsyncIns()->RecordSigGenerator_getRecordExposureTime(exposureTime)); - DO_XSYNC_FUNC(XsyncIns()->RecordSigGenerator_getRecordExposureOffsetTime(exposureOffsetTime)); DO_XSYNC_FUNC(XsyncIns()->RecordSigGenerator_getRecordState(state)); DO_XSYNC_FUNC(XsyncIns()->RecordSigGenerator_readTimecodeSnapshot(timecode_snapshot)); @@ -893,21 +1024,21 @@ void MainWindow::on_RecordSigGen_Read_clicked() { ui->RecordSigGenerator_TimecodeCtrlFlag1->setChecked(autoStop); ui->RecordSigGenerator_ExternalTTLTriggerSrc->setCurrentText(QString::fromStdString(InputInterface2Str(ttlPortNum))); ui->RecordSigGenerator_ExternalTTLTriggerPolarity->setText(QString::number(polarity)); - ui->RecordSigGenerator_RecordExposureTime->setText(QString::number(exposureTime)); - ui->RecordSigGenerator_RecordExposureOffsetTime->setText(QString::number(exposureOffsetTime)); + // ui->RecordSigGenerator_RecordExposureTime->setText(QString::number(exposureTime)); + // ui->RecordSigGenerator_RecordExposureOffsetTime->setText(QString::number(exposureOffsetTime)); ui->RecordSigGenerator_RecordState->setText(QString::number(state)); ui->RecordSigGenerator_TimecodeSnapshot->setText(QString(XsyncTimecodeToStr(timecode_snapshot).c_str())); } void MainWindow::on_RecordSigGen_Write_clicked() { - ControlMode_t mode = Str2ControlMode(ui->RecordSigGenerator_ContrlMode->currentText().toStdString()); - XsyncTimecode_t autoStartTimecode = Str2XsyncTimecode(ui->RecordSigGenerator_AutoStartTimecode->text().toStdString()); - XsyncTimecode_t autoStopTimecode = Str2XsyncTimecode(ui->RecordSigGenerator_AutoStopTimecode->text().toStdString()); - uint32_t autoStart = ui->RecordSigGenerator_TimecodeCtrlFlag0->isChecked(); - uint32_t autoStop = ui->RecordSigGenerator_TimecodeCtrlFlag1->isChecked(); - InputInterface_t ttlPortNum = Str2InputInterface(ui->RecordSigGenerator_ExternalTTLTriggerSrc->currentText().toStdString()); - uint32_t polarity = ui->RecordSigGenerator_ExternalTTLTriggerPolarity->text().toUInt(); - uint32_t exposureTime = ui->RecordSigGenerator_RecordExposureTime->text().toUInt(); - uint32_t exposureOffsetTime = ui->RecordSigGenerator_RecordExposureOffsetTime->text().toUInt(); + ControlMode_t mode = Str2ControlMode(ui->RecordSigGenerator_ContrlMode->currentText().toStdString()); + XsyncTimecode_t autoStartTimecode = Str2XsyncTimecode(ui->RecordSigGenerator_AutoStartTimecode->text().toStdString()); + XsyncTimecode_t autoStopTimecode = Str2XsyncTimecode(ui->RecordSigGenerator_AutoStopTimecode->text().toStdString()); + uint32_t autoStart = ui->RecordSigGenerator_TimecodeCtrlFlag0->isChecked(); + uint32_t autoStop = ui->RecordSigGenerator_TimecodeCtrlFlag1->isChecked(); + InputInterface_t ttlPortNum = Str2InputInterface(ui->RecordSigGenerator_ExternalTTLTriggerSrc->currentText().toStdString()); + uint32_t polarity = ui->RecordSigGenerator_ExternalTTLTriggerPolarity->text().toUInt(); + // uint32_t exposureTime = ui->RecordSigGenerator_RecordExposureTime->text().toUInt(); + // uint32_t exposureOffsetTime = ui->RecordSigGenerator_RecordExposureOffsetTime->text().toUInt(); // RecordSigGenerator_readTimecodeSnapshot @@ -917,8 +1048,8 @@ void MainWindow::on_RecordSigGen_Write_clicked() { DO_XSYNC_FUNC(XsyncIns()->RecordSigGenerator_setTimecodeCtrlFlag(autoStart, autoStop)); DO_XSYNC_FUNC(XsyncIns()->RecordSigGenerator_setExternalTTLTriggerSrc(ttlPortNum)); DO_XSYNC_FUNC(XsyncIns()->RecordSigGenerator_setExternalTTLTriggerPolarity(polarity)); - DO_XSYNC_FUNC(XsyncIns()->RecordSigGenerator_setRecordExposureTime(exposureTime)); - DO_XSYNC_FUNC(XsyncIns()->RecordSigGenerator_setRecordExposureOffsetTime(exposureOffsetTime)); + // DO_XSYNC_FUNC(XsyncIns()->RecordSigGenerator_setRecordExposureTime(exposureTime)); + // DO_XSYNC_FUNC(XsyncIns()->RecordSigGenerator_setRecordExposureOffsetTime(exposureOffsetTime)); } void MainWindow::on_RecordSigGenerator_manualStart_clicked() { DO_XSYNC_FUNC(XsyncIns()->RecordSigGenerator_manualStart()); } void MainWindow::on_RecordSigGenerator_manualStop_clicked() { DO_XSYNC_FUNC(XsyncIns()->RecordSigGenerator_manualStop()); } @@ -960,3 +1091,23 @@ void MainWindow::on_Reboot_clicked() { DO_XSYNC_FUNC(XsyncIns()->reboot()); } void MainWindow::on_InternalSigSrouce_start_clicked() { DO_XSYNC_FUNC(XsyncIns()->InternalSigSrouce_start()); } void MainWindow::on_InternalSigSrouce_stop_clicked() { DO_XSYNC_FUNC(XsyncIns()->InternalSigSrouce_stop()); } + +void MainWindow::on_DelayContrl_Read_clicked() { + uint32_t DelayContrl_InputDelay; + uint32_t DelayContrl_OutputDelay; + + DO_XSYNC_FUNC(XsyncIns()->DelayContrl_getInputDelay(DelayContrl_InputDelay)); + DO_XSYNC_FUNC(XsyncIns()->DelayContrl_getOutputDelay(DelayContrl_OutputDelay)); + + ui->DelayContrl_InputDelay->setText(QString::number(DelayContrl_InputDelay)); + ui->DelayContrl_OutputDelay->setText(QString::number(DelayContrl_OutputDelay)); +} + +void MainWindow::on_DelayContrl_Update_clicked() { + uint32_t DelayContrl_InputDelay = ui->DelayContrl_InputDelay->text().toUInt(); + uint32_t DelayContrl_OutputDelay = ui->DelayContrl_OutputDelay->text().toUInt(); + + DO_XSYNC_FUNC(XsyncIns()->DelayContrl_setInputDelay(DelayContrl_InputDelay)); + DO_XSYNC_FUNC(XsyncIns()->DelayContrl_setOutputDelay(DelayContrl_OutputDelay)); + +} diff --git a/mainwindow.h b/mainwindow.h index f2a2942..01799c2 100644 --- a/mainwindow.h +++ b/mainwindow.h @@ -102,7 +102,9 @@ class MainWindow : public QMainWindow { void on_tabWidget_currentChanged(int index); - + void on_DelayContrl_Read_clicked(); + void on_DelayContrl_Update_clicked(); + void on_TTLPage_Read_clicked(); void on_TTLPage_Write_clicked(); @@ -127,7 +129,7 @@ class MainWindow : public QMainWindow { void on_InternalSigSrouce_stop_clicked(); -signals: + signals: void append_log_signal(QString str); void updateUI_timeCodeInfo_signal(QString); void updateUI_cameraSyncInfo_signal(QString); diff --git a/mainwindow.ui b/mainwindow.ui index 728f798..b9f0dc6 100644 --- a/mainwindow.ui +++ b/mainwindow.ui @@ -6,8 +6,8 @@ 0 0 - 1135 - 897 + 1314 + 907 @@ -204,7 +204,7 @@ - 1 + 6 @@ -366,744 +366,1112 @@ - 20 + 10 210 - 401 - 211 + 301 + 341 TTL_OUT_1 - - - - 20 - 30 - 61 - 31 - - - - source - - - - - - 70 - 30 - 211 - 31 - - - - -1 - - - - - - 70 - 70 - 211 - 31 - - - - - 75 - true - - - - - - - false - - - - - - 70 - 110 - 211 - 31 - - - - - 75 - true - - - - - - - false - - - - - - 20 - 70 - 61 - 31 - - - - 分频 - - - - - - 20 - 110 - 61 - 31 - - - - 倍频 - - - - - - 110 - 160 - 61 - 31 - - - - - 75 - true - - - - - - - false - - - - - - 320 - 160 - 61 - 31 - - - - - 75 - true - - - - - - - false - - - - - - 20 - 160 - 81 - 31 - - - - 输入信号频率 - - - - - - 230 - 160 - 81 - 31 - - - - 输出信号频率 - - - - - - - 440 - 210 - 401 - 211 - - - - TTL_OUT_2 - - - - - 20 - 30 - 61 - 31 - - - - source - - - - - - 70 - 30 - 211 - 31 - - - - -1 - - - - - - 70 - 70 - 211 - 31 - - - - - 75 - true - - - - - - - false - - - - - - 70 - 110 - 211 - 31 - - - - - 75 - true - - - - - - - false - - - - - - 20 - 70 - 61 - 31 - - - - 分频 - - - - - - 20 - 110 - 61 - 31 - - - - 倍频 - - - - - - 110 - 160 - 61 - 31 - - - - - 75 - true - - - - - - - false - - - - - - 320 - 160 - 61 - 31 - - - - - 75 - true - - - - - - - false - - - - - - 20 - 160 - 81 - 31 - - - - 输入信号频率 - - - - - - 230 - 160 - 81 - 31 - - - - 输出信号频率 - - + + + + + 倍频 + + + + + + + OffsetTime + + + + + + + + 0 + 25 + + + + + 75 + true + + + + + + + false + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + 输出信号频率 + + + + + + + TriggerEdge + + + + + + + source + + + + + + + PluseWidth + + + + + + + + 0 + 25 + + + + -1 + + + + + + + + 0 + 25 + + + + + 75 + true + + + + + + + false + + + + + + + + 0 + 25 + + + + + 75 + true + + + + + + + false + + + + + + + + 0 + 25 + + + + + 75 + true + + + + + + + false + + + + + + + 输入信号频率 + + + + + + + + 0 + 25 + + + + -1 + + + + + + + + 0 + 25 + + + + + 75 + true + + + + + + + false + + + + + + + 分频 + + + + + + + + 0 + 25 + + + + + 75 + true + + + + + + + false + + + + + + + OutPolarity + + + + + + + + 0 + 25 + + + + + 75 + true + + + + + + + false + + + + - + - 20 - 430 - 401 - 211 + 440 + 30 + 101 + 31 - - TTL_OUT_3 + + Read - - - - 20 - 30 - 61 - 31 - - - - source - - - - - - 70 - 30 - 211 - 31 - - - - -1 - - - - - - 70 - 70 - 211 - 31 - - - - - 75 - true - - - - - - - false - - - - - - 70 - 110 - 211 - 31 - - - - - 75 - true - - - - - - - false - - - - - - 20 - 70 - 61 - 31 - - - - 分频 - - - - - - 20 - 110 - 61 - 31 - - - - 倍频 - - - - - - 110 - 160 - 61 - 31 - - - - - 75 - true - - - - - - - false - - - - - - 320 - 160 - 61 - 31 - - - - - 75 - true - - - - - - - false - - - - - - 20 - 160 - 81 - 31 - - - - 输入信号频率 - - - - - - 230 - 160 - 81 - 31 - - - - 输出信号频率 - - - + + + + 440 + 70 + 101 + 31 + + + + Write + + + - 440 - 430 - 401 - 211 + 330 + 210 + 301 + 341 - TTL_OUT_4 + TTL_OUT_2 - - - - 20 - 30 - 61 - 31 - - - - source - - - - - - 70 - 30 - 211 - 31 - - - - -1 - - - - - - 70 - 70 - 211 - 31 - - - - - 75 - true - - - - - - - false - - - - - - 70 - 110 - 211 - 31 - - - - - 75 - true - - - - - - - false - - - - - - 20 - 70 - 61 - 31 - - - - 分频 - - - - - - 20 - 110 - 61 - 31 - - - - 倍频 - - - - - - 110 - 160 - 61 - 31 - - - - - 75 - true - - - - - - - false - - - - - - 320 - 160 - 61 - 31 - - - - - 75 - true - - - - - - - false - - - - - - 20 - 160 - 81 - 31 - - - - 输入信号频率 - - - - - - 230 - 160 - 81 - 31 - - - - 输出信号频率 - - + + + + + 分频 + + + + + + + + 0 + 25 + + + + + 75 + true + + + + + + + false + + + + + + + 输出信号频率 + + + + + + + source + + + + + + + + 0 + 25 + + + + -1 + + + + + + + 倍频 + + + + + + + + 0 + 25 + + + + + 75 + true + + + + + + + false + + + + + + + + 0 + 25 + + + + + 75 + true + + + + + + + false + + + + + + + + 0 + 25 + + + + + 75 + true + + + + + + + false + + + + + + + TriggerEdge + + + + + + + + 0 + 25 + + + + + 75 + true + + + + + + + false + + + + + + + + 0 + 25 + + + + -1 + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + OffsetTime + + + + + + + 输入信号频率 + + + + + + + PluseWidth + + + + + + + + 0 + 25 + + + + + 75 + true + + + + + + + false + + + + + + + OutPolarity + + + + + + + + 0 + 25 + + + + + 75 + true + + + + + + + false + + + + - + - 440 - 30 - 101 - 31 + 650 + 210 + 301 + 341 - - Read + + TTL_OUT_3 + + + + + OffsetTime + + + + + + + PluseWidth + + + + + + + + 0 + 25 + + + + + 75 + true + + + + + + + false + + + + + + + + 0 + 25 + + + + -1 + + + + + + + + 0 + 25 + + + + + 75 + true + + + + + + + false + + + + + + + 输入信号频率 + + + + + + + 分频 + + + + + + + + 0 + 25 + + + + + 75 + true + + + + + + + false + + + + + + + TriggerEdge + + + + + + + 倍频 + + + + + + + source + + + + + + + + 0 + 25 + + + + + 75 + true + + + + + + + false + + + + + + + + 0 + 25 + + + + -1 + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + 输出信号频率 + + + + + + + + 0 + 25 + + + + + 75 + true + + + + + + + false + + + + + + + + 0 + 25 + + + + + 75 + true + + + + + + + false + + + + + + + + 0 + 25 + + + + + 75 + true + + + + + + + false + + + + + + + OutPolarity + + + + - + - 440 - 70 - 101 - 31 + 970 + 210 + 301 + 341 - - Write + + TTL_OUT_4 + + + + + + 0 + 25 + + + + -1 + + + + + + + 输出信号频率 + + + + + + + + 0 + 25 + + + + + 75 + true + + + + + + + false + + + + + + + + 0 + 25 + + + + + 75 + true + + + + + + + false + + + + + + + PluseWidth + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + 输入信号频率 + + + + + + + TriggerEdge + + + + + + + + 0 + 25 + + + + + 75 + true + + + + + + + false + + + + + + + OffsetTime + + + + + + + + 0 + 25 + + + + -1 + + + + + + + source + + + + + + + + 0 + 25 + + + + + 75 + true + + + + + + + false + + + + + + + 倍频 + + + + + + + + 0 + 25 + + + + + 75 + true + + + + + + + false + + + + + + + + 0 + 25 + + + + + 75 + true + + + + + + + false + + + + + + + 分频 + + + + + + + + 0 + 25 + + + + + 75 + true + + + + + + + false + + + + + + + OutPolarity + + + + @@ -1636,7 +2004,7 @@ 20 30 261 - 91 + 131 @@ -1668,6 +2036,41 @@ Format + + + + 100 + 80 + 151 + 31 + + + + + 75 + true + + + + + + + false + + + + + + 20 + 80 + 41 + 31 + + + + Freq + + @@ -1675,7 +2078,7 @@ 300 30 221 - 91 + 131 @@ -1684,8 +2087,8 @@ - 20 - 20 + 10 + 80 41 31 @@ -1698,7 +2101,7 @@ 60 - 20 + 80 151 31 @@ -1721,7 +2124,7 @@ 160 - 160 + 200 271 121 @@ -1799,117 +2202,205 @@ - 130 - 170 - 401 - 211 + 70 + 210 + 254 + 187 SYS_CLK - - - - 20 - 30 - 61 - 31 - - - - source - - - - - - 70 - 30 - 211 - 31 - - - - -1 - - - - - - 70 - 70 - 211 - 31 - - - - - 75 - true - - - - - - - false - - - - - - 70 - 110 - 211 - 31 - - - - - 75 - true - - - - - - - false - - - - - - 20 - 70 - 61 - 31 - - - - 分频 - - - + + + + + source + + + + + + + + 0 + 25 + + + + -1 + + + + + + + 分频 + + + + + + + + 0 + 25 + + + + + 75 + true + + + + + + + false + + + + + + + 倍频 + + + + + + + + 0 + 25 + + + + + 75 + true + + + + + + + false + + + + + + + 触发边沿 + + + + + + + + 0 + 25 + + + + -1 + + + + + + + 输入信号频率 + + + + + + + + 0 + 25 + + + + + 75 + true + + + + + + + false + + + + + + + 输出信号频率 + + + + + + + + 0 + 25 + + + + + 75 + true + + + + + + + false + + + + + + + + + 390 + 40 + 271 + 121 + + + + 内部时钟发生器 + + - 20 - 110 - 61 + 10 + 20 + 41 31 - 倍频 + Freq - + - 110 - 160 - 61 + 90 + 20 + 151 31 @@ -1926,12 +2417,12 @@ false - + - 320 - 160 - 61 + 90 + 60 + 151 31 @@ -1948,78 +2439,17 @@ false - - - - 20 - 160 - 81 - 31 - - - - 输入信号频率 - - - - - - 230 - 160 - 81 - 31 - - - - 输出信号频率 - - - - - - - 390 - 40 - 221 - 81 - - - - 内部时钟发生器 - - + 10 - 20 - 41 - 31 - - - - Freq - - - - - - 50 - 20 - 151 + 60 + 71 31 - - - 75 - true - - - - - - false + DetectFreq @@ -2367,89 +2797,6 @@ - - - - 430 - 20 - 271 - 111 - - - - 曝光信号配置 - - - - - 20 - 20 - 81 - 31 - - - - 曝光时间(us) - - - - - - 20 - 60 - 81 - 31 - - - - 偏移时间(us) - - - - - - 110 - 60 - 141 - 31 - - - - - 75 - true - - - - - - - false - - - - - - 110 - 20 - 141 - 31 - - - - - 75 - true - - - - - - - false - - - @@ -2582,7 +2929,7 @@ 0 0 - 1074 + 1253 10000 @@ -2851,6 +3198,118 @@ InternalSigSrouce_stop + + + + 510 + 200 + 231 + 151 + + + + GroupBox + + + + + + 输入延迟 + + + + + + + + 0 + 25 + + + + + 75 + true + + + + + + + false + + + + + + + + 0 + 25 + + + + + 75 + true + + + + + + + false + + + + + + + 输出延迟 + + + + + + + + 0 + 25 + + + + 读取数值 + + + + + + + + 0 + 25 + + + + 写入数值 + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + @@ -2889,7 +3348,7 @@ 0 0 - 1135 + 1314 23