biosworker.h 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. #ifndef BIOSWORKER_H
  2. #define BIOSWORKER_H
  3. #include <QObject>
  4. #include <QSerialPort>
  5. #include <QRegularExpression>
  6. #include <QHash>
  7. #include <QVector>
  8. #include <QSet>
  9. struct DimmRecord
  10. {
  11. QString sn;
  12. int socket = -1;
  13. int channel = -1;
  14. int dimm = -1;
  15. int rank = -1;
  16. int bit = -1;
  17. };
  18. class BiosWorker : public QObject
  19. {
  20. Q_OBJECT
  21. public:
  22. explicit BiosWorker(QObject *parent = nullptr);
  23. ~BiosWorker();
  24. void setPortName(const QString &name);
  25. signals:
  26. void signalPID();
  27. public slots:
  28. void openSerial();
  29. void sendNextCommand();
  30. void onTestFilePath(const QString &path);
  31. private slots:
  32. void OnReadyRead();
  33. private:
  34. void init();
  35. void parseDimmInfo(const QString &line);
  36. void parseEnhancedWarningLine(const QString &line);
  37. void saveSnapshot();
  38. void exportXlsx();
  39. private:
  40. QSerialPort *m_port = nullptr;
  41. QString m_portName;
  42. QByteArray biosBuffer;
  43. QStringList commands;
  44. int commandIndex = 0;
  45. QString m_path;
  46. QRegularExpression dimmRegex;
  47. QRegularExpression numberRegex;
  48. QHash<QString,QString> dimmHash;
  49. QVector<DimmRecord> warningRecords;
  50. DimmRecord currentWarning;
  51. bool parsingWarning = false;
  52. QSet<QString> recordSet;
  53. };
  54. #endif