123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189 |
- #pragma once
- #include "ui_CToolDialog.h"
- #include "../../VisionPlusSdk/VisionPlusTool.h"
- #include "../../ShowUnit/HWndUnit.h"
- #include <QBuffer>
- #include <QCloseEvent>
- #include <QRunnable>
- #include <QThread>
- #include <QThreadPool>
- #include "cnap.h"
- class ToolDialogImpl : public DllToolDialog
- {
- //CPU数据类型定义
- enum VarType
- {
- Bit = 1,
- Byte = 2,
- Word = 3,
- DWord = 4,
- Int = 5,
- DInt = 6,
- Real = 7,
- String = 8,
- StringEx = 9,
- S7_Timer = 10,
- S7_Counter = 11,
- };
- 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<VARIABLE*> pInfs);
- int ConnectToPLC();
- void setValueToUI();
- void resizeEvent(QResizeEvent* event);
- // 2022-10-30 增加了一个用于获取VARIABLE类型的值字符串的函数
- QString valueString(VARIABLE* var);
-
- // 工具内部需要用到的成员变量
- private:
- int m_nTimerID;
- TS7Client* m_pS7Client;
- byte m_DB_Buffer[200];
- QString m_strComName;
- QString m_strTP;
- QString m_strPort;
- int m_nIsCOnnect;
- int m_nTableRowCount;
-
- QVector<QTableWidgetItem*> m_TableWidgetItems;
- QVector<_INTERFACE*> m_Interfaces;
- QString m_strTemps[1024];
- // 工具内部线程需要用到的成员变量
- public:
- QThreadPool m_ReadThreadPool;
- QThreadPool m_WriteThreadPool;
- int m_nThreadState;
- QMutex mutex;
- bool readValueByPLC();
- bool writeValueToPLC(int nIndex = -1);
- bool writeValue(VARIABLE* var);
- int PLCAddressParse(QString inputAddress, short* dbNumber, VarType* varType, short* address, short* bitNumber);
- int WriteBoolVal(int dbNum, int offset, bool bVal);
- int WriteIntVal(int dbNum, int offset, int nVal);
- int WriteFloatVal(int dbNum, int offset, float fVal);
- int WriteRealVal(int dbNum, int offset, double fVal);
- int ReadBoolVal(int dbNum, int offset, bool* bVal);
- int ReadIntVal(int dbNum, int offset, int* nVal);
- int ReadFloatVal(int dbNum, int offset, float* fVal);
- int ReadRealVal(int dbNum, int offset, double* fVal);
- };
- // _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;
- };
|