pdu_ctrl.h 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210
  1. #ifndef PDU_CTRL_H
  2. #define PDU_CTRL_H
  3. #include "common.h"
  4. #include "global.h"
  5. #include "widget.h"
  6. #include "qt_pdu_msgq.h"
  7. #define hightSmartPDU
  8. //#define RS485Type
  9. //#define RS485IpType
  10. //#define PDU_sys
  11. #define pduRun
  12. enum WidgetType
  13. {
  14. widgetType_Main=0, //轮询页面
  15. widgetType_Setting=1, //设置页面
  16. };
  17. enum WidgetMain_T_AC
  18. {
  19. WidgetMain_CH=0, //三项总
  20. WidgetMain_PHA=1, //A相
  21. WidgetMain_PHB=2, //B相
  22. WidgetMain_PHC=3, //C相
  23. };
  24. enum SettingMode
  25. {
  26. settingMode_Modbus=0,
  27. settingMode_LimitV=1,
  28. settingMode_LimitA=2,
  29. settingMode_IP=3,
  30. };
  31. enum BtnDownType
  32. {
  33. BtnDown_C=0,//点击
  34. BtnDown_D=1, //双击
  35. BtnDown_L=2, //长按
  36. BtnDown_Null=-1//清空
  37. };
  38. enum GPIOLED
  39. {
  40. GPIO_LED0=106,
  41. GPIO_LED1=105,
  42. #ifdef RS485Type
  43. GPIO_KEY1=160,
  44. GPIO_KEY2=161,
  45. GPIO_KEY3=162,
  46. GPIO_KEY4=103,
  47. #endif
  48. #ifdef hightSmartPDU
  49. GPIO_KEY1=102,
  50. GPIO_KEY2=101,
  51. GPIO_KEY3=104,
  52. GPIO_KEY4=103,
  53. GPIO_X=113,//方向传感器
  54. GPIO_Y=115//方向传感器
  55. #endif
  56. };
  57. /*
  58. QString g_product_type_str[] = {
  59. "SmartPDU(DC)",
  60. "SmartPDU(AC)",
  61. "SmartPDU(Tree_AC_Tree)",
  62. "SmartPDU(Tree_AC_One)",
  63. };*/
  64. struct CHOverMG
  65. {
  66. int nCHID;
  67. int nAddrID;
  68. int nAddrCHID;
  69. int nCHType;
  70. QString strName;
  71. GlobalOverManager OverData;
  72. };
  73. class qt_pdu_msgq;
  74. class pdu_Ctrl : public QObject
  75. {
  76. Q_OBJECT
  77. public:
  78. //单例初始化
  79. static pdu_Ctrl* instance() {
  80. QMutexLocker locker(&mutex);
  81. if (!m_instance) {
  82. static QMutex mutex;
  83. if (!m_instance) {
  84. m_instance = new pdu_Ctrl();
  85. }
  86. }
  87. return m_instance;
  88. }
  89. static void distory()
  90. {
  91. QMutexLocker locker(&mutex);
  92. if (m_instance) {
  93. delete m_instance;
  94. m_instance = nullptr;
  95. }
  96. }
  97. void InitData(Widget* pWidget,QGraphicsProxyWidget* pProxy ,QGraphicsView* pView,int nWidth, int nHeight);
  98. void ReadModbusInit();
  99. void SaveModbusInit();
  100. QSqlDatabase& getDB(){return m_db;}
  101. //
  102. int getPowerBoard(GlobalPowerCtrlBoard*& pPowerBoard){
  103. pPowerBoard= m_PowerBoard;
  104. return nPowerBoardSize;
  105. }
  106. void setPowerBoard(size_t nMaxData,GlobalPowerCtrlBoard* pPowerBoard)
  107. {
  108. m_PowerBoard=pPowerBoard;
  109. nPowerBoardSize=nMaxData;
  110. }
  111. void clearPowerBoard()
  112. {
  113. m_PowerBoard=nullptr;
  114. nPowerBoardSize=0;
  115. }
  116. //获取超限数据
  117. QMap<int,QMap<int,CHOverMG>>& getOverMG(){return m_chOverMG;}
  118. //更新或添加超限数据
  119. void AddOverMG(CHOverMG& pData);
  120. //获取报警信息
  121. PowerWarningInfo* getWarningData(int nAddrID,int nAddrCHID);
  122. //======设置所通道开关=======
  123. void setCHCtrl(int nCh,int nStatus);//-1则是全部控制
  124. private:
  125. //处理多个点
  126. void ButtonDown(int nButtonID, BtnDownType nDownType);
  127. //===================MAIN界面下按钮控制============================
  128. void Main_UPBtnSet(BtnDownType nbtnType);
  129. void Main_FunBtnSet(BtnDownType nbtnType);
  130. void Main_DownBtnSet(BtnDownType nbtnType);
  131. //===================SETTING界面下按钮控制=========================
  132. void Setting_UPBtnSet(BtnDownType nbtnType);
  133. void Setting_FunBtnSet(BtnDownType nbtnType);
  134. void Setting_DownBtnSet(BtnDownType nbtnType);
  135. //======切换视图=========
  136. void ChangeView(WidgetType widgetType,int nIndex);
  137. //======恢复出厂设置=========
  138. void ResetAll();
  139. void RestartSys();
  140. signals:
  141. public slots:
  142. void slot_setAngel(int nAngle);
  143. void slot_ClickBtn(int nButton);
  144. void slot_DClickBtn(int nButton);
  145. void slot_LClickBtn(int nButton);
  146. void slot_BtnClear(int nButton);
  147. private:
  148. //单例数据
  149. explicit pdu_Ctrl(QObject *parent = nullptr);
  150. ~pdu_Ctrl();
  151. static pdu_Ctrl* m_instance;
  152. static QMutex mutex;
  153. WidgetType nViewShowType;//
  154. int nSettingType;//设置页面
  155. //记录三个按钮的状态
  156. int nButtonStatus[3];//上中下
  157. //当前显示页面ID
  158. int nChidIndex;
  159. int nChidPHIndex;
  160. int m_nAngle;
  161. //其他界面指针
  162. QGraphicsProxyWidget* m_pAngleCtrl;
  163. QGraphicsView* m_pView;
  164. Widget* m_pWidget;
  165. int m_nWidth;
  166. int m_nHeight;
  167. //数据库类
  168. QSqlDatabase m_db;
  169. //共享数据类
  170. size_t nPowerBoardSize;
  171. GlobalPowerCtrlBoard* m_PowerBoard;
  172. //超限设置
  173. QMap<int,QMap<int,CHOverMG>> m_chOverMG;
  174. //modbus设置
  175. public:
  176. int m_nModbusSelect;
  177. int m_nModbusAddress;//从机地址
  178. int m_nModbusMSType;//主从
  179. int m_nSaveData;
  180. QString strSqliteAddress;
  181. int isT_ACType;
  182. int lastACIndex;
  183. qt_pdu_msgq* pMsgq;
  184. };
  185. #endif // PDU_CTRL_H