#pragma once #include "ui_CToolDialog.h" #include "../../Common/DllToolCommon.h" #include "../../ShowUnit/HWndUnit.h" #include #include #include #include #include #include "Fins/fins.h" class ToolDialogImpl : public DllToolDialog { Q_OBJECT public: ToolDialogImpl(QWidget *parent = Q_NULLPTR); ~ToolDialogImpl(); Ui::CToolDialog ui; // 从基类继承的函数 public: virtual VPEnum::RETURN_VALUE Execute(); virtual void Running(bool bRun); virtual bool updateValue(int nIndex); virtual void timerEvent(QTimerEvent* event); virtual bool Serialized(QDataStream& ar, bool bIsOut); // 导入到处需要用到的成员变量 public: // Event(For Test) ToolEvent m_eventOut; // 内部信号 signals: void sigUpdateUI(); // 内部槽函数 private slots: void on_UpdateUI(); void on_btnOK_clicked(); void on_btnCancel_clicked(); void on_btnExecute_clicked(); void on_btn_Connect_clicked(); // 本工具为实现某些功能所必须的函数 private: // 2022-3-1 向exe中的变量表界面同步数值 void syncValuesToTableUI(QList pInfs); int ConnectToPLC(); void setValueToUI(); void resizeEvent(QResizeEvent* event); // 工具内部需要用到的成员变量 private: int m_nTimerID; fins_sys_tp* m_pPlc; QString m_strComName; QString m_strTP; QString m_strPort; int m_nIsCOnnect; int m_nTableRowCount; QVector m_TableWidgetItems; QVector<_INTERFACE*> m_Interfaces; // 工具内部线程需要用到的成员变量 public: QThreadPool m_ReadThreadPool; QThreadPool m_WriteThreadPool; int m_nThreadState; bool readValueByPLC(); bool writeValueToPLC(int nIndex); }; // _ReadThread 的执行线程体 class _ReadThread : public QObject, public QRunnable { Q_OBJECT public: _ReadThread(ToolDialogImpl* pDialog) { this->m_pDialog = pDialog; }; ~_ReadThread() {}; protected: // 线程函数 virtual void run(); private: ToolDialogImpl* m_pDialog; }; // _WriteThread 的执行线程体 class _WriteThread : public QObject, public QRunnable { Q_OBJECT public: _WriteThread(ToolDialogImpl* pDialog) { this->m_pDialog = pDialog; }; ~_WriteThread() {}; protected: // 线程函数 virtual void run(); private: ToolDialogImpl* m_pDialog; };