pdu_ctrl.h 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155
  1. #ifndef PDU_CTRL_H
  2. #define PDU_CTRL_H
  3. #include <QObject>
  4. #include <QMutex>
  5. #include <QGraphicsProxyWidget>
  6. #include <QGraphicsView>
  7. #include "widget.h"
  8. #define hightSmartPDU
  9. //#define RS485Type
  10. //#define RS485IpType
  11. enum WidgetType
  12. {
  13. widgetType_Main=0, //轮询页面
  14. widgetType_Setting=1, //设置页面
  15. };
  16. enum WidgetMain_T_AC
  17. {
  18. WidgetMain_CH=0, //三项总
  19. WidgetMain_PHA=1, //A相
  20. WidgetMain_PHB=2, //B相
  21. WidgetMain_PHC=3, //C相
  22. };
  23. enum SettingMode
  24. {
  25. settingMode_Modbus=0,
  26. settingMode_LimitV=1,
  27. settingMode_LimitA=2,
  28. settingMode_IP=3,
  29. };
  30. enum BtnDownType
  31. {
  32. BtnDown_C=0,//点击
  33. BtnDown_D=1, //双击
  34. BtnDown_L=2, //长按
  35. BtnDown_Null=-1//清空
  36. };
  37. enum GPIOLED
  38. {
  39. GPIO_LED0=106,
  40. GPIO_LED1=105,
  41. #ifdef RS485Type
  42. GPIO_KEY1=160,
  43. GPIO_KEY2=161,
  44. GPIO_KEY3=162,
  45. GPIO_KEY4=103,
  46. #endif
  47. #ifdef hightSmartPDU
  48. GPIO_KEY1=102,
  49. GPIO_KEY2=101,
  50. GPIO_KEY3=104,
  51. GPIO_KEY4=103,
  52. GPIO_X=113,//方向传感器
  53. GPIO_Y=115//方向传感器
  54. #endif
  55. };
  56. class pdu_Ctrl : public QObject
  57. {
  58. Q_OBJECT
  59. public:
  60. //单例初始化
  61. static pdu_Ctrl* instance() {
  62. QMutexLocker locker(&mutex);
  63. if (!m_instance) {
  64. static QMutex mutex;
  65. if (!m_instance) {
  66. m_instance = new pdu_Ctrl();
  67. }
  68. }
  69. return m_instance;
  70. }
  71. static void distory()
  72. {
  73. QMutexLocker locker(&mutex);
  74. if (m_instance) {
  75. delete m_instance;
  76. m_instance = nullptr;
  77. }
  78. }
  79. void InitData(Widget* pWidget,QGraphicsProxyWidget* pProxy ,QGraphicsView* pView,int nWidth, int nHeight);
  80. void ReadModbusInit();
  81. void SaveModbusInit();
  82. void ReadPDUinit();
  83. void SetPDUInit();
  84. bool updateIniValue(const QString& filePath, const QString& section, const QString& key, const QString& newValue);
  85. private:
  86. //处理多个点
  87. void ButtonDown(int nButtonID, BtnDownType nDownType);
  88. //===================MAIN界面下按钮控制============================
  89. void Main_UPBtnSet(BtnDownType nbtnType);
  90. void Main_FunBtnSet(BtnDownType nbtnType);
  91. void Main_DownBtnSet(BtnDownType nbtnType);
  92. //===================SETTING界面下按钮控制=========================
  93. void Setting_UPBtnSet(BtnDownType nbtnType);
  94. void Setting_FunBtnSet(BtnDownType nbtnType);
  95. void Setting_DownBtnSet(BtnDownType nbtnType);
  96. //======切换视图=========
  97. void ChangeView(WidgetType widgetType,int nIndex);
  98. //======恢复出厂设置=========
  99. void ResetAll();
  100. void RestartSys();
  101. signals:
  102. public slots:
  103. void slot_setAngel(int nAngle);
  104. void slot_ClickBtn(int nButton);
  105. void slot_DClickBtn(int nButton);
  106. void slot_LClickBtn(int nButton);
  107. void slot_BtnClear(int nButton);
  108. private:
  109. //单例数据
  110. explicit pdu_Ctrl(QObject *parent = nullptr);
  111. static pdu_Ctrl* m_instance;
  112. static QMutex mutex;
  113. WidgetType nViewShowType;//
  114. int nSettingType;//设置页面
  115. //记录三个按钮的状态
  116. int nButtonStatus[3];//上中下
  117. //当前显示页面ID
  118. int nChidIndex;
  119. int nChidPHIndex;
  120. int m_nAngle;
  121. int m_nSaveAngle;//配置文件中的数据
  122. //其他界面指针
  123. QGraphicsProxyWidget* m_pAngleCtrl;
  124. QGraphicsView* m_pView;
  125. Widget* m_pWidget;
  126. int m_nWidth;
  127. int m_nHeight;
  128. //modbus设置
  129. public:
  130. int m_nModbusSelect;
  131. int m_nModbusAddress;//从机地址
  132. int m_nModbusMSType;//主从
  133. int m_nSaveData;
  134. QString strSqliteAddress;
  135. int isT_ACType;
  136. int lastACIndex;
  137. };
  138. #endif // PDU_CTRL_H