Browse Source

update

master
zhaohe 1 year ago
parent
commit
bab4f3f9f4
  1. 4
      src/app/main.cpp
  2. 2
      src/zqui/channelmgr/qt_serial_datachannel.hpp
  3. 34
      src/zqui/mainpage/mainwindow.cpp
  4. 11
      src/zqui/mainpage/mainwindow.h
  5. 140
      src/zqui/mainpage/mainwindow.ui
  6. 80
      src/zqui/zqui.cpp
  7. 82
      src/zqui/zqui.hpp

4
src/app/main.cpp

@ -19,6 +19,7 @@
#include <vector>
#include "zqui/mainpage/mainwindow.h"
#include "zqui/zqui.hpp"
//
#include <winsock2.h>
//
@ -33,7 +34,6 @@ int main(int argc, char *argv[]) {
WSAStartup(MAKEWORD(2, 2), &wsaData);
QApplication a(argc, argv);
MainWindow w;
w.show();
ZQUI::ins()->initialize();
return a.exec();
}

2
src/zqui/channelmgr/qt_serial_datachannel.hpp

@ -54,7 +54,7 @@ class QTSerialChannel {
bool open();
void close();
bool setBaudRate(qint32 baudRate) { m_baudRate = baudRate; }
void setBaudRate(qint32 baudRate) { m_baudRate = baudRate; }
qint32 baudRate() const { return m_baudRate; }
void setPortName(string name) { m_name = name; }

34
src/zqui/mainpage/mainwindow.cpp

@ -7,7 +7,10 @@
#include <QtSerialPort/QSerialPortInfo>
#include "./ui_mainwindow.h"
#include "zqui/base/QFunction.hpp"
#include "zqui/channelmgr/channelmgr.hpp"
//
#include "zqui/zqui.hpp"
// #include "app/syncbox16ch.h"
// #include "version.h"
@ -91,3 +94,34 @@ void MainWindow::timerEvent(QTimerEvent *event) {
// fillinSerialPort();
// }
}
void MainWindow::iShow(QString content) {
QString info;
info.append(content);
ui->CmdBrowser->append(info);
}
void MainWindow::iClear() { ui->CmdBrowser->clear(); }
void MainWindow::reportShow(QString content) {
QString info;
info.append(content);
ui->ReportBrowser->append(info);
}
void MainWindow::reportClear() { ui->ReportBrowser->clear(); }
void MainWindow::binaryShow(QString content) {
QString info;
info.append(content);
ui->BinaryBrowser->append(info);
}
void MainWindow::binaryClear() { ui->BinaryBrowser->clear(); }
void MainWindow::setConnectedStatus(bool connect) {
if (connect) {
ui->DeviceConnectStateTB->setText("已连接");
ui->DeviceConnectStateTB->setStyleSheet("color: green");
} else {
ui->DeviceConnectStateTB->setText("未连接");
ui->DeviceConnectStateTB->setStyleSheet("color: red");
}
}

11
src/zqui/mainpage/mainwindow.h

@ -45,6 +45,17 @@ class MainWindow : public QMainWindow {
MainWindow(QWidget *parent = nullptr);
~MainWindow() {};
public:
void iShow(QString content);
void iClear();
void reportShow(QString content);
void reportClear();
void binaryShow(QString content);
void binaryClear();
void setConnectedStatus(bool connect);
private slots:
void on_serialPortCB_customContextMenuRequested(const QPoint &pos);
bool eventFilter(QObject *watched, QEvent *event);

140
src/zqui/mainpage/mainwindow.ui

@ -655,6 +655,12 @@ QGroupBox:title {
</size>
</property>
<layout class="QVBoxLayout" name="verticalLayout_2">
<property name="leftMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QGroupBox" name="serialSettingGB">
<property name="maximumSize">
@ -702,6 +708,94 @@ QGroupBox:title {
</widget>
</item>
<item>
<widget class="QGroupBox" name="StateGB">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>16777215</height>
</size>
</property>
<property name="autoFillBackground">
<bool>false</bool>
</property>
<property name="title">
<string>状态</string>
</property>
<layout class="QFormLayout" name="formLayout_2">
<item row="0" column="0">
<widget class="QLabel" name="DeviceConnectStateLable">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>25</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>25</height>
</size>
</property>
<property name="text">
<string>设备连接状态</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QTextBrowser" name="DeviceConnectStateTB">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>25</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>25</height>
</size>
</property>
<property name="lineWrapColumnOrWidth">
<number>2</number>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="groupBox">
<property name="title">
<string>软件信息</string>
</property>
<layout class="QGridLayout" name="gridLayout_3"/>
</widget>
</item>
<item>
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
@ -714,10 +808,19 @@ QGroupBox:title {
</property>
</spacer>
</item>
<item alignment="Qt::AlignRight">
<widget class="QLabel" name="label">
<item>
<widget class="QLabel" name="homeurl">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string/>
<string>&lt;a href=&quot;www.iflytop.com&quot;&gt;www.iflytop.com</string>
</property>
<property name="openExternalLinks">
<bool>true</bool>
</property>
</widget>
</item>
@ -785,7 +888,7 @@ QGroupBox:title {
<enum>QTabWidget::Rounded</enum>
</property>
<property name="currentIndex">
<number>1</number>
<number>0</number>
</property>
<property name="elideMode">
<enum>Qt::ElideLeft</enum>
@ -798,7 +901,7 @@ QGroupBox:title {
</property>
<widget class="QWidget" name="CmdTab">
<attribute name="title">
<string>指令</string>
<string>指令交互</string>
</attribute>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<property name="spacing">
@ -823,7 +926,7 @@ QGroupBox:title {
</widget>
<widget class="QWidget" name="ReportTAB">
<attribute name="title">
<string>上报</string>
<string>上报数据流</string>
</attribute>
<layout class="QHBoxLayout" name="horizontalLayout_3">
<property name="spacing">
@ -846,6 +949,31 @@ QGroupBox:title {
</item>
</layout>
</widget>
<widget class="QWidget" name="tab">
<attribute name="title">
<string>二进制流</string>
</attribute>
<layout class="QHBoxLayout" name="horizontalLayout_4">
<property name="spacing">
<number>0</number>
</property>
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QTextBrowser" name="BinaryBrowser"/>
</item>
</layout>
</widget>
</widget>
</item>
</layout>

80
src/zqui/zqui.cpp

@ -0,0 +1,80 @@
#include "zqui.hpp"
#include "zqui/mainpage/mainwindow.h"
using namespace std;
#define TAG "ZQUI"
/***********************************************************************************************************************
* PreviewShow *
***********************************************************************************************************************/
MainWindow *pmainW;
ZQUI *ZQUI::ins() {
static ZQUI instance;
return &instance;
}
void ZQUI::iShow(const char *fmt, ...) {
va_list args;
va_start(args, fmt);
char buf[1024] = {0};
vsnprintf(buf, sizeof(buf), fmt, args);
va_end(args);
QString text(buf);
pmainW->iShow(text);
}
void ZQUI::iRawShow(const char *fmt, ...) {
va_list args;
va_start(args, fmt);
char buf[1024] = {0};
vsnprintf(buf, sizeof(buf), fmt, args);
va_end(args);
QString text(buf);
pmainW->iShow(text);
}
void ZQUI::iClear() { pmainW->iClear(); }
void ZQUI::reportShow(const char *fmt, ...) {
va_list args;
va_start(args, fmt);
char buf[1024] = {0};
vsnprintf(buf, sizeof(buf), fmt, args);
va_end(args);
QString text(buf);
pmainW->reportShow(text);
}
void ZQUI::reportClear() { pmainW->reportClear(); }
void ZQUI::binaryShow(const char *fmt, ...) {
va_list args;
va_start(args, fmt);
char buf[1024] = {0};
vsnprintf(buf, sizeof(buf), fmt, args);
va_end(args);
QString text(buf);
pmainW->binaryShow(text);
}
void ZQUI::binaryClear() { pmainW->binaryClear(); }
void ZQUI::initialize() {
qRegisterMetaType<int32_t>("int32_t");
qRegisterMetaType<uint32_t>("uint32_t");
qRegisterMetaType<float>("float");
qRegisterMetaType<function<void()>>("function<void()>");
qRegisterMetaType<QFunction>("QFunction");
connect(this, SIGNAL(doinui_signal(QFunction)), this, SLOT(doinui_slot(QFunction)));
pmainW = new MainWindow();
pmainW->show();
}
void ZQUI::doinui(function<void()> dowhat) {
emit doinui_signal(QFunction([dowhat]() {
if (dowhat) dowhat();
}));
}
void ZQUI::doinui_slot(QFunction func) {
if (func.get()) func.get()();
}
void ZQUI::setDeviceConnectedStatus(bool connect) { pmainW->setConnectedStatus(connect); }

82
src/zqui/zqui.hpp

@ -0,0 +1,82 @@
#pragma once
#include <QMainWindow>
#include <QtCore/QVariant>
#include <QtWidgets/QAction>
#include <QtWidgets/QApplication>
#include <QtWidgets/QComboBox>
#include <QtWidgets/QFormLayout>
#include <QtWidgets/QGridLayout>
#include <QtWidgets/QGroupBox>
#include <QtWidgets/QHBoxLayout>
#include <QtWidgets/QLabel>
#include <QtWidgets/QMainWindow>
#include <QtWidgets/QMenu>
#include <QtWidgets/QMenuBar>
#include <QtWidgets/QPushButton>
#include <QtWidgets/QSpacerItem>
#include <QtWidgets/QStatusBar>
#include <QtWidgets/QTabWidget>
#include <QtWidgets/QTextBrowser>
#include <QtWidgets/QTextEdit>
#include <QtWidgets/QVBoxLayout>
#include <QtWidgets/QWidget>
//
#include <fstream>
#include <functional>
#include <iostream>
#include <list>
#include <map>
#include <memory>
#include <set>
#include <sstream>
#include <string>
#include <vector>
#include "base/QFunction.hpp"
class ZQUI : public QObject {
Q_OBJECT
public:
typedef std::function<void(QString)> display_fn_t;
typedef std::function<void()> display_clear_fn_t;
public:
static ZQUI *ins();
void initialize();
void doinui(std::function<void()> dowhat);
void iShow(const char *fmt, ...);
void iRawShow(const char *fmt, ...);
void iClear();
void reportShow(const char *fmt, ...);
void reportClear();
void binaryShow(const char *fmt, ...);
void binaryClear();
void setDeviceConnectedStatus(bool connect);
private slots:
void doinui_slot(QFunction);
signals:
void doinui_signal(QFunction);
};
#define ISHOW(fmt, ...) ZQUI::ins()->iShow(fmt, ##__VA_ARGS__)
#define IRSHOW(fmt, ...) ZQUI::ins()->iRawShow(fmt, ##__VA_ARGS__)
#define ICLEAR() ZQUI::ins()->iClear()
#define RSHOW(fmt, ...) ZQUI::ins()->reportShow(fmt, ##__VA_ARGS__)
#define RCLEAR() ZQUI::ins()->reportClear()
#define BSHOW(fmt, ...) ZQUI::ins()->binaryShow(fmt, ##__VA_ARGS__)
#define BCLEAR() ZQUI::ins()->binaryClear()
#define DOINUI(fn) ZQUI::ins()->doinui(fn)
Loading…
Cancel
Save