#ifndef EYEMAPINFO_H #define EYEMAPINFO_H #include #include #include "GlobalInfo.h" class OneEyeMap; /* 保存实际可用的示波器通道信息 * 通道号从1开始,0是未选择通道 */ struct OneChannelInfo { OscChnNum channel; /* 通道号 */ QString channelName; /* 通道名 */ bool isConnected = false; /* 示波器是否已经连接 */ OneChannelInfo() : channel(OscChnNum::Osc_None), channelName(""), isConnected(false) {} OneChannelInfo& operator=(const OneChannelInfo& info) { channel = info.channel; channelName = info.channelName; isConnected = info.isConnected; return *this; } }; /* 保存每个眼图的序号、标题和颜色 */ struct OneEyeMapInfo { bool isShow; /* 是否显示 */ // EyeMapUID uid; /* 唯一标识符 */ 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; // uid = info.uid; num = info.num; title = info.title; titleBarColor = info.titleBarColor; channelInfo = info.channelInfo; voltageRange = info.voltageRange; tGridValue = info.tGridValue; return *this; } }; #define GEyeMapInfo AllEyeMapInfo::getInstance() /** * @brief 保存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); /* 清空所有的编号 */ void clearAllNum(); /* 重置所有的颜色矩阵 */ void resetAllEyeMap(); /* 获取所有的通道信息,每次都是获取最新的状态 */ // QList& getChannelInfo() { return listChannelInfo; } QList getChannelInfo(); /* 设置通道信息 */ // void setChannelInfo(const QList& list) { listChannelInfo = list; } // void appendChannelInfo(const OneChannelInfo& info) { listChannelInfo.append(info); } /* 设置通道号对应的示波器是否连接成功 */ // void setChannelConnected(OscChnNum channel, bool isConnected); /* 更新显示的电压刻度、时间刻度信息,这里只更新这两个相关的参数 */ void updateVoltageAndTimeGardInfo(const OneEyeMapInfo& info); /* 更新初始化数组 */ void updateInitEyeMapInfo(); /* 获取通道号对应的通道名称 */ static QString getChannelName(OscChnNum channel, bool isConnected); /* 判断一个示波器是否有显示的眼图 */ bool hasShowEyeMap(int oscNum); /* 根据示波器编号设置眼图状态 */ void setEyeMapOscOpen(int oscNum, bool isOpen); /* 获取初始化数据 */ OneEyeMapInfo getOneEyeMapInfo(int num); OneEyeMapInfo getInitEyeMapInfo(int num); /* 获取未使用的通道号 */ OscChnNum getUnusedChannel(); 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 */