Tool.cpp 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174
  1. #include "Tool.h"
  2. ToolImpl* m_pDllTool = nullptr;
  3. DLL_TOOL_DESC m_Description;
  4. ///////////////////////////////////////////////////////////////////
  5. // 返回工具新实例的指针
  6. extern "C" CST_VISIONPLUS_TOOL_EXPORT DllTool * GetTool()
  7. {
  8. m_pDllTool = new ToolImpl();
  9. return m_pDllTool;
  10. }
  11. ///////////////////////////////////////////////////////////////////
  12. // 释放工具实例的指针
  13. extern "C" CST_VISIONPLUS_TOOL_EXPORT void ReleaseTool()
  14. {
  15. if (m_pDllTool != nullptr)
  16. {
  17. delete m_pDllTool;
  18. m_pDllTool = nullptr;
  19. }
  20. }
  21. ToolImpl::ToolImpl()
  22. {
  23. m_pDlgTool = nullptr;
  24. }
  25. ///////////////////////////////////////////////////////////////////
  26. // 获取工具描述
  27. const DLL_TOOL_DESC& ToolImpl::Description()
  28. {
  29. // 生成dll描述
  30. m_Description.Type = (TOOL_TYPE)TOOL_TYPE_PORT_INPUT;
  31. m_Description.strCategory = QStringLiteral("Port工具");
  32. m_Description.strName = QStringLiteral("PortInput");
  33. m_Description.strVersion = QStringLiteral("2.0");
  34. m_Description.strInfo = QStringLiteral("This Info");
  35. return m_Description;
  36. }
  37. ////////////////////////////////////////////////////////////////////
  38. // 不带参数初始化
  39. int ToolImpl::InitTool()
  40. {
  41. // 生成工具描述
  42. Description();
  43. // 生成接口默认描述
  44. InitDefaultInterfaces(false);
  45. return 0;
  46. }
  47. ////////////////////////////////////////////////////////////////////
  48. // 初始化
  49. int ToolImpl::InitTool(QWidget* pParent, QString strPouName, QString strInstanceName)
  50. {
  51. m_pDlgTool = new ToolDialogImpl(pParent);
  52. m_pDlgTool->setParent(pParent);
  53. m_pDlgTool->hide();
  54. this->m_strInstanceName = strInstanceName;
  55. this->m_strPouName = strPouName;
  56. // 生成工具描述
  57. Description();
  58. // 生成接口默认描述,并且给参数赋值
  59. InitDefaultInterfaces(true);
  60. return 0;
  61. }
  62. ToolImpl::~ToolImpl()
  63. {
  64. if (m_pDlgTool != nullptr)
  65. {
  66. delete m_pDlgTool;
  67. m_pDlgTool = nullptr;
  68. }
  69. //if (m_Even.hEvenHandle != NULL)
  70. //{
  71. // CloseHandle(m_Even.hEvenHandle);
  72. // m_Even.hEvenHandle = NULL;
  73. //}
  74. }
  75. /////////////////////////////////////////////////
  76. // 生成默认的接口描述
  77. void ToolImpl::InitDefaultInterfaces(bool withValue)
  78. {
  79. // 接口(仅有一个输入接口,并且变量类型为空)
  80. DLL_INF inf;
  81. // 输入
  82. inf.strName = QStringLiteral("");
  83. inf.InfDirection = INF_DIRECTION::INF_DIR_IN;
  84. inf.InfCategory = INF_CATEGORY::INF_CATEGORY_UNKNOWN;
  85. inf.Value.PassMode = VALUE_PASS_MODE::PASS_BY_UNKNOWN;
  86. inf.Value.Type = VALUE_TYPE::Unknown_Type;
  87. inf.Value.Ptr = nullptr;
  88. inf.bSmartLink = false;
  89. m_Interfaces.push_back(inf);
  90. inf.Reset();//////////////////////////////////////////////////////////////////////////
  91. }
  92. ////系统Run和Stop时调用
  93. //void CToolImpl::Running(bool bRun)
  94. //{
  95. // if (m_pDlgTool!= nullptr)
  96. // {
  97. // m_pDlgTool->Running(bRun);
  98. // }
  99. //}
  100. //
  101. //// 显示参数设置对话框
  102. //void CToolImpl::ShowDialog()
  103. //{
  104. // if (m_pDlgTool != nullptr)
  105. // {
  106. // m_pDlgTool->show();
  107. // m_pDlgTool->setWindowTitle(m_pDlgTool->m_strPouName + QStringLiteral(" ---> ") + m_pDlgTool->m_strInstanceName);
  108. // }
  109. //}
  110. //
  111. //int CToolImpl::Execute()
  112. //{
  113. // // ForTest输出执行的结果信息
  114. // m_pDlgTool->Execute();
  115. // return 0;
  116. //}
  117. //// 工具的状态
  118. //void CToolImpl::setReceToolStateCallBack(receToolStateCallBack callBack, long long userParam)
  119. //{
  120. // m_pDlgTool->m_pReceToolStateFunction = callBack;
  121. // m_pDlgTool->m_ToolStateUserParam = userParam;
  122. //}
  123. //
  124. //
  125. /////设置接收Log数据回调函数
  126. //void CToolImpl::setReceLogCallBack(receLogCallBack callBack, long long userParam)
  127. //{
  128. // m_pDlgTool->m_pReceLogFunction = callBack;
  129. // m_pDlgTool->m_LogUserParam = userParam;
  130. //}
  131. //
  132. /////设置接收 OnExecute 回调函数
  133. //void CToolImpl::setOnExecuteCallBack(receOnExecutegCallBack callBack, long long userParam)
  134. //{
  135. // m_pDlgTool->m_pReceOnExecuteFunction = callBack;
  136. // m_pDlgTool->m_OnExecuteUserParam = userParam;
  137. //}
  138. //
  139. /////设置接收 ToolBusy 回调函数
  140. //void CToolImpl::setToolBusyCallBack(receToolBusyCallBack callBack, long long userParam)
  141. //{
  142. // m_pDlgTool->m_pReceToolBusyFunction = callBack;
  143. // m_pDlgTool->m_ToolBusyUserParam = userParam;
  144. //}