ToolDialog.h 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189
  1. #pragma once
  2. #include "ui_CToolDialog.h"
  3. #include "../../VisionPlusSdk/VisionPlusTool.h"
  4. #include "../../ShowUnit/HWndUnit.h"
  5. #include <QBuffer>
  6. #include <QCloseEvent>
  7. #include <QRunnable>
  8. #include <QThread>
  9. #include <QThreadPool>
  10. #include "cnap.h"
  11. class ToolDialogImpl : public DllToolDialog
  12. {
  13. //CPU数据类型定义
  14. enum VarType
  15. {
  16. Bit = 1,
  17. Byte = 2,
  18. Word = 3,
  19. DWord = 4,
  20. Int = 5,
  21. DInt = 6,
  22. Real = 7,
  23. String = 8,
  24. StringEx = 9,
  25. S7_Timer = 10,
  26. S7_Counter = 11,
  27. };
  28. Q_OBJECT
  29. public:
  30. ToolDialogImpl(QWidget *parent = Q_NULLPTR);
  31. ~ToolDialogImpl();
  32. Ui::CToolDialog ui;
  33. // 从基类继承的函数
  34. public:
  35. virtual VPEnum::RETURN_VALUE Execute();
  36. virtual void Running(bool bRun);
  37. virtual bool updateValue(int nIndex);
  38. virtual void timerEvent(QTimerEvent* event);
  39. virtual bool Serialized(QDataStream& ar, bool bIsOut);
  40. // 导入到处需要用到的成员变量
  41. public:
  42. // Event(For Test)
  43. ToolEvent m_eventOut;
  44. // 内部信号
  45. signals:
  46. void sigUpdateUI();
  47. // 内部槽函数
  48. private slots:
  49. void on_UpdateUI();
  50. void on_btnOK_clicked();
  51. void on_btnCancel_clicked();
  52. void on_btnExecute_clicked();
  53. void on_btn_Connect_clicked();
  54. // 本工具为实现某些功能所必须的函数
  55. private:
  56. // 2022-3-1 向exe中的变量表界面同步数值
  57. void syncValuesToTableUI(QList<VARIABLE*> pInfs);
  58. int ConnectToPLC();
  59. void setValueToUI();
  60. void resizeEvent(QResizeEvent* event);
  61. // 2022-10-30 增加了一个用于获取VARIABLE类型的值字符串的函数
  62. QString valueString(VARIABLE* var);
  63. // 工具内部需要用到的成员变量
  64. private:
  65. int m_nTimerID;
  66. TS7Client* m_pS7Client;
  67. byte m_DB_Buffer[200];
  68. QString m_strComName;
  69. QString m_strTP;
  70. QString m_strPort;
  71. int m_nIsCOnnect;
  72. int m_nTableRowCount;
  73. QVector<QTableWidgetItem*> m_TableWidgetItems;
  74. QVector<_INTERFACE*> m_Interfaces;
  75. QString m_strTemps[1024];
  76. // 工具内部线程需要用到的成员变量
  77. public:
  78. QThreadPool m_ReadThreadPool;
  79. QThreadPool m_WriteThreadPool;
  80. int m_nThreadState;
  81. QMutex mutex;
  82. bool readValueByPLC();
  83. bool writeValueToPLC(int nIndex = -1);
  84. bool writeValue(VARIABLE* var);
  85. int PLCAddressParse(QString inputAddress, short* dbNumber, VarType* varType, short* address, short* bitNumber);
  86. int WriteBoolVal(int dbNum, int offset, bool bVal);
  87. int WriteIntVal(int dbNum, int offset, int nVal);
  88. int WriteFloatVal(int dbNum, int offset, float fVal);
  89. int WriteRealVal(int dbNum, int offset, double fVal);
  90. int ReadBoolVal(int dbNum, int offset, bool* bVal);
  91. int ReadIntVal(int dbNum, int offset, int* nVal);
  92. int ReadFloatVal(int dbNum, int offset, float* fVal);
  93. int ReadRealVal(int dbNum, int offset, double* fVal);
  94. };
  95. // _ReadThread 的执行线程体
  96. class _ReadThread : public QObject, public QRunnable
  97. {
  98. Q_OBJECT
  99. public:
  100. _ReadThread(ToolDialogImpl* pDialog)
  101. {
  102. this->m_pDialog = pDialog;
  103. };
  104. ~_ReadThread() {};
  105. protected:
  106. // 线程函数
  107. virtual void run();
  108. private:
  109. ToolDialogImpl* m_pDialog;
  110. };
  111. // _WriteThread 的执行线程体
  112. class _WriteThread : public QObject, public QRunnable
  113. {
  114. Q_OBJECT
  115. public:
  116. _WriteThread(ToolDialogImpl* pDialog)
  117. {
  118. this->m_pDialog = pDialog;
  119. };
  120. ~_WriteThread() {};
  121. protected:
  122. // 线程函数
  123. virtual void run();
  124. private:
  125. ToolDialogImpl* m_pDialog;
  126. };