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.

114 lines
2.8 KiB

2 years ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
1 year ago
1 year ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years 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 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 "logger.hpp"
  9. using namespace iflytop;
  10. using namespace std;
  11. static MainWindow *m_mainWindow;
  12. ZQThread *m_zqthread;
  13. #define TAG "MainWindow"
  14. static const char *fmt(const char *fmt, ...) {
  15. va_list args;
  16. va_start(args, fmt);
  17. static char buf[1024] = {0};
  18. vsnprintf(buf, sizeof(buf), fmt, args);
  19. va_end(args);
  20. return buf;
  21. }
  22. static const uint32_t str2int(QString str) {
  23. // 如果0x开头,??16进制转换
  24. // 如果0b开头,??2进制转换
  25. // 否则??10进制转换
  26. // 去除掉str中_
  27. str.remove("_");
  28. if (str.startsWith("0x")) {
  29. return str.toUInt(nullptr, 16);
  30. } else if (str.startsWith("0b")) {
  31. // remove 0b
  32. str.remove(0, 2);
  33. return str.toUInt(nullptr, 2);
  34. } else {
  35. return str.toUInt(nullptr, 10);
  36. }
  37. }
  38. void MainWindow::log_output(QtMsgType type, const QMessageLogContext &context, const QString &msg) {}
  39. void MainWindow::doinui_slot(QFunction func) {
  40. if (func.get()) func.get()();
  41. }
  42. void MainWindow::constructUI() {}
  43. MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) {
  44. ui->setupUi(this);
  45. m_mainWindow = this;
  46. qRegisterMetaType<int32_t>("int32_t");
  47. qRegisterMetaType<uint32_t>("uint32_t");
  48. qRegisterMetaType<float>("float");
  49. qRegisterMetaType<function<void()>>("function<void()>");
  50. qRegisterMetaType<QFunction>("QFunction");
  51. connect(this, SIGNAL(doinui_signal(QFunction)), this, SLOT(doinui_slot(QFunction)));
  52. constructUI();
  53. }
  54. void MainWindow::dumpLog(const char *fmt, ...) {
  55. va_list args;
  56. va_start(args, fmt);
  57. char buf[1024] = {0};
  58. vsnprintf(buf, sizeof(buf), fmt, args);
  59. // qDebug() << buf;
  60. va_end(args);
  61. QString text(buf);
  62. QString info;
  63. // zos_get_ticket
  64. info.append(QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss.zzz"));
  65. info.append(" [Info]:");
  66. info.append(text);
  67. static int id;
  68. // informationBrowser
  69. emit doinui_signal(QFunction([this, info]() {
  70. if (ui->instructionPreview->document()->lineCount() > 100) {
  71. ui->instructionPreview->document()->clear();
  72. }
  73. ui->instructionPreview->append(info);
  74. }));
  75. }
  76. void MainWindow::displayInfo(bool suc, QString info) {
  77. emit doinui_signal(QFunction([this, info, suc]() {
  78. static int cnt = 0;
  79. cnt++;
  80. QString _info;
  81. _info.append("[");
  82. _info.append(QString::number(cnt));
  83. _info.append("] ");
  84. _info.append(info);
  85. if (suc) {
  86. ui->informationBrowser->setStyleSheet("color: green");
  87. } else {
  88. ui->informationBrowser->setStyleSheet("color: red");
  89. }
  90. ui->informationBrowser->setText(_info);
  91. }));
  92. }
  93. MainWindow::~MainWindow() { delete ui; }