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.
|
|
#include "mainwindow.h"
#include <QDateTime>
#include <QMessageBox>
#include <QtConcurrent>
#include <QtSerialPort/QSerialPort>
#include <QtSerialPort/QSerialPortInfo>
#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"); } }
|