diff --git a/src/app/main.cpp b/src/app/main.cpp index 49ba1df..361a991 100644 --- a/src/app/main.cpp +++ b/src/app/main.cpp @@ -18,7 +18,7 @@ #include #include -#include "zqtui/mainpage/mainwindow.h" +#include "zqui/mainpage/mainwindow.h" // #include // diff --git a/src/zqtui/mainpage/mainwindow.cpp b/src/zqtui/mainpage/mainwindow.cpp deleted file mode 100644 index 9e308df..0000000 --- a/src/zqtui/mainpage/mainwindow.cpp +++ /dev/null @@ -1,77 +0,0 @@ -#include "mainwindow.h" - -#include -#include -#include -#include -#include - -#include "./ui_mainwindow.h" -// #include "app/syncbox16ch.h" -// #include "version.h" - -//syncbox16ch *app; -MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { - ui->setupUi(this); - - // app = new syncbox16ch(ui->app_content); - // app->show(); -} - -void MainWindow::constructChannel() { - // /** - // * @brief 指令串口UI - // */ - // { - // const auto infos = QSerialPortInfo::availablePorts(); - // for (const QSerialPortInfo &info : infos) { - // ui->serialPortCB->addItem(info.portName()); - // } - // } - - // ui->serialBaudrateCB->addItem("2000000"); - // ui->serialBaudrateCB->setCurrentIndex(0); - - // connect(ui->serialPortRefreshKey, &QPushButton::clicked, this, [this](bool check) { - // ui->serialPortCB->clear(); - // const auto infos = QSerialPortInfo::availablePorts(); - // for (const QSerialPortInfo &info : infos) { - // ui->serialPortCB->addItem(info.portName()); - // } - // }); - - // connect(ui->serialOpenKey, &QPushButton::clicked, this, [=](bool check) { - // // 打开串口 - // if (ui->serialOpenKey->text() == "打开") { - // G_QTDataChannel.setPortName(ui->serialPortCB->currentText().toStdString()); - // G_QTDataChannel.setBaudRate(ui->serialBaudrateCB->currentText().toInt()); - // G_QTDataChannel.setDataBits(QSerialPort::Data8); - // G_QTDataChannel.setParity(QSerialPort::NoParity); - // G_QTDataChannel.setFlowControl(QSerialPort::NoFlowControl); - // G_QTDataChannel.setStopBits(QSerialPort::OneStop); - - // /** - // * @brief 串口打开时,初始化相应参数 - // */ - - // if (!G_QTDataChannel.open()) { - // QMessageBox::about(NULL, "提示", "串口无法打开,串口不存在或已被占??"); - // return; - // } - // ui->serialOpenKey->setText("关闭"); - // // 下拉菜单控件使能 - // ui->serialBaudrateCB->setEnabled(false); - // ui->serialPortCB->setEnabled(false); - // ui->serialPortRefreshKey->setEnabled(false); - - // IflytopCanbusMaster::ins()->updateChannelConfig(); - - // } else { - // G_QTDataChannel.close(); - // ui->serialOpenKey->setText("打开"); - // ui->serialBaudrateCB->setEnabled(true); - // ui->serialPortCB->setEnabled(true); - // ui->serialPortRefreshKey->setEnabled(true); - // } - // }); -} diff --git a/src/zqtui/base/QFunction.cpp b/src/zqui/base/QFunction.cpp similarity index 100% rename from src/zqtui/base/QFunction.cpp rename to src/zqui/base/QFunction.cpp diff --git a/src/zqtui/base/QFunction.hpp b/src/zqui/base/QFunction.hpp similarity index 100% rename from src/zqtui/base/QFunction.hpp rename to src/zqui/base/QFunction.hpp diff --git a/src/zqtui/base/logger.cpp b/src/zqui/base/logger.cpp similarity index 100% rename from src/zqtui/base/logger.cpp rename to src/zqui/base/logger.cpp diff --git a/src/zqtui/base/logger.hpp b/src/zqui/base/logger.hpp similarity index 100% rename from src/zqtui/base/logger.hpp rename to src/zqui/base/logger.hpp diff --git a/src/zqtui/base/zexception.hpp b/src/zqui/base/zexception.hpp similarity index 100% rename from src/zqtui/base/zexception.hpp rename to src/zqui/base/zexception.hpp diff --git a/src/zqtui/base/zqthread.cpp b/src/zqui/base/zqthread.cpp similarity index 100% rename from src/zqtui/base/zqthread.cpp rename to src/zqui/base/zqthread.cpp diff --git a/src/zqtui/base/zqthread.hpp b/src/zqui/base/zqthread.hpp similarity index 100% rename from src/zqtui/base/zqthread.hpp rename to src/zqui/base/zqthread.hpp diff --git a/src/zqtui/base/zworkqueue.cpp b/src/zqui/base/zworkqueue.cpp similarity index 100% rename from src/zqtui/base/zworkqueue.cpp rename to src/zqui/base/zworkqueue.cpp diff --git a/src/zqtui/base/zworkqueue.hpp b/src/zqui/base/zworkqueue.hpp similarity index 100% rename from src/zqtui/base/zworkqueue.hpp rename to src/zqui/base/zworkqueue.hpp diff --git a/src/zqui/channelmgr/channelmgr.cpp b/src/zqui/channelmgr/channelmgr.cpp new file mode 100644 index 0000000..e69de29 diff --git a/src/zqui/channelmgr/channelmgr.hpp b/src/zqui/channelmgr/channelmgr.hpp new file mode 100644 index 0000000..f1605ef --- /dev/null +++ b/src/zqui/channelmgr/channelmgr.hpp @@ -0,0 +1,38 @@ +#pragma once + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +// + +#include +// +#include +// +#include "qt_serial_datachannel.hpp" + +#define SDK_VERSION 1 + +namespace iflytop { +using namespace std; + +class ChannelMgr { + public: + QTSerialChannel serialCh; + + public: + static ChannelMgr* ins() { + static ChannelMgr chmgr; + return &chmgr; + } +}; + +} // namespace iflytop diff --git a/src/zqtui/channelmgr/qt_serial_datachannel.cpp b/src/zqui/channelmgr/qt_serial_datachannel.cpp similarity index 98% rename from src/zqtui/channelmgr/qt_serial_datachannel.cpp rename to src/zqui/channelmgr/qt_serial_datachannel.cpp index b551178..f38439d 100644 --- a/src/zqtui/channelmgr/qt_serial_datachannel.cpp +++ b/src/zqui/channelmgr/qt_serial_datachannel.cpp @@ -7,11 +7,11 @@ #pragma comment(lib, "ws2_32.lib") -#include "zqtui/base/logger.hpp" +#include "zqui/base/logger.hpp" using namespace iflytop; using namespace std; -using namespace clst; + #define TAG "QTDataChannel" @@ -131,7 +131,7 @@ bool QTSerialChannel::send(const uint8_t *data, size_t len) { dwBytesWrite, // 要发送的数据字节数 &dwBytesWrite, // DWORD*,用来接收返回成功发送的数据字节数 NULL); // NULL为同步发送,OVERLAPPED*为异步发送 - return dwBytesWrite; + return dwBytesWrite == len; } void QTSerialChannel::regRxListener(function cb) { m_rxcb = cb; } diff --git a/src/zqtui/channelmgr/qt_serial_datachannel.hpp b/src/zqui/channelmgr/qt_serial_datachannel.hpp similarity index 80% rename from src/zqtui/channelmgr/qt_serial_datachannel.hpp rename to src/zqui/channelmgr/qt_serial_datachannel.hpp index 361dd5e..be9453f 100644 --- a/src/zqtui/channelmgr/qt_serial_datachannel.hpp +++ b/src/zqui/channelmgr/qt_serial_datachannel.hpp @@ -20,12 +20,11 @@ #include #include // -#include "zqtui\base\zqthread.hpp" +#include "zqui\base\zqthread.hpp" #define SDK_VERSION 1 namespace iflytop { -namespace clst { using namespace std; // QT_CHARTS_USE_NAMESPACE @@ -58,11 +57,11 @@ class QTSerialChannel { bool setBaudRate(qint32 baudRate) { m_baudRate = baudRate; } qint32 baudRate() const { return m_baudRate; } - bool setPortName(string name) { m_name = name; } - bool setDataBits(QSerialPort::DataBits dataBits) { m_dataBits = dataBits; } - bool setParity(QSerialPort::Parity parity) { m_parity = parity; } - bool setStopBits(QSerialPort::StopBits stopBits) { m_stopBits = stopBits; } - bool setFlowControl(QSerialPort::FlowControl flowControl) { m_flowControl = flowControl; } + void setPortName(string name) { m_name = name; } + void setDataBits(QSerialPort::DataBits dataBits) { m_dataBits = dataBits; } + void setParity(QSerialPort::Parity parity) { m_parity = parity; } + void setStopBits(QSerialPort::StopBits stopBits) { m_stopBits = stopBits; } + void setFlowControl(QSerialPort::FlowControl flowControl) { m_flowControl = flowControl; } QSerialPort::DataBits dataBits() const { return m_dataBits; } QSerialPort::Parity parity() const { return m_parity; } @@ -72,5 +71,4 @@ class QTSerialChannel { private: int com_receive(uint8_t *rxbuf, int rxbufsize); }; -} // namespace clst } // namespace iflytop diff --git a/src/zqui/mainpage/mainwindow.cpp b/src/zqui/mainpage/mainwindow.cpp new file mode 100644 index 0000000..f957055 --- /dev/null +++ b/src/zqui/mainpage/mainwindow.cpp @@ -0,0 +1,93 @@ +#include "mainwindow.h" + +#include +#include +#include +#include +#include + +#include "./ui_mainwindow.h" +#include "zqui/channelmgr/channelmgr.hpp" +// #include "app/syncbox16ch.h" +// #include "version.h" + +using namespace iflytop; +MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { + ui->setupUi(this); + + buildUI(); + ui->serialPortCB->installEventFilter(this); + startTimer(1000); +} + +void MainWindow::buildUI() { + QTSerialChannel *serialch = &ChannelMgr::ins()->serialCh; + + /** + * @brief 指令串口UI + */ + { fillinSerialPort(); } + + ui->serialBaudrateCB->addItem("115200"); + ui->serialBaudrateCB->addItem("500000"); + ui->serialBaudrateCB->addItem("2000000"); + ui->serialBaudrateCB->setCurrentIndex(0); + + connect(ui->serialOpenKey, &QPushButton::clicked, this, [=](bool check) { + // 打开串口 + if (ui->serialOpenKey->text() == "打开") { + serialch->setPortName(ui->serialPortCB->currentText().toStdString()); + serialch->setBaudRate(ui->serialBaudrateCB->currentText().toInt()); + serialch->setDataBits(QSerialPort::Data8); + serialch->setParity(QSerialPort::NoParity); + serialch->setFlowControl(QSerialPort::NoFlowControl); + serialch->setStopBits(QSerialPort::OneStop); + + /** + * @brief 串口打开时,初始化相应参数 + */ + + if (!serialch->open()) { + QMessageBox::about(NULL, "提示", "串口无法打开,串口不存在或已被占??"); + return; + } + ui->serialOpenKey->setText("关闭"); + // 下拉菜单控件使能 + ui->serialBaudrateCB->setEnabled(false); + ui->serialPortCB->setEnabled(false); + } else { + serialch->close(); + ui->serialOpenKey->setText("打开"); + ui->serialBaudrateCB->setEnabled(true); + ui->serialPortCB->setEnabled(true); + } + }); +} + +void MainWindow::on_serialPortCB_customContextMenuRequested(const QPoint &pos) {} + +void MainWindow::fillinSerialPort() { + // int curIndex = ui->serialPortCB->currentIndex(); + ui->serialPortCB->clear(); + const auto infos = QSerialPortInfo::availablePorts(); + for (const QSerialPortInfo &info : infos) { + if (info.isBusy()) continue; + ui->serialPortCB->addItem(info.portName()); + } +} +#if 1 +bool MainWindow::eventFilter(QObject *watched, QEvent *event) { + if (event->type() == QEvent::MouseButtonPress) { + if (watched == ui->serialPortCB) { + fillinSerialPort(); + } + } + return QMainWindow::eventFilter(watched, event); +} +#endif + +void MainWindow::timerEvent(QTimerEvent *event) { + // if (ui->serialOpenKey->text() == "打开") { + // fillinSerialPort(); + // } +} diff --git a/src/zqtui/mainpage/mainwindow.h b/src/zqui/mainpage/mainwindow.h similarity index 78% rename from src/zqtui/mainpage/mainwindow.h rename to src/zqui/mainpage/mainwindow.h index f8dcc57..0bf808b 100644 --- a/src/zqtui/mainpage/mainwindow.h +++ b/src/zqui/mainpage/mainwindow.h @@ -45,7 +45,16 @@ class MainWindow : public QMainWindow { MainWindow(QWidget *parent = nullptr); ~MainWindow() {}; + private slots: + void on_serialPortCB_customContextMenuRequested(const QPoint &pos); + bool eventFilter(QObject *watched, QEvent *event); + + private: + void buildUI(); + + void fillinSerialPort(); + private: - void constructChannel(); + void timerEvent(QTimerEvent *event) override; }; #endif // MAINWINDOW_H diff --git a/src/zqtui/mainpage/mainwindow.ui b/src/zqui/mainpage/mainwindow.ui similarity index 99% rename from src/zqtui/mainpage/mainwindow.ui rename to src/zqui/mainpage/mainwindow.ui index 0366581..bef4366 100644 --- a/src/zqtui/mainpage/mainwindow.ui +++ b/src/zqui/mainpage/mainwindow.ui @@ -667,16 +667,6 @@ QGroupBox:title { 端口 - - - - - - - 串口号 - - - @@ -684,20 +674,27 @@ QGroupBox:title { - - + + + + 串口号 + + - + 打开 - - - - 刷新 + + + + + + + QComboBox::AdjustToContents diff --git a/src/zqtui/version.h b/src/zqui/version.h similarity index 100% rename from src/zqtui/version.h rename to src/zqui/version.h