#ifndef PDU_CTRL_H #define PDU_CTRL_H #include #include #include #include #include "widget.h" #define hightSmartPDU //#define RS485Type //#define RS485IpType enum WidgetType { widgetType_Main=0, //轮询页面 widgetType_Setting=1, //设置页面 }; enum WidgetMain_T_AC { WidgetMain_CH=0, //三项总 WidgetMain_PHA=1, //A相 WidgetMain_PHB=2, //B相 WidgetMain_PHC=3, //C相 }; enum SettingMode { settingMode_Modbus=0, settingMode_LimitV=1, settingMode_LimitA=2, settingMode_IP=3, }; enum BtnDownType { BtnDown_C=0,//点击 BtnDown_D=1, //双击 BtnDown_L=2, //长按 BtnDown_Null=-1//清空 }; enum GPIOLED { GPIO_LED0=106, GPIO_LED1=105, #ifdef RS485Type GPIO_KEY1=160, GPIO_KEY2=161, GPIO_KEY3=162, GPIO_KEY4=103, #endif #ifdef hightSmartPDU GPIO_KEY1=102, GPIO_KEY2=101, GPIO_KEY3=104, GPIO_KEY4=103, GPIO_X=113,//方向传感器 GPIO_Y=115//方向传感器 #endif }; class pdu_Ctrl : public QObject { Q_OBJECT public: //单例初始化 static pdu_Ctrl* instance() { QMutexLocker locker(&mutex); if (!m_instance) { static QMutex mutex; if (!m_instance) { m_instance = new pdu_Ctrl(); } } return m_instance; } static void distory() { QMutexLocker locker(&mutex); if (m_instance) { delete m_instance; m_instance = nullptr; } } void InitData(Widget* pWidget,QGraphicsProxyWidget* pProxy ,QGraphicsView* pView,int nWidth, int nHeight); void ReadModbusInit(); void SaveModbusInit(); void ReadPDUinit(); void SetPDUInit(); bool updateIniValue(const QString& filePath, const QString& section, const QString& key, const QString& newValue); private: //处理多个点 void ButtonDown(int nButtonID, BtnDownType nDownType); //===================MAIN界面下按钮控制============================ void Main_UPBtnSet(BtnDownType nbtnType); void Main_FunBtnSet(BtnDownType nbtnType); void Main_DownBtnSet(BtnDownType nbtnType); //===================SETTING界面下按钮控制========================= void Setting_UPBtnSet(BtnDownType nbtnType); void Setting_FunBtnSet(BtnDownType nbtnType); void Setting_DownBtnSet(BtnDownType nbtnType); //======切换视图========= void ChangeView(WidgetType widgetType,int nIndex); //======恢复出厂设置========= void ResetAll(); void RestartSys(); signals: public slots: void slot_setAngel(int nAngle); void slot_ClickBtn(int nButton); void slot_DClickBtn(int nButton); void slot_LClickBtn(int nButton); void slot_BtnClear(int nButton); private: //单例数据 explicit pdu_Ctrl(QObject *parent = nullptr); static pdu_Ctrl* m_instance; static QMutex mutex; WidgetType nViewShowType;// int nSettingType;//设置页面 //记录三个按钮的状态 int nButtonStatus[3];//上中下 //当前显示页面ID int nChidIndex; int nChidPHIndex; int m_nAngle; int m_nSaveAngle;//配置文件中的数据 //其他界面指针 QGraphicsProxyWidget* m_pAngleCtrl; QGraphicsView* m_pView; Widget* m_pWidget;//主界面 int m_nWidth; int m_nHeight; //modbus设置 public: int m_nModbusSelect; int m_nModbusAddress;//从机地址 int m_nModbusMSType;//主从 int m_nSaveData; QString strSqliteAddress; int isT_ACType; int lastACIndex; int nMonway;//1:总检测 2:分监分控 3:分监不控 }; #endif // PDU_CTRL_H