#include "Tool.h" ToolImpl* m_pDllTool = nullptr; /////////////////////////////////////////////////////////////////// // 返回工具新实例的指针 extern "C" CST_VISIONPLUS_TOOL_EXPORT DllTool * GetTool() { m_pDllTool = new ToolImpl(); return m_pDllTool; } /////////////////////////////////////////////////////////////////// // 释放工具实例的指针 extern "C" CST_VISIONPLUS_TOOL_EXPORT void ReleaseTool() { if (m_pDllTool != nullptr) { delete m_pDllTool; m_pDllTool = nullptr; } } ToolImpl::ToolImpl() { m_pDlgTool = nullptr; } //////////////////////////////////////////////////////////////////// // 不带参数初始化 int ToolImpl::InitTool() { // 生成工具描述 Description(); // 生成接口默认描述 InitDefaultInterfaces(false); return 0; } //////////////////////////////////////////////////////////////////// // 初始化 int ToolImpl::InitTool(QWidget* pParent, QString strPouName, QString strInstanceName, QObject* pEventTarget) { m_pDlgTool = new ToolDialogImpl(pParent, this); m_pDlgTool->setParent(pParent); m_pDlgTool->hide(); this->m_strInstanceName = strInstanceName; this->m_strPouName = strPouName; Q_ASSERT(pEventTarget != nullptr); m_pDlgTool->setEventTarget(pEventTarget); // 将pou名字和实例名字传入工具 m_pDlgTool->SetToolInfo(strPouName, strInstanceName); // 生成工具描述 Description(); // 生成接口默认描述,并且给参数赋值 InitDefaultInterfaces(true); return 0; } ToolImpl::~ToolImpl() { if (m_pDlgTool != nullptr) { delete m_pDlgTool; m_pDlgTool = nullptr; } //if (m_Even.hEvenHandle != NULL) //{ // CloseHandle(m_Even.hEvenHandle); // m_Even.hEvenHandle = NULL; //} } /// /// 序列化至文件 /// /// /// bool ToolImpl::SerializedToDoc(QDataStream& out) { ToolDialogImpl* pDlg = (ToolDialogImpl*)m_pDlgTool; return pDlg->Serialized(out, true); } /// /// 从文件反序列化 /// /// /// bool ToolImpl::SerializedFromDoc(QDataStream& in) { ToolDialogImpl* pDlg = (ToolDialogImpl*)m_pDlgTool; return pDlg->Serialized(in, false); } /// /// 动态添加端口的变量绑定 /// /// /// bool ToolImpl::bindValuePtrByName(const QString strName, const int nIndex) { ToolDialogImpl* pDlg = (ToolDialogImpl*)m_pDlgTool; if (pDlg) { return pDlg->bindValuePtrByName(strName, nIndex); } return false; }