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.
131 lines
4.6 KiB
131 lines
4.6 KiB
#include "mainwindow.h"
|
|
|
|
#include <QDateTime>
|
|
|
|
#include "./ui_mainwindow.h"
|
|
#include "src/logger.hpp"
|
|
#include "src/xsync_udp_factory_impl.hpp"
|
|
|
|
using namespace iflytop;
|
|
using namespace std;
|
|
|
|
static MainWindow *m_mainWindow;
|
|
#define TAG "MainWindow"
|
|
|
|
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::push_reg(QWidget *parent, int off, const char *regname, int32_t regadd, int32_t rwflag) {
|
|
DispalyRegIterm *regitem = new DispalyRegIterm();
|
|
{
|
|
auto *label = new QLabel(parent);
|
|
label->setObjectName(QString::fromUtf8("label"));
|
|
label->setText(QString(regname));
|
|
QSizePolicy sizePolicy1(QSizePolicy::Minimum, QSizePolicy::Expanding);
|
|
sizePolicy1.setHorizontalStretch(0);
|
|
sizePolicy1.setVerticalStretch(0);
|
|
sizePolicy1.setHeightForWidth(label->sizePolicy().hasHeightForWidth());
|
|
label->setSizePolicy(sizePolicy1);
|
|
label->setMinimumSize(QSize(100, 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("demo"));
|
|
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);
|
|
|
|
regitem->writerButton = button;
|
|
ui->reg_table->addWidget(button, off, 3, 1, 1);
|
|
}
|
|
m_regdisplayer[regadd] = regitem;
|
|
}
|
|
|
|
void MainWindow::construct_reg_table() { //
|
|
push_reg(ui->gridLayoutWidget, 1, "reg0", 0x1000, 0);
|
|
push_reg(ui->gridLayoutWidget, 2, "reg1", 0x1001, 0);
|
|
push_reg(ui->gridLayoutWidget, 3, "reg1", 0x1002, 0);
|
|
push_reg(ui->gridLayoutWidget, 4, "reg1", 0x1003, 0);
|
|
push_reg(ui->gridLayoutWidget, 5, "reg1", 0x1004, 0);
|
|
auto qrect = ui->gridLayoutWidget->geometry();
|
|
qrect.setHeight(31 * 5);
|
|
ui->gridLayoutWidget->setGeometry(qrect);
|
|
}
|
|
//
|
|
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) {
|
|
ui->setupUi(this);
|
|
m_mainWindow = this;
|
|
construct_reg_table();
|
|
connect(this, SIGNAL(append_log_signal(QString)), this, SLOT(append_log_slot(QString)));
|
|
qInstallMessageHandler(log_output);
|
|
|
|
m_thread.reset(new ZQThread("test", [this]() { mainWindowsRun(); }));
|
|
m_thread->start();
|
|
}
|
|
|
|
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::mainWindowsRun() { //
|
|
XSyncUdpFactoryImpl::Ins()->initialize();
|
|
|
|
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);
|
|
});
|
|
|
|
}
|