You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
400 lines
19 KiB
400 lines
19 KiB
#include "mainwindow.h"
|
|
|
|
#include <QDateTime>
|
|
#include <QtConcurrent>
|
|
|
|
#include "./ui_mainwindow.h"
|
|
|
|
using namespace iflytop;
|
|
using namespace std;
|
|
|
|
static MainWindow *m_mainWindow;
|
|
#define TAG "MainWindow"
|
|
|
|
static const char *fmt(const char *fmt, ...) {
|
|
va_list args;
|
|
va_start(args, fmt);
|
|
static char buf[1024] = {0};
|
|
vsnprintf(buf, sizeof(buf), fmt, args);
|
|
va_end(args);
|
|
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);
|
|
}
|
|
}
|
|
|
|
void MainWindow::log_output(QtMsgType type, const QMessageLogContext &context, const QString &msg) {
|
|
QString text;
|
|
text.append(msg);
|
|
m_mainWindow->append_log_signal(text);
|
|
}
|
|
|
|
void MainWindow::append_log_slot(QString text) { ui->logbrowser->append(text); }
|
|
|
|
void MainWindow::updateUI_timeCodeInfo_slot(QString text) { ui->TimecodeDisplayer->setText(text); }
|
|
void MainWindow::updateUI_cameraSyncInfo_slot(QString text) { ui->CameraSyncIndex->setText(text); }
|
|
void MainWindow::updateUI_reg_slot(int32_t regadd, uint32_t regval) {
|
|
auto it = m_regdisplayer.find(regadd);
|
|
if (it != m_regdisplayer.end()) {
|
|
ZLOGI(TAG, "updateUI_reg_slot %x %d", regadd, regval);
|
|
it->second->regBrowser->setText(QString::number(regval, 16));
|
|
}
|
|
}
|
|
void MainWindow::doinui_slot(QFunction func) {
|
|
if (func.get()) func.get()();
|
|
}
|
|
|
|
void MainWindow::push_reg(QWidget *parent, int off, const char *regname, int32_t regadd, int32_t rwflag, reg_val_type_t regvaltype) {
|
|
DispalyRegIterm *regitem = new DispalyRegIterm();
|
|
regitem->regvaltype = regvaltype;
|
|
{
|
|
auto *label = new QLabel(parent);
|
|
label->setObjectName(QString::fromUtf8("label"));
|
|
label->setText(QString(fmt("%s(0x%04x)", regname, regadd)));
|
|
QSizePolicy sizePolicy1(QSizePolicy::Minimum, QSizePolicy::Expanding);
|
|
sizePolicy1.setHorizontalStretch(0);
|
|
sizePolicy1.setVerticalStretch(0);
|
|
sizePolicy1.setHeightForWidth(label->sizePolicy().hasHeightForWidth());
|
|
label->setSizePolicy(sizePolicy1);
|
|
label->setMinimumSize(QSize(250, 0));
|
|
label->setMaximumSize(QSize(16777215, 16777215));
|
|
ui->reg_table->addWidget(label, off, 0, 1, 1);
|
|
regitem->label = label;
|
|
}
|
|
{
|
|
auto *textbrowser = new QTextBrowser(parent);
|
|
textbrowser->setObjectName(QString::fromUtf8("textbrowser"));
|
|
textbrowser->setEnabled(true);
|
|
textbrowser->setText(QString("unset"));
|
|
QSizePolicy sizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
|
|
sizePolicy.setHorizontalStretch(0);
|
|
sizePolicy.setVerticalStretch(0);
|
|
sizePolicy.setHeightForWidth(textbrowser->sizePolicy().hasHeightForWidth());
|
|
|
|
textbrowser->setSizePolicy(sizePolicy);
|
|
textbrowser->setMaximumSize(QSize(16777215, 16777215));
|
|
|
|
ui->reg_table->addWidget(textbrowser, off, 1, 1, 1);
|
|
regitem->regBrowser = textbrowser;
|
|
}
|
|
|
|
{
|
|
auto *textEdit = new QTextEdit(parent);
|
|
textEdit->setObjectName(QString::fromUtf8("textEdit"));
|
|
textEdit->setEnabled(true);
|
|
QSizePolicy sizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
|
|
sizePolicy.setHorizontalStretch(0);
|
|
sizePolicy.setVerticalStretch(0);
|
|
sizePolicy.setHeightForWidth(textEdit->sizePolicy().hasHeightForWidth());
|
|
|
|
textEdit->setSizePolicy(sizePolicy);
|
|
textEdit->setMaximumSize(QSize(16777215, 16777215));
|
|
|
|
ui->reg_table->addWidget(textEdit, off, 2, 1, 1);
|
|
regitem->regEditer = textEdit;
|
|
}
|
|
{
|
|
// new button
|
|
auto *button = new QPushButton(parent);
|
|
button->setObjectName(QString::fromUtf8("button"));
|
|
button->setText(QString("Write"));
|
|
QSizePolicy sizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
|
|
sizePolicy.setHorizontalStretch(0);
|
|
sizePolicy.setVerticalStretch(0);
|
|
sizePolicy.setHeightForWidth(button->sizePolicy().hasHeightForWidth());
|
|
button->setSizePolicy(sizePolicy);
|
|
|
|
// connect(this,
|
|
connect(button, &QPushButton::clicked, [this, regadd](bool) { //
|
|
QString regval_str = m_regdisplayer[regadd]->regEditer->toPlainText();
|
|
uint32_t regval = str2int(regval_str);
|
|
ZLOGI(TAG, "write reg 0x%04x %d", regadd, regval);
|
|
|
|
uint32_t readbackval = 0;
|
|
auto ecode = Xsync::Ins().reg_write(regadd, regval, readbackval);
|
|
if (ecode == kxs_ec_success) {
|
|
ZLOGI(TAG, "write reg 0x%04x %d success", regadd, regval);
|
|
m_regdisplayer[regadd]->regvalcache = readbackval;
|
|
updateUI_timeCodeInfo(regadd);
|
|
} else {
|
|
ZLOGE(TAG, "write reg 0x%04x %d fail,ecode:%s", regadd, regval, xs_error_code_2_str(ecode));
|
|
}
|
|
|
|
});
|
|
|
|
regitem->writerButton = button;
|
|
ui->reg_table->addWidget(button, off, 3, 1, 1);
|
|
}
|
|
m_regdisplayer[regadd] = regitem;
|
|
}
|
|
|
|
void MainWindow::updateUI_timeCodeInfo(uint32_t regoff) {
|
|
// m_regdisplayer[regoff]->regBrowser->setText("0x" + QString::number(regValue, 16));
|
|
|
|
uint32_t regval = m_regdisplayer[regoff]->regvalcache;
|
|
auto *regBrowser = m_regdisplayer[regoff]->regBrowser;
|
|
reg_val_type_t regvaltype = m_regdisplayer[regoff]->regvaltype;
|
|
|
|
if (regvaltype == kreg_val_type_dotted_hex) {
|
|
regBrowser->setText(QString(fmt("%02x.%02x.%02x.%02x", (regval >> 0) & 0xff, (regval >> 8) & 0xff, (regval >> 16) & 0xff, (regval >> 24) & 0xff)));
|
|
} else if (regvaltype == kreg_val_type_dotted_decimal) {
|
|
regBrowser->setText(QString(fmt("%d.%d.%d.%d", (regval >> 0) & 0xff, (regval >> 8) & 0xff, (regval >> 16) & 0xff, (regval >> 24) & 0xff)));
|
|
} else if (regvaltype == kreg_val_type_str) {
|
|
char text[5] = {0};
|
|
memcpy(text, ®val, 4);
|
|
regBrowser->setText(QString(text));
|
|
} else if (regvaltype == kreg_val_type_hex) {
|
|
regBrowser->setText(QString(fmt("0x%08x", regval)));
|
|
} else if (regvaltype == kreg_val_type_decimal) {
|
|
regBrowser->setText(QString::number(regval, 10));
|
|
} else if (regvaltype == kreg_val_type_binary) {
|
|
regBrowser->setText(QString::number(regval, 2));
|
|
}
|
|
}
|
|
|
|
void MainWindow::construct_reg_table() { //
|
|
int regoff = 1;
|
|
|
|
push_reg(ui->gridLayoutWidget, regoff++, "software_version", kxsync_reg_software_version, 0, kreg_val_type_dotted_decimal);
|
|
push_reg(ui->gridLayoutWidget, regoff++, "manufacturer0", kxsync_reg_manufacturer0, 0, kreg_val_type_str);
|
|
push_reg(ui->gridLayoutWidget, regoff++, "manufacturer1", kxsync_reg_manufacturer1, 0, kreg_val_type_str);
|
|
push_reg(ui->gridLayoutWidget, regoff++, "product_type_id", kxsync_reg_product_type_id, 0, kreg_val_type_decimal);
|
|
push_reg(ui->gridLayoutWidget, regoff++, "sn_id0", kxsync_reg_sn_id0, 0, kreg_val_type_dotted_hex);
|
|
push_reg(ui->gridLayoutWidget, regoff++, "sn_id1", kxsync_reg_sn_id1, 0, kreg_val_type_dotted_hex);
|
|
push_reg(ui->gridLayoutWidget, regoff++, "sn_id2", kxsync_reg_sn_id2, 0, kreg_val_type_dotted_hex);
|
|
push_reg(ui->gridLayoutWidget, regoff++, "mac0", kxsync_reg_mac0, 0, kreg_val_type_dotted_hex);
|
|
push_reg(ui->gridLayoutWidget, regoff++, "mac1", kxsync_reg_mac1, 0, kreg_val_type_dotted_hex);
|
|
|
|
// kxsync_reg_stm32_ip
|
|
// kxsync_reg_stm32_gw
|
|
// kxsync_reg_stm32_netmask
|
|
// kxsync_reg_stm32_camera_sync_signal_count
|
|
|
|
push_reg(ui->gridLayoutWidget, regoff++, "stm32_ip", kxsync_reg_stm32_ip, 0, kreg_val_type_dotted_decimal);
|
|
push_reg(ui->gridLayoutWidget, regoff++, "stm32_gw", kxsync_reg_stm32_gw, 0, kreg_val_type_dotted_decimal);
|
|
push_reg(ui->gridLayoutWidget, regoff++, "stm32_netmask", kxsync_reg_stm32_netmask, 0, kreg_val_type_dotted_decimal);
|
|
push_reg(ui->gridLayoutWidget, regoff++, "stm32_camera_sync_signal_count", kxsync_reg_stm32_camera_sync_signal_count, 0, kreg_val_type_decimal);
|
|
|
|
push_reg(ui->gridLayoutWidget, regoff++, "fpga_reg_test_reg0", kxsync_fpga_reg_test_reg0, 0, kreg_val_type_hex);
|
|
push_reg(ui->gridLayoutWidget, regoff++, "fpga_reg_test_reg1", kxsync_fpga_reg_test_reg1, 0, kreg_val_type_hex);
|
|
push_reg(ui->gridLayoutWidget, regoff++, "fpga_reg_test_reg2", kxsync_fpga_reg_test_reg2, 0, kreg_val_type_hex);
|
|
push_reg(ui->gridLayoutWidget, regoff++, "fpga_reg_test_reg3", kxsync_fpga_reg_test_reg3, 0, kreg_val_type_hex);
|
|
push_reg(ui->gridLayoutWidget, regoff++, "fpga_reg_test_reg4", kxsync_fpga_reg_test_reg4, 0, kreg_val_type_hex);
|
|
|
|
push_reg(ui->gridLayoutWidget, regoff++, "ttlout1_input_sig_slt", kxsync_reg_ttlout1_input_sig_slt, 0, kreg_val_type_decimal);
|
|
push_reg(ui->gridLayoutWidget, regoff++, "ttlout1_output_sig_slt", kxsync_reg_ttlout1_output_sig_slt, 0, kreg_val_type_decimal);
|
|
push_reg(ui->gridLayoutWidget, regoff++, "ttlout1_config", kxsync_reg_ttlout1_config, 0, kreg_val_type_hex);
|
|
push_reg(ui->gridLayoutWidget, regoff++, "ttlout1_pulse_mode_duration", kxsync_reg_ttlout1_pulse_mode_duration, 0, kreg_val_type_decimal);
|
|
push_reg(ui->gridLayoutWidget, regoff++, "ttlout1_pulse_mode_delay", kxsync_reg_ttlout1_pulse_mode_delay, 0, kreg_val_type_decimal);
|
|
|
|
push_reg(ui->gridLayoutWidget, regoff++, "ttlout2_input_sig_slt", kxsync_reg_ttlout2_input_sig_slt, 0, kreg_val_type_decimal);
|
|
push_reg(ui->gridLayoutWidget, regoff++, "ttlout2_output_sig_slt", kxsync_reg_ttlout2_output_sig_slt, 0, kreg_val_type_decimal);
|
|
push_reg(ui->gridLayoutWidget, regoff++, "ttlout2_config", kxsync_reg_ttlout2_config, 0, kreg_val_type_hex);
|
|
push_reg(ui->gridLayoutWidget, regoff++, "ttlout2_pulse_mode_duration", kxsync_reg_ttlout2_pulse_mode_duration, 0, kreg_val_type_decimal);
|
|
push_reg(ui->gridLayoutWidget, regoff++, "ttlout2_pulse_mode_delay", kxsync_reg_ttlout2_pulse_mode_delay, 0, kreg_val_type_decimal);
|
|
|
|
push_reg(ui->gridLayoutWidget, regoff++, "ttlout3_input_sig_slt", kxsync_reg_ttlout3_input_sig_slt, 0, kreg_val_type_decimal);
|
|
push_reg(ui->gridLayoutWidget, regoff++, "ttlout3_output_sig_slt", kxsync_reg_ttlout3_output_sig_slt, 0, kreg_val_type_decimal);
|
|
push_reg(ui->gridLayoutWidget, regoff++, "ttlout3_config", kxsync_reg_ttlout3_config, 0, kreg_val_type_hex);
|
|
push_reg(ui->gridLayoutWidget, regoff++, "ttlout3_pulse_mode_duration", kxsync_reg_ttlout3_pulse_mode_duration, 0, kreg_val_type_decimal);
|
|
|
|
push_reg(ui->gridLayoutWidget, regoff++, "ttlout3_pulse_mode_delay", kxsync_reg_ttlout3_pulse_mode_delay, 0, kreg_val_type_decimal);
|
|
push_reg(ui->gridLayoutWidget, regoff++, "ttlout4_input_sig_slt", kxsync_reg_ttlout4_input_sig_slt, 0, kreg_val_type_decimal);
|
|
push_reg(ui->gridLayoutWidget, regoff++, "ttlout4_output_sig_slt", kxsync_reg_ttlout4_output_sig_slt, 0, kreg_val_type_decimal);
|
|
push_reg(ui->gridLayoutWidget, regoff++, "ttlout4_config", kxsync_reg_ttlout4_config, 0, kreg_val_type_hex);
|
|
push_reg(ui->gridLayoutWidget, regoff++, "ttlout4_pulse_mode_duration", kxsync_reg_ttlout4_pulse_mode_duration, 0, kreg_val_type_decimal);
|
|
|
|
// 设置table的高度
|
|
auto qrect = ui->gridLayoutWidget->geometry();
|
|
qrect.setHeight(31 * regoff - 1);
|
|
ui->gridLayoutWidget->setGeometry(qrect);
|
|
}
|
|
//
|
|
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) {
|
|
ui->setupUi(this);
|
|
m_mainWindow = this;
|
|
|
|
/**
|
|
* @brief 填充部分UI
|
|
*/
|
|
construct_reg_table();
|
|
qInstallMessageHandler(log_output);
|
|
/*******************************************************************************
|
|
* 连接信号与槽 *
|
|
*******************************************************************************/
|
|
|
|
qRegisterMetaType<int32_t>("int32_t");
|
|
qRegisterMetaType<uint32_t>("uint32_t");
|
|
qRegisterMetaType<function<void()>>("function<void()>");
|
|
qRegisterMetaType<QFunction>("QFunction");
|
|
|
|
XSyncUdpFactoryImpl::Ins()->initialize();
|
|
connect(this, SIGNAL(append_log_signal(QString)), this, SLOT(append_log_slot(QString)));
|
|
connect(this, SIGNAL(updateUI_timeCodeInfo_signal(QString)), this, SLOT(updateUI_timeCodeInfo_slot(QString)));
|
|
connect(this, SIGNAL(updateUI_cameraSyncInfo_signal(QString)), this, SLOT(updateUI_cameraSyncInfo_slot(QString)));
|
|
connect(this, SIGNAL(updateUI_reg_signal(int32_t, uint32_t)), this, SLOT(updateUI_reg_slot(int32_t, uint32_t)));
|
|
connect(this, SIGNAL(doinui_signal(QFunction)), this, SLOT(doinui_slot(QFunction)));
|
|
m_thread.reset(new ZQThread("test", [this]() { mainWindowsRun(); }));
|
|
m_thread->start();
|
|
|
|
// m_xsync.reset(new Xsync());
|
|
|
|
Xsync::Ins().initialize(XSyncUdpFactoryImpl::Ins());
|
|
Xsync::Ins().Basic_registerOnTimecodeMsgCallback([this](xysnc_timecode_t *timecode_msg) { //
|
|
xysnc_timecode_t timecode = *timecode_msg;
|
|
QString text = QString(fmt("%02d:%02d:%02d:%02d", timecode.hour, timecode.minute, timecode.second, timecode.frame));
|
|
updateUI_timeCodeInfo_signal(text);
|
|
});
|
|
|
|
Xsync::Ins().Basic_registerOnCameraSyncMsgCallback([this](xysnc_camera_sync_data_t *camera_sync_msg) { //
|
|
xysnc_camera_sync_data_t camera_sync_data = *camera_sync_msg;
|
|
updateUI_cameraSyncInfo_signal(QString(fmt("%d", camera_sync_data.frameIndex)));
|
|
});
|
|
}
|
|
|
|
MainWindow::~MainWindow() { delete ui; }
|
|
|
|
#define XS_ASSERT(exptr) \
|
|
{ \
|
|
auto ecode = exptr; \
|
|
while (!(ecode == kxs_ec_success)) { \
|
|
ZLOGE(TAG, "do: %s fail,ecode:%d", #exptr, ecode); \
|
|
ZQThread::sleep(1); \
|
|
} \
|
|
}
|
|
|
|
void MainWindow::on_RefreshRegsButton_clicked() { //
|
|
ZLOGI(TAG, "on_refreshRegsButton_clicked");
|
|
// int32_t _t1, uint32_t _t2
|
|
|
|
QtConcurrent::run([this]() {
|
|
bool suc = true;
|
|
for (auto ® : m_regdisplayer) {
|
|
uint32_t regValue = 0;
|
|
auto ecode = Xsync::Ins().reg_read(reg.first, regValue);
|
|
int regoff = reg.first;
|
|
|
|
if (ecode == kxs_ec_success) {
|
|
ZLOGI(TAG, "reg_read %x success", reg.first);
|
|
m_regdisplayer[regoff]->regvalcache = regValue;
|
|
emit doinui_signal(QFunction([this, regoff, regValue]() { updateUI_timeCodeInfo(regoff); }));
|
|
} else {
|
|
emit doinui_signal(QFunction([this, regoff, regValue]() {
|
|
m_regdisplayer[regoff]->regvalcache = 0;
|
|
m_regdisplayer[regoff]->regBrowser->setText("error");
|
|
}));
|
|
}
|
|
}
|
|
});
|
|
}
|
|
void MainWindow::on_ClearLogButton_clicked() { //
|
|
ui->logbrowser->clear();
|
|
}
|
|
void MainWindow::on_Connect2XsyncButton_clicked() { //
|
|
ZLOGI(TAG, "connect %s", ui->IpInput->text().toStdString().c_str());
|
|
xs_error_code_t ecode = Xsync::Ins().connect(ui->IpInput->text().toStdString());
|
|
ZLOGI(TAG, "connect %s ecode:%s", ui->IpInput->text().toStdString().c_str(), xs_error_code_2_str(ecode));
|
|
}
|
|
void MainWindow::mainWindowsRun() { //
|
|
|
|
// auto xsudp = XSyncUdpFactoryImpl::Ins()->createXSUDP();
|
|
// XS_ASSERT(xsudp->initialize("0.0.0.0", 9999));
|
|
// xsudp->startReceive([this, xsudp](XsyncNetAdd &from, uint8_t *data, size_t length) {
|
|
// // ZLOGI(TAG, "receive from <%s:%d> (%d) :%s", from.ip.c_str(), from.port, data, length);
|
|
// xsudp->sendto(from, "hello\n", 5, NULL);
|
|
// });
|
|
}
|
|
|
|
#define DO_XSYNC_FUNC(exptr) \
|
|
{ \
|
|
auto ecode = exptr; \
|
|
if (!(ecode == kxs_ec_success)) { \
|
|
ZLOGE(TAG, "do: %s fail,ecode:[%d](%s)", #exptr, ecode, xs_error_code_2_str(ecode)); \
|
|
return; \
|
|
} else { \
|
|
ZLOGI(TAG, "do: %s success", #exptr); \
|
|
} \
|
|
}
|
|
|
|
void MainWindow::on_GenNewMac_clicked() { DO_XSYNC_FUNC(Xsync::Ins().Basic_generatorNewMac()); }
|
|
void MainWindow::on_FactoryReset_clicked() { DO_XSYNC_FUNC(Xsync::Ins().Basic_factoryReset()); }
|
|
void MainWindow::on_Reboot_clicked() { DO_XSYNC_FUNC(Xsync::Ins().Basic_reboot()); }
|
|
void MainWindow::on_ChangeNetCfg_clicked() { //
|
|
DO_XSYNC_FUNC(Xsync::Ins().Basic_changeNetworkConfig(ui->ChangeNetCfg_ip->text().toStdString(), ui->ChangeNetCfg_mask->text().toStdString(), ui->ChangeNetCfg_gateway->text().toStdString()));
|
|
}
|
|
|
|
void MainWindow::on_WriteReg_clicked() {
|
|
uint32_t regadd = str2int(ui->RegAdd->text());
|
|
uint32_t regval = str2int(ui->RegVal->text());
|
|
|
|
ZLOGI(TAG, "write reg 0x%08x %d", regadd, regval);
|
|
uint32_t readbakval = 0;
|
|
DO_XSYNC_FUNC(Xsync::Ins().reg_write(regadd, regval, readbakval));
|
|
|
|
ZLOGI(TAG, "write reg 0x%08x 0x%08x ,readback:0x%08x success", regadd, regval, readbakval);
|
|
ui->RegVal->setText(QString(fmt("0x%08x", readbakval)));
|
|
}
|
|
void MainWindow::on_ReadReg_clicked() {
|
|
uint32_t regadd = str2int(ui->RegAdd->text());
|
|
uint32_t regval = 0;
|
|
DO_XSYNC_FUNC(Xsync::Ins().reg_read(regadd, regval));
|
|
ZLOGI(TAG, "read reg 0x%08x 0x%08x success", regadd, regval);
|
|
ui->RegVal->setText(QString(fmt("0x%08x", regval)));
|
|
}
|
|
|
|
void MainWindow::on_TTLOutputMoudle_Update_clicked() {
|
|
int32_t ID = //
|
|
ui->TTLOutputMoudle_ID->currentText().toInt();
|
|
auto InputSigType = //
|
|
xsync_internal_signal::str_to_signal_type(ui->TTLOutputMoudle_InputSigType->currentText().toStdString());
|
|
auto OutputSigType = //
|
|
xsync_ttlout_module::str_to_output_signal_type(ui->TTLOutputMoudle_OutputSigType->currentText().toStdString());
|
|
uint32_t TriggerModePulseWidth = //
|
|
ui->TTLOutputMoudle_TriggerModePulseWidth->text().toUInt();
|
|
uint32_t TriggerModePulseDelay = //
|
|
ui->TTLOutputMoudle_TriggerModePulseDelay->text().toUInt();
|
|
|
|
ZLOGI(TAG, "on_TTLOutputMoudle_Update_clicked ID:%d InputSigType:%d OutputSigType:%d TriggerModePulseWidth:%d TriggerModePulseDelay:%d", //
|
|
ID, InputSigType, OutputSigType, TriggerModePulseWidth, TriggerModePulseDelay);
|
|
|
|
DO_XSYNC_FUNC(Xsync::Ins().TTLOutputModule_setInputSigType(ID, InputSigType));
|
|
DO_XSYNC_FUNC(Xsync::Ins().TTLOutputModule_setOutputSigType(ID, OutputSigType));
|
|
DO_XSYNC_FUNC(Xsync::Ins().TTLOutputModule_setTriggerModePulseWidth(ID, TriggerModePulseWidth));
|
|
DO_XSYNC_FUNC(Xsync::Ins().TTLOutputModule_setTriggerModePulseDelay(ID, TriggerModePulseDelay));
|
|
}
|
|
|
|
void MainWindow::on_TTLOutputMoudle_Read_clicked() {
|
|
xsync_internal_signal::signal_type_t InputSigType;
|
|
xsync_ttlout_module::output_signal_type_t OutputSigType;
|
|
uint32_t TriggerModePulseWidth;
|
|
uint32_t TriggerModePulseDelay;
|
|
|
|
int32_t ID = //
|
|
ui->TTLOutputMoudle_ID->currentText().toInt();
|
|
|
|
DO_XSYNC_FUNC(Xsync::Ins().TTLOutputModule_getInputSigType(ID, InputSigType));
|
|
DO_XSYNC_FUNC(Xsync::Ins().TTLOutputModule_getOutputSigType(ID, OutputSigType));
|
|
DO_XSYNC_FUNC(Xsync::Ins().TTLOutputModule_getTriggerModePulseWidth(ID, TriggerModePulseWidth));
|
|
DO_XSYNC_FUNC(Xsync::Ins().TTLOutputModule_getTriggerModePulseDelay(ID, TriggerModePulseDelay));
|
|
|
|
ui->TTLOutputMoudle_InputSigType->setCurrentText(QString::fromStdString(xsync_internal_signal::signal_type_to_str(InputSigType)));
|
|
ui->TTLOutputMoudle_OutputSigType->setCurrentText(QString::fromStdString(xsync_ttlout_module::output_signal_type_to_str(OutputSigType)));
|
|
ui->TTLOutputMoudle_TriggerModePulseWidth->setText(QString::number(TriggerModePulseWidth));
|
|
ui->TTLOutputMoudle_TriggerModePulseDelay->setText(QString::number(TriggerModePulseDelay));
|
|
}
|