EyeMapInfo.h 4.7 KB

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