EyeMapInfo.h 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. #ifndef EYEMAPINFO_H
  2. #define EYEMAPINFO_H
  3. #include <QList>
  4. #include <QColor>
  5. #include "GlobalInfo.h"
  6. #include "OscDataInfo.h"
  7. class OneEyeMap;
  8. /* 示波器通道枚举值 */
  9. // enum class enum_OSCChannel
  10. // {
  11. // Osc1_CHA = 1,
  12. // Osc1_CHB,
  13. // Osc2_CHA,
  14. // Osc2_CHB,
  15. // Osc3_CHA,
  16. // Osc3_CHB,
  17. // Osc4_CHA,
  18. // Osc4_CHB,
  19. // };
  20. /* 保存实际可用的示波器通道信息
  21. * 通道号从1开始,0是未选择通道 */
  22. struct OneChannelInfo
  23. {
  24. int channel; /* 通道号 */
  25. QString channelName; /* 通道名 */
  26. OneChannelInfo() : channel(0), channelName("") {}
  27. OneChannelInfo& operator=(const OneChannelInfo& info)
  28. {
  29. channel = info.channel;
  30. channelName = info.channelName;
  31. return *this;
  32. }
  33. };
  34. /* 保存每个眼图的序号、标题和颜色 */
  35. struct OneEyeMapInfo
  36. {
  37. bool isShow; /* 是否显示 */
  38. int num; /* 序号 */
  39. QString title; /* 标题 */
  40. QColor titleBarColor; /* 颜色 */
  41. OneChannelInfo channelInfo; /* 通道信息 */
  42. OscVoltageRange voltageRange; /* 电压范围 */
  43. OscTimeGridValue tGridValue; /* 时间刻度 */
  44. OneEyeMapInfo() : isShow(false), num(0), title(""), titleBarColor(QColor()), channelInfo(),
  45. voltageRange(OscVoltageRange::CR_2V5), tGridValue(OscTimeGridValue::TGV_200NS) {}
  46. OneEyeMapInfo& operator=(const OneEyeMapInfo& info)
  47. {
  48. isShow = info.isShow;
  49. num = info.num;
  50. title = info.title;
  51. titleBarColor = info.titleBarColor;
  52. channelInfo = info.channelInfo;
  53. voltageRange = info.voltageRange;
  54. tGridValue = info.tGridValue;
  55. return *this;
  56. }
  57. };
  58. #define GEyeMapInfo AllEyeMapInfo::getInstance()
  59. /* 保存8个眼图的指针信息 */
  60. class AllEyeMapInfo
  61. {
  62. AllEyeMapInfo() {}
  63. AllEyeMapInfo& operator=(const AllEyeMapInfo&) = delete;
  64. AllEyeMapInfo(const AllEyeMapInfo&) = delete;
  65. public:
  66. ~AllEyeMapInfo();
  67. static AllEyeMapInfo& getInstance()
  68. {
  69. static AllEyeMapInfo emi;
  70. return emi;
  71. }
  72. /* 初始化函数 */
  73. void initEyeMapInfo();
  74. /* 读取保存的文件 */
  75. void readSaveFile(const QString& fileName);
  76. /* 创建保存的文件 */
  77. void createSaveFile(const QString& fileName);
  78. /* 更新保存的文件,在EyeMapWidget的析构函数中调用 */
  79. void updateSaveFile();
  80. /* 获取眼图列表 */
  81. const QList<OneEyeMap*>& getEyeMapList();
  82. /* 添加眼图指针 */
  83. void addEyeMapPtr(OneEyeMap* ptr);
  84. /* 获取每个眼图的序号、标题和颜色 */
  85. QList<OneEyeMapInfo> getEyeMapInfo();
  86. /* 根据序号查找指针 */
  87. OneEyeMap* findEyeMap(int num);
  88. /* 更新模块信息 */
  89. void updateModuleInfo(OneEyeMapInfo& info);
  90. /* 更新设置组屏页面的信息 */
  91. void updateSettingNum(OneEyeMapInfo& info);
  92. /* 获取所有的通道信息 */
  93. QList<OneChannelInfo>& getChannelInfo() { return listChannelInfo; }
  94. /* 设置通道信息 */
  95. void setChannelInfo(const QList<OneChannelInfo>& list) { listChannelInfo = list; }
  96. void appendChannelInfo(const OneChannelInfo& info) { listChannelInfo.append(info); }
  97. /* 更新显示的电压刻度、时间刻度信息,这里只更新这两个相关的参数 */
  98. void updateVoltageAndTimeGardInfo(const OneEyeMapInfo& info);
  99. /* 更新初始化数组 */
  100. void updateInitEyeMapInfo();
  101. /* 获取通道号对应的通道名称 */
  102. static QString getChannelName(int channel);
  103. public:
  104. QList<OneEyeMap*> listEyeMapPtr; /* 保存8个眼图的指针 */
  105. QList<OneChannelInfo> listChannelInfo; /* 可用的通道号 */
  106. QList<OneEyeMapInfo> listInitEyeMapInfo; /* 保存每个眼图的初始化信息,程序启动和结束的时候使用 */
  107. int row = 0; /* 行 */
  108. int column = 0; /* 列 */
  109. private:
  110. QString m_saveFileName = "EyeMapInfo.json"; /* 保存的文件名 */
  111. QString m_saveFilePath = ""; /* 保存的文件路径 */
  112. };
  113. #endif /* EYEMAPINFO_H */