ToolDialog.h 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155
  1. #pragma once
  2. #include "ui_CToolDialog.h"
  3. #include "../../Common/DllToolCommon.h"
  4. #include "../../ShowUnit/HWndUnit.h"
  5. #include <QBuffer>
  6. #include <QCloseEvent>
  7. #include <QRunnable>
  8. #include <QThread>
  9. #include <QThreadPool>
  10. #include "libModbus/modbus.h"
  11. #include "libModbus/modbus-rtu.h"
  12. class ToolDialogImpl : public DllToolDialog
  13. {
  14. Q_OBJECT
  15. public:
  16. ToolDialogImpl(QWidget *parent = Q_NULLPTR);
  17. ~ToolDialogImpl();
  18. Ui::CToolDialog ui;
  19. // 从基类继承的函数
  20. public:
  21. virtual VPEnum::RETURN_VALUE Execute();
  22. virtual void Running(bool bRun);
  23. virtual bool updateValue(int nIndex);
  24. virtual void timerEvent(QTimerEvent* event);
  25. virtual bool Serialized(QDataStream& ar, bool bIsOut);
  26. // 导入导出需要用到的成员变量
  27. public:
  28. // Event(For Test)
  29. ToolEvent m_eventOut;
  30. // 内部信号
  31. signals:
  32. void sigUpdateUI();
  33. // 内部槽函数
  34. private slots:
  35. void on_UpdateUI();
  36. void on_btnOK_clicked();
  37. void on_btnCancel_clicked();
  38. void on_btnExecute_clicked();
  39. void on_btn_Connect_clicked();
  40. bool on_rbnModbusRTU_clicked();
  41. bool on_rbnModbusTCP_clicked();
  42. // 本工具为实现某些功能所必须的函数
  43. private:
  44. // 2022-3-1 向exe中的变量表界面同步数值
  45. void syncValuesToTableUI(QList<VARIABLE*> pInfs);
  46. int ConnectToPLC();
  47. void setValueToUI();
  48. void resizeEvent(QResizeEvent* event);
  49. // 工具内部需要用到的成员变量
  50. private:
  51. int m_nTimerID;
  52. modbus_t* m_pModbus;
  53. QString m_strComName;
  54. QString m_strTP;
  55. QString m_strPort;
  56. int m_nIsCOnnect;
  57. int m_nTableRowCount;
  58. QVector<QTableWidgetItem*> m_TableWidgetItems;
  59. QVector<_INTERFACE*> m_Interfaces;
  60. // 工具内部线程需要用到的成员变量
  61. public:
  62. QThreadPool m_ReadThreadPool;
  63. QThreadPool m_WriteThreadPool;
  64. int m_nThreadState;
  65. bool readValueByPLC();
  66. bool writeValueToPLC(int nIndex);
  67. };
  68. // _ReadThread 的执行线程体
  69. class _ReadThread : public QObject, public QRunnable
  70. {
  71. Q_OBJECT
  72. public:
  73. _ReadThread(ToolDialogImpl* pDialog)
  74. {
  75. this->m_pDialog = pDialog;
  76. };
  77. ~_ReadThread() {};
  78. protected:
  79. // 线程函数
  80. virtual void run();
  81. private:
  82. ToolDialogImpl* m_pDialog;
  83. };
  84. // _WriteThread 的执行线程体
  85. class _WriteThread : public QObject, public QRunnable
  86. {
  87. Q_OBJECT
  88. public:
  89. _WriteThread(ToolDialogImpl* pDialog)
  90. {
  91. this->m_pDialog = pDialog;
  92. };
  93. ~_WriteThread() {};
  94. protected:
  95. // 线程函数
  96. virtual void run();
  97. private:
  98. ToolDialogImpl* m_pDialog;
  99. };