Tool.cpp 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. #include "Tool.h"
  2. ToolImpl* m_pDllTool = nullptr;
  3. ///////////////////////////////////////////////////////////////////
  4. // 返回工具新实例的指针
  5. extern "C" CST_VISIONPLUS_TOOL_EXPORT DllTool * GetTool()
  6. {
  7. m_pDllTool = new ToolImpl();
  8. return m_pDllTool;
  9. }
  10. ///////////////////////////////////////////////////////////////////
  11. // 释放工具实例的指针
  12. extern "C" CST_VISIONPLUS_TOOL_EXPORT void ReleaseTool()
  13. {
  14. if (m_pDllTool != nullptr)
  15. {
  16. delete m_pDllTool;
  17. m_pDllTool = nullptr;
  18. }
  19. }
  20. ToolImpl::ToolImpl()
  21. {
  22. m_pDlgTool = nullptr;
  23. }
  24. ////////////////////////////////////////////////////////////////////
  25. // 不带参数初始化
  26. int ToolImpl::InitTool()
  27. {
  28. // 生成工具描述
  29. Description();
  30. // 生成接口默认描述
  31. InitDefaultInterfaces(false);
  32. return 0;
  33. }
  34. ////////////////////////////////////////////////////////////////////
  35. // 初始化
  36. int ToolImpl::InitTool(QWidget* pParent, QString strPouName, QString strInstanceName, QObject* pEventTarget)
  37. {
  38. m_pDlgTool = new ToolDialogImpl(pParent, this);
  39. m_pDlgTool->setParent(pParent);
  40. m_pDlgTool->hide();
  41. this->m_strInstanceName = strInstanceName;
  42. this->m_strPouName = strPouName;
  43. Q_ASSERT(pEventTarget != nullptr);
  44. m_pDlgTool->setEventTarget(pEventTarget);
  45. // 将pou名字和实例名字传入工具
  46. m_pDlgTool->SetToolInfo(strPouName, strInstanceName);
  47. // 生成工具描述
  48. Description();
  49. // 生成接口默认描述,并且给参数赋值
  50. InitDefaultInterfaces(true);
  51. return 0;
  52. }
  53. ToolImpl::~ToolImpl()
  54. {
  55. if (m_pDlgTool != nullptr)
  56. {
  57. delete m_pDlgTool;
  58. m_pDlgTool = nullptr;
  59. }
  60. //if (m_Even.hEvenHandle != NULL)
  61. //{
  62. // CloseHandle(m_Even.hEvenHandle);
  63. // m_Even.hEvenHandle = NULL;
  64. //}
  65. }
  66. /// <summary>
  67. /// 序列化至文件
  68. /// </summary>
  69. /// <param name="out"></param>
  70. /// <returns></returns>
  71. bool ToolImpl::SerializedToDoc(QDataStream& out)
  72. {
  73. ToolDialogImpl* pDlg = (ToolDialogImpl*)m_pDlgTool;
  74. return pDlg->Serialized(out, true);
  75. }
  76. /// <summary>
  77. /// 从文件反序列化
  78. /// </summary>
  79. /// <param name="in"></param>
  80. /// <returns></returns>
  81. bool ToolImpl::SerializedFromDoc(QDataStream& in)
  82. {
  83. ToolDialogImpl* pDlg = (ToolDialogImpl*)m_pDlgTool;
  84. return pDlg->Serialized(in, false);
  85. }
  86. /// <summary>
  87. /// 动态添加端口的变量绑定
  88. /// </summary>
  89. /// <param name="nIndex"></param>
  90. /// <returns></returns>
  91. bool ToolImpl::bindValuePtrByName(const QString strName, const int nIndex)
  92. {
  93. ToolDialogImpl* pDlg = (ToolDialogImpl*)m_pDlgTool;
  94. if (pDlg)
  95. {
  96. // return pDlg->bindValuePtrByName(strName, nIndex);
  97. }
  98. return false;
  99. }