|
|
@ -0,0 +1,93 @@ |
|
|
|
#include "mainwindow.h"
|
|
|
|
|
|
|
|
#include <QDateTime>
|
|
|
|
#include <QMessageBox>
|
|
|
|
#include <QtConcurrent>
|
|
|
|
#include <QtSerialPort/QSerialPort>
|
|
|
|
#include <QtSerialPort/QSerialPortInfo>
|
|
|
|
|
|
|
|
#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();
|
|
|
|
// }
|
|
|
|
} |