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.
131 lines
3.7 KiB
131 lines
3.7 KiB
#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");
|
|
}
|
|
}
|