#include "mainwindow.h" #include #include #include #include #include #include "./ui_mainwindow.h" #include "zqui/base/QFunction.hpp" #include "zqui/channelmgr/channelmgr.hpp" // #include "zqui/appmgr/appmgr.hpp" #include "zqui/zqui.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); QWidget *app = AppMgr::ins()->buildApp(ui->app_content); if (app) app->show(); } 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(); // } } 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"); } }