ToolDialog.h 2.4 KB

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