#ifndef EYEMAPINFO_H #define EYEMAPINFO_H #include #include #include "GlobalInfo.h" #include "OscDataInfo.h" class OneEyeMap; /* 示波器通道枚举值 */ // enum class enum_OSCChannel // { // Osc1_CHA = 1, // Osc1_CHB, // Osc2_CHA, // Osc2_CHB, // Osc3_CHA, // Osc3_CHB, // Osc4_CHA, // Osc4_CHB, // }; /* 保存实际可用的示波器通道信息 * 通道号从1开始,0是未选择通道 */ struct OneChannelInfo { int channel; /* 通道号 */ QString channelName; /* 通道名 */ OneChannelInfo() : channel(0), channelName("") {} OneChannelInfo& operator=(const OneChannelInfo& info) { channel = info.channel; channelName = info.channelName; return *this; } }; /* 保存每个眼图的序号、标题和颜色 */ struct OneEyeMapInfo { bool isShow; /* 是否显示 */ int num; /* 序号 */ QString title; /* 标题 */ QColor titleBarColor; /* 颜色 */ OneChannelInfo channelInfo; /* 通道信息 */ OscVoltageRange voltageRange; /* 电压范围 */ OscTimeGridValue tGridValue; /* 时间刻度 */ OneEyeMapInfo() : isShow(false), num(0), title(""), titleBarColor(QColor()), channelInfo(), voltageRange(OscVoltageRange::CR_2V5), tGridValue(OscTimeGridValue::TGV_200NS) {} OneEyeMapInfo& operator=(const OneEyeMapInfo& info) { isShow = info.isShow; num = info.num; title = info.title; titleBarColor = info.titleBarColor; channelInfo = info.channelInfo; voltageRange = info.voltageRange; tGridValue = info.tGridValue; return *this; } }; #define GEyeMapInfo AllEyeMapInfo::getInstance() /* 保存8个眼图的指针信息 */ class AllEyeMapInfo { AllEyeMapInfo() {} AllEyeMapInfo& operator=(const AllEyeMapInfo&) = delete; AllEyeMapInfo(const AllEyeMapInfo&) = delete; public: ~AllEyeMapInfo(); static AllEyeMapInfo& getInstance() { static AllEyeMapInfo emi; return emi; } /* 初始化函数 */ void initEyeMapInfo(); /* 读取保存的文件 */ void readSaveFile(const QString& fileName); /* 创建保存的文件 */ void createSaveFile(const QString& fileName); /* 更新保存的文件,在EyeMapWidget的析构函数中调用 */ void updateSaveFile(); /* 获取眼图列表 */ const QList& getEyeMapList(); /* 添加眼图指针 */ void addEyeMapPtr(OneEyeMap* ptr); /* 获取每个眼图的序号、标题和颜色 */ QList getEyeMapInfo(); /* 根据序号查找指针 */ OneEyeMap* findEyeMap(int num); /* 更新模块信息 */ void updateModuleInfo(OneEyeMapInfo& info); /* 更新设置组屏页面的信息 */ void updateSettingNum(OneEyeMapInfo& info); /* 获取所有的通道信息 */ QList& getChannelInfo() { return listChannelInfo; } /* 设置通道信息 */ void setChannelInfo(const QList& list) { listChannelInfo = list; } void appendChannelInfo(const OneChannelInfo& info) { listChannelInfo.append(info); } /* 更新显示的电压刻度、时间刻度信息,这里只更新这两个相关的参数 */ void updateVoltageAndTimeGardInfo(const OneEyeMapInfo& info); /* 更新初始化数组 */ void updateInitEyeMapInfo(); /* 获取通道号对应的通道名称 */ static QString getChannelName(int channel); public: QList listEyeMapPtr; /* 保存8个眼图的指针 */ QList listChannelInfo; /* 可用的通道号 */ QList listInitEyeMapInfo; /* 保存每个眼图的初始化信息,程序启动和结束的时候使用 */ int row = 0; /* 行 */ int column = 0; /* 列 */ private: QString m_saveFileName = "EyeMapInfo.json"; /* 保存的文件名 */ QString m_saveFilePath = ""; /* 保存的文件路径 */ }; #endif /* EYEMAPINFO_H */