Browse Source

update

master
zhaohe 2 years ago
parent
commit
7d1e37a8bf
  1. 2
      libxsync
  2. 99
      mainwindow.cpp
  3. 1
      mainwindow.h

2
libxsync

@ -1 +1 @@
Subproject commit 8433478652974055656b7f257047f654077bc5f8
Subproject commit 5a720b8a84ea7f5aa7fdd269ffb125ef29fdbfad

99
mainwindow.cpp

@ -11,6 +11,34 @@ 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);
@ -24,7 +52,7 @@ void MainWindow::push_reg(QWidget *parent, int off, const char *regname, int32_t
{
auto *label = new QLabel(parent);
label->setObjectName(QString::fromUtf8("label"));
label->setText(QString(regname));
label->setText(QString(fmt("%s(0x%04x)", regname, regadd)));
QSizePolicy sizePolicy1(QSizePolicy::Minimum, QSizePolicy::Expanding);
sizePolicy1.setHorizontalStretch(0);
sizePolicy1.setVerticalStretch(0);
@ -78,6 +106,24 @@ void MainWindow::push_reg(QWidget *parent, int off, const char *regname, int32_t
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 = regval;
m_regdisplayer[regadd]->regBrowser->setText(QString::number(regval, 16));
} 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);
}
@ -85,13 +131,16 @@ void MainWindow::push_reg(QWidget *parent, int off, const char *regname, int32_t
}
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);
int regoff = 1;
push_reg(ui->gridLayoutWidget, regoff++, "reg1", 0x1000, 0);
push_reg(ui->gridLayoutWidget, regoff++, "reg1", 0x1001, 0);
push_reg(ui->gridLayoutWidget, regoff++, "reg1", 0x1002, 0);
push_reg(ui->gridLayoutWidget, regoff++, "reg1", 0x1003, 0);
push_reg(ui->gridLayoutWidget, regoff++, "reg1", 0x1004, 0);
// 设置table的高度
auto qrect = ui->gridLayoutWidget->geometry();
qrect.setHeight(31 * 5);
qrect.setHeight(31 * regoff - 1);
ui->gridLayoutWidget->setGeometry(qrect);
}
//
@ -124,10 +173,25 @@ void MainWindow::on_RefreshRegsButton_clicked() { //
ZLOGI(TAG, "on_refreshRegsButton_clicked");
QtConcurrent::run([this]() {
while (true) {
ZLOGI(TAG, "on_refreshRegsButton_clicked......");
auto ecode = Xsync::Ins().reg_write(0xABCDDCBA, 0x12345678);
ZLOGI(TAG, "reg_read ecode:%s", xs_error_code_2_str(ecode));
bool suc = true;
for (auto &reg : m_regdisplayer) {
uint32_t regValue = 0;
auto ecode = Xsync::Ins().reg_read(reg.first, regValue);
if (ecode == kxs_ec_success) {
ZLOGI(TAG, "reg_read %x success", reg.first);
reg.second->regvalcache = regValue;
reg.second->regBrowser->setText(QString::number(regValue, 16));
} else {
ZLOGE(TAG, "reg_read %x fail,ecode:%s", reg.first, xs_error_code_2_str(ecode));
suc = false;
break;
}
}
if (suc) {
ZLOGI(TAG, "readreg end...");
} else {
ZLOGI(TAG, "readreg error");
}
});
@ -144,11 +208,10 @@ void MainWindow::on_Connect2XsyncButton_clicked() { //
}
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);
});
// 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);
// });
}

1
mainwindow.h

@ -45,6 +45,7 @@ class DispalyRegIterm {
QTextBrowser *regBrowser = 0;
QTextEdit *regEditer = 0;
QPushButton *writerButton = 0;
uint32_t regvalcache;
};
class MainWindow : public QMainWindow {

Loading…
Cancel
Save