EyeMapInfo.h 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  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),uid(EyeMapUID::EMUID_1), 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. /* 保存8个眼图的指针信息 */
  49. class AllEyeMapInfo
  50. {
  51. AllEyeMapInfo() {}
  52. AllEyeMapInfo& operator=(const AllEyeMapInfo&) = delete;
  53. AllEyeMapInfo(const AllEyeMapInfo&) = delete;
  54. public:
  55. ~AllEyeMapInfo();
  56. static AllEyeMapInfo& getInstance()
  57. {
  58. static AllEyeMapInfo emi;
  59. return emi;
  60. }
  61. /* 初始化函数 */
  62. void initEyeMapInfo();
  63. /* 读取保存的文件 */
  64. void readSaveFile(const QString& fileName);
  65. /* 创建保存的文件 */
  66. void createSaveFile(const QString& fileName);
  67. /* 更新保存的文件,在EyeMapWidget的析构函数中调用 */
  68. void updateSaveFile();
  69. /* 获取眼图列表 */
  70. const QList<OneEyeMap*>& getEyeMapList();
  71. /* 添加眼图指针 */
  72. void addEyeMapPtr(OneEyeMap* ptr);
  73. /* 获取每个眼图的序号、标题和颜色 */
  74. QList<OneEyeMapInfo> getEyeMapInfo();
  75. /* 根据序号查找指针 */
  76. OneEyeMap* findEyeMap(int num);
  77. /* 更新模块信息 */
  78. void updateModuleInfo(OneEyeMapInfo& info);
  79. /* 更新设置组屏页面的信息 */
  80. void updateSettingNum(OneEyeMapInfo& info);
  81. /* 获取所有的通道信息 */
  82. QList<OneChannelInfo>& getChannelInfo() { return listChannelInfo; }
  83. /* 设置通道信息 */
  84. void setChannelInfo(const QList<OneChannelInfo>& list) { listChannelInfo = list; }
  85. void appendChannelInfo(const OneChannelInfo& info) { listChannelInfo.append(info); }
  86. /* 更新显示的电压刻度、时间刻度信息,这里只更新这两个相关的参数 */
  87. void updateVoltageAndTimeGardInfo(const OneEyeMapInfo& info);
  88. /* 更新初始化数组 */
  89. void updateInitEyeMapInfo();
  90. /* 获取通道号对应的通道名称 */
  91. static QString getChannelName(OscChnNum channel);
  92. /* 判断一个示波器是否有显示的眼图 */
  93. bool hasShowEyeMap(int oscNum);
  94. /* 根据示波器编号设置眼图状态 */
  95. void setEyeMapOscOpen(int oscNum, bool isOpen);
  96. /* 获取初始化数据 */
  97. OneEyeMapInfo getInitEyeMapInfo(int num);
  98. public:
  99. QList<OneEyeMap*> listEyeMapPtr; /* 保存8个眼图的指针 */
  100. QList<OneChannelInfo> listChannelInfo; /* 可用的通道号 */
  101. QList<OneEyeMapInfo> listInitEyeMapInfo; /* 保存每个眼图的初始化信息,程序启动和结束的时候使用 */
  102. int row = 0; /* 行 */
  103. int column = 0; /* 列 */
  104. private:
  105. QString m_saveFileName = "EyeMapInfo.json"; /* 保存的文件名 */
  106. QString m_saveFilePath = ""; /* 保存的文件路径 */
  107. };
  108. #endif /* EYEMAPINFO_H */