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

#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");
}
}