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

1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
  1. #include "mainwindow.h"
  2. #include <QDateTime>
  3. #include <QMessageBox>
  4. #include <QtConcurrent>
  5. #include <QtSerialPort/QSerialPort>
  6. #include <QtSerialPort/QSerialPortInfo>
  7. #include "./ui_mainwindow.h"
  8. #include "zqui/base/QFunction.hpp"
  9. #include "zqui/channelmgr/channelmgr.hpp"
  10. //
  11. #include "zqui/appmgr/appmgr.hpp"
  12. #include "zqui/zqui.hpp"
  13. // #include "app/syncbox16ch.h"
  14. // #include "version.h"
  15. using namespace iflytop;
  16. MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) {
  17. ui->setupUi(this);
  18. buildUI();
  19. ui->serialPortCB->installEventFilter(this);
  20. startTimer(1000);
  21. QWidget *app = AppMgr::ins()->buildApp(ui->app_content);
  22. if (app) app->show();
  23. }
  24. void MainWindow::buildUI() {
  25. QTSerialChannel *serialch = &ChannelMgr::ins()->serialCh;
  26. /**
  27. * @brief UI
  28. */
  29. { fillinSerialPort(); }
  30. ui->serialBaudrateCB->addItem("115200");
  31. ui->serialBaudrateCB->addItem("500000");
  32. ui->serialBaudrateCB->addItem("2000000");
  33. ui->serialBaudrateCB->setCurrentIndex(0);
  34. connect(ui->serialOpenKey, &QPushButton::clicked, this, [=](bool check) {
  35. // 打开串口
  36. if (ui->serialOpenKey->text() == "打开") {
  37. serialch->setPortName(ui->serialPortCB->currentText().toStdString());
  38. serialch->setBaudRate(ui->serialBaudrateCB->currentText().toInt());
  39. serialch->setDataBits(QSerialPort::Data8);
  40. serialch->setParity(QSerialPort::NoParity);
  41. serialch->setFlowControl(QSerialPort::NoFlowControl);
  42. serialch->setStopBits(QSerialPort::OneStop);
  43. /**
  44. * @brief
  45. */
  46. if (!serialch->open()) {
  47. QMessageBox::about(NULL, "提示", "串口无法打开,串口不存在或已被占??");
  48. return;
  49. }
  50. ui->serialOpenKey->setText("关闭");
  51. // 下拉菜单控件使能
  52. ui->serialBaudrateCB->setEnabled(false);
  53. ui->serialPortCB->setEnabled(false);
  54. } else {
  55. serialch->close();
  56. ui->serialOpenKey->setText("打开");
  57. ui->serialBaudrateCB->setEnabled(true);
  58. ui->serialPortCB->setEnabled(true);
  59. }
  60. });
  61. }
  62. void MainWindow::on_serialPortCB_customContextMenuRequested(const QPoint &pos) {}
  63. void MainWindow::fillinSerialPort() {
  64. // int curIndex = ui->serialPortCB->currentIndex();
  65. ui->serialPortCB->clear();
  66. const auto infos = QSerialPortInfo::availablePorts();
  67. for (const QSerialPortInfo &info : infos) {
  68. if (info.isBusy()) continue;
  69. ui->serialPortCB->addItem(info.portName());
  70. }
  71. }
  72. #if 1
  73. bool MainWindow::eventFilter(QObject *watched, QEvent *event) {
  74. if (event->type() == QEvent::MouseButtonPress) {
  75. if (watched == ui->serialPortCB) {
  76. fillinSerialPort();
  77. }
  78. }
  79. return QMainWindow::eventFilter(watched, event);
  80. }
  81. #endif
  82. void MainWindow::timerEvent(QTimerEvent *event) {
  83. // if (ui->serialOpenKey->text() == "打开") {
  84. // fillinSerialPort();
  85. // }
  86. }
  87. void MainWindow::iShow(QString content) {
  88. QString info;
  89. info.append(content);
  90. ui->CmdBrowser->append(info);
  91. }
  92. void MainWindow::iClear() { ui->CmdBrowser->clear(); }
  93. void MainWindow::reportShow(QString content) {
  94. QString info;
  95. info.append(content);
  96. ui->ReportBrowser->append(info);
  97. }
  98. void MainWindow::reportClear() { ui->ReportBrowser->clear(); }
  99. void MainWindow::binaryShow(QString content) {
  100. QString info;
  101. info.append(content);
  102. ui->BinaryBrowser->append(info);
  103. }
  104. void MainWindow::binaryClear() { ui->BinaryBrowser->clear(); }
  105. void MainWindow::setConnectedStatus(bool connect) {
  106. if (connect) {
  107. ui->DeviceConnectStateTB->setText("已连接");
  108. ui->DeviceConnectStateTB->setStyleSheet("color: green");
  109. } else {
  110. ui->DeviceConnectStateTB->setText("未连接");
  111. ui->DeviceConnectStateTB->setStyleSheet("color: red");
  112. }
  113. }