ToolInterface.cpp 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254
  1. #include "Tool.h"
  2. #include "../../VisionPlusSdk/VisionPlusTool.h"
  3. DLL_TOOL_DESC m_Description;
  4. /// <summary>
  5. /// 获取工具描述
  6. /// </summary>
  7. /// <returns></returns>
  8. const DLL_TOOL_DESC& ToolImpl::Description()
  9. {
  10. // 生成dll描述
  11. m_Description.Type = TOOL_TYPE::TOOL_TYPE_STANDARD;
  12. m_Description.strCategory = ("硬件工具");
  13. m_Description.strName = ("ValueTest");
  14. m_Description.strVersion = ("3.0");
  15. m_Description.strInfo = ("This Info");
  16. return m_Description;
  17. }
  18. /////////////////////////////////////////////////
  19. // 生成默认的接口描述
  20. // 2021-8-3备注,其实 withValue 参数没有任何意义,因为目前的设计里exe是不会保存tool中的任何值的
  21. // 全部的数据都保存在dll自身中
  22. void ToolImpl::InitDefaultInterfaces(bool withValue)
  23. {
  24. m_Interfaces.clear();
  25. // 接口
  26. DLL_INF inf;
  27. inf.strName = ("Int.In");
  28. inf.Direction = INF_DIRECTION::INF_DIR_IN;
  29. inf.Type = INF_TYPE::INF_TYPE_STANDARD;
  30. inf.value.passMode = VALUE_PASS_MODE::PASS_BY_VALUE;
  31. inf.value.type = VALUE_TYPE::Type_Int;
  32. inf.Discard = INF_DISCARD::INF_DEFAULT;
  33. if (withValue)
  34. {
  35. inf.value.Ptr = (void**)&((ToolDialogImpl*)m_pDlgTool)->m_intInput;
  36. }
  37. // inf.bSmartLink = true;
  38. m_Interfaces.push_back(inf);
  39. inf.reset();//////////////////////////////////////////////////////////////////////////
  40. inf.strName = ("Int.InAddr");
  41. inf.Direction = INF_DIRECTION::INF_DIR_IN;
  42. inf.Type = INF_TYPE::INF_TYPE_STANDARD;
  43. inf.value.passMode = VALUE_PASS_MODE::PASS_BY_ADDRESS;
  44. inf.value.type = VALUE_TYPE::Type_Int;
  45. if (withValue)
  46. {
  47. inf.value.Ptr = (void**)&((ToolDialogImpl*)m_pDlgTool)->m_pInt;
  48. }
  49. // inf.bSmartLink = true;
  50. m_Interfaces.push_back(inf);
  51. inf.reset();//////////////////////////////////////////////////////////////////////////
  52. inf.strName = ("Int.Out");
  53. inf.Direction = INF_DIRECTION::INF_DIR_OUT;
  54. inf.Type = INF_TYPE::INF_TYPE_STANDARD;
  55. inf.value.passMode = VALUE_PASS_MODE::PASS_BY_VALUE;
  56. inf.value.type = VALUE_TYPE::Type_Int;
  57. if (withValue)
  58. {
  59. inf.value.Ptr = (void**)&((ToolDialogImpl*)m_pDlgTool)->m_intOutput;
  60. }
  61. // inf.bSmartLink = false;
  62. m_Interfaces.push_back(inf);
  63. inf.reset();//////////////////////////////////////////////////////////////////////////
  64. // 2021-12-18 增加复杂控件的索引接口供测试
  65. inf.strName = ("Index.Int");
  66. inf.Direction = INF_DIRECTION::INF_DIR_OUT;
  67. inf.Type = INF_TYPE::INF_TYPE_STANDARD;
  68. inf.value.passMode = VALUE_PASS_MODE::PASS_BY_VALUE;
  69. inf.value.type = VALUE_TYPE::Type_Int;
  70. if (withValue)
  71. {
  72. inf.value.Ptr = (void**)&((ToolDialogImpl*)m_pDlgTool)->m_nIndex;
  73. }
  74. m_Interfaces.push_back(inf);
  75. inf.reset();
  76. // 2021-12-27 增加另外一个复杂控件的索引接口供测试
  77. inf.strName = ("Index2.Int");
  78. inf.Direction = INF_DIRECTION::INF_DIR_OUT;
  79. inf.Type = INF_TYPE::INF_TYPE_STANDARD;
  80. inf.value.passMode = VALUE_PASS_MODE::PASS_BY_VALUE;
  81. inf.value.type = VALUE_TYPE::Type_Int;
  82. if (withValue)
  83. {
  84. inf.value.Ptr = (void**)&((ToolDialogImpl*)m_pDlgTool)->m_nIndex2;
  85. }
  86. m_Interfaces.push_back(inf);
  87. inf.reset();
  88. inf.strName = ("QString.In");
  89. inf.Direction = INF_DIRECTION::INF_DIR_IN;
  90. inf.Type = INF_TYPE::INF_TYPE_STANDARD;
  91. inf.value.passMode = VALUE_PASS_MODE::PASS_BY_VALUE;
  92. inf.value.type = VALUE_TYPE::Type_String;
  93. if (withValue)
  94. {
  95. inf.value.Ptr = (void**)&((ToolDialogImpl*)m_pDlgTool)->m_strInput;
  96. }
  97. m_Interfaces.push_back(inf);
  98. inf.reset();//////////////////////////////////////////////////////////////////////////
  99. inf.strName = ("QString.Out");
  100. inf.Direction = INF_DIRECTION::INF_DIR_OUT;
  101. inf.Type = INF_TYPE::INF_TYPE_STANDARD;
  102. inf.value.passMode = VALUE_PASS_MODE::PASS_BY_VALUE;
  103. inf.value.type = VALUE_TYPE::Type_String;
  104. if (withValue)
  105. {
  106. inf.value.Ptr = (void**)&((ToolDialogImpl*)m_pDlgTool)->m_strOutput;
  107. }
  108. m_Interfaces.push_back(inf);
  109. inf.reset();//////////////////////////////////////////////////////////////////////////
  110. // 增加Event类型的接口
  111. inf.strName = ("Event.Out");
  112. inf.Direction = INF_DIRECTION::INF_DIR_OUT;
  113. inf.Type = INF_TYPE::INF_TYPE_EVENT;
  114. inf.value.passMode = VALUE_PASS_MODE::PASS_BY_VALUE;
  115. if (withValue)
  116. {
  117. // 初始化event名字
  118. ((ToolDialogImpl*)m_pDlgTool)->m_eventOut.setName(m_strPouName, this->m_strInstanceName + "." + inf.strName);
  119. inf.value.Ptr = (void**)&((ToolDialogImpl*)m_pDlgTool)->m_eventOut;
  120. }
  121. m_Interfaces.push_back(inf);
  122. inf.reset();//////////////////////////////////////////////////////////////////////////
  123. // 增加Event类型的接口2
  124. inf.strName = ("Event2.Out");
  125. inf.Direction = INF_DIRECTION::INF_DIR_OUT;
  126. inf.Type = INF_TYPE::INF_TYPE_EVENT;
  127. inf.value.passMode = VALUE_PASS_MODE::PASS_BY_VALUE;
  128. // inf.value.type = VALUE_TYPE::Type_Event;
  129. if (withValue)
  130. {
  131. ((ToolDialogImpl*)m_pDlgTool)->m_eventOut2.setName(m_strPouName, this->m_strInstanceName + "." + inf.strName);
  132. inf.value.Ptr = (void**)&((ToolDialogImpl*)m_pDlgTool)->m_eventOut2;
  133. }
  134. m_Interfaces.push_back(inf);
  135. inf.reset();//////////////////////////////////////////////////////////////////////////
  136. // 增加QButton类型的测试接口
  137. inf.strName = ("QButton.Out");
  138. inf.Direction = INF_DIRECTION::INF_DIR_OUT;
  139. inf.Type = INF_TYPE::INF_TYPE_CONTROL;
  140. inf.value.passMode = VALUE_PASS_MODE::PASS_BY_ADDRESS;
  141. inf.value.type = VALUE_TYPE::Control_Button;
  142. if (withValue)
  143. {
  144. // 注意提供控件指针的时候比起普通变量要少一个 & 否则内存地址就弄错了
  145. inf.value.Ptr = (void**)((ToolDialogImpl*)m_pDlgTool)->m_expButton;
  146. }
  147. m_Interfaces.push_back(inf);
  148. inf.reset();//////////////////////////////////////////////////////////////////////////
  149. // 增加QLineEdit输出类型的接口
  150. inf.strName = ("QLineEdit.Out");
  151. inf.Direction = INF_DIRECTION::INF_DIR_OUT;
  152. inf.Type = INF_TYPE::INF_TYPE_CONTROL;
  153. inf.value.passMode = VALUE_PASS_MODE::PASS_BY_ADDRESS;
  154. inf.value.type = VALUE_TYPE::Control_LineEdit;
  155. if (withValue)
  156. {
  157. // 注意提供控件指针的时候比起普通变量要少一个 & 否则内存地址就弄错了
  158. inf.value.Ptr = (void**)((ToolDialogImpl*)m_pDlgTool)->m_expEdit;
  159. }
  160. m_Interfaces.push_back(inf);
  161. inf.reset();//////////////////////////////////////////////////////////////////////////
  162. // 增加QRadioButton输出类型的接口
  163. inf.strName = ("QRadio.Out");
  164. inf.Direction = INF_DIRECTION::INF_DIR_OUT;
  165. inf.Type = INF_TYPE::INF_TYPE_CONTROL;
  166. inf.value.passMode = VALUE_PASS_MODE::PASS_BY_ADDRESS;
  167. inf.value.type = VALUE_TYPE::Control_RadioBox;
  168. if (withValue)
  169. {
  170. // 注意提供控件指针的时候比起普通变量要少一个 & 否则内存地址就弄错了
  171. inf.value.Ptr = (void**)((ToolDialogImpl*)m_pDlgTool)->m_expRadio;
  172. }
  173. m_Interfaces.push_back(inf);
  174. inf.reset();//////////////////////////////////////////////////////////////////////////
  175. // 增加QCheckBox输出类型的接口
  176. inf.strName = ("QCheck.Out");
  177. inf.Direction = INF_DIRECTION::INF_DIR_OUT;
  178. inf.Type = INF_TYPE::INF_TYPE_CONTROL;
  179. inf.value.passMode = VALUE_PASS_MODE::PASS_BY_ADDRESS;
  180. inf.value.type = VALUE_TYPE::Control_CheckBox;
  181. if (withValue)
  182. {
  183. // 注意提供控件指针的时候比起普通变量要少一个 & 否则内存地址就弄错了
  184. inf.value.Ptr = (void**)((ToolDialogImpl*)m_pDlgTool)->m_expCheck;
  185. }
  186. m_Interfaces.push_back(inf);
  187. inf.reset();//////////////////////////////////////////////////////////////////////////
  188. // 增加QListWidget输出类型的接口
  189. inf.strName = ("QList.Out");
  190. inf.Direction = INF_DIRECTION::INF_DIR_OUT;
  191. inf.Type = INF_TYPE::INF_TYPE_CONTROL;
  192. inf.value.passMode = VALUE_PASS_MODE::PASS_BY_ADDRESS;
  193. inf.value.type = VALUE_TYPE::Control_Listbox;
  194. if (withValue)
  195. {
  196. // 注意提供控件指针的时候比起普通变量要少一个 & 否则内存地址就弄错了
  197. inf.value.Ptr = (void**)((ToolDialogImpl*)m_pDlgTool)->m_expList;
  198. }
  199. m_Interfaces.push_back(inf);
  200. inf.reset();//////////////////////////////////////////////////////////////////////////
  201. // 增加QComboBox输出类型的接口
  202. inf.strName = ("QCombo.Out");
  203. inf.Direction = INF_DIRECTION::INF_DIR_OUT;
  204. inf.Type = INF_TYPE::INF_TYPE_CONTROL;
  205. inf.value.passMode = VALUE_PASS_MODE::PASS_BY_ADDRESS;
  206. inf.value.type = VALUE_TYPE::Control_ComboBox;
  207. if (withValue)
  208. {
  209. // 注意提供控件指针的时候比起普通变量要少一个 & 否则内存地址就弄错了
  210. inf.value.Ptr = (void**)((ToolDialogImpl*)m_pDlgTool)->m_expCombo;
  211. }
  212. m_Interfaces.push_back(inf);
  213. inf.reset();//////////////////////////////////////////////////////////////////////////
  214. }