#include "Tool.h" #include "../../VisionPlusSdk/VisionPlusTool.h" DLL_TOOL_DESC m_Description; /// /// 获取工具描述 /// /// const DLL_TOOL_DESC& ToolImpl::Description() { // 生成dll描述 m_Description.Type = TOOL_TYPE::TOOL_TYPE_STANDARD; m_Description.strCategory = ("硬件工具"); m_Description.strName = ("ValueTest"); m_Description.strVersion = ("3.0"); m_Description.strInfo = ("This Info"); return m_Description; } ///////////////////////////////////////////////// // 生成默认的接口描述 // 2021-8-3备注,其实 withValue 参数没有任何意义,因为目前的设计里exe是不会保存tool中的任何值的 // 全部的数据都保存在dll自身中 void ToolImpl::InitDefaultInterfaces(bool withValue) { m_Interfaces.clear(); // 接口 DLL_INF inf; inf.strName = ("Int.In"); inf.Direction = INF_DIRECTION::INF_DIR_IN; inf.Type = INF_TYPE::INF_TYPE_STANDARD; inf.value.passMode = VALUE_PASS_MODE::PASS_BY_VALUE; inf.value.type = VALUE_TYPE::Type_Int; inf.Discard = INF_DISCARD::INF_DEFAULT; if (withValue) { inf.value.Ptr = (void**)&((ToolDialogImpl*)m_pDlgTool)->m_intInput; } // inf.bSmartLink = true; m_Interfaces.push_back(inf); inf.reset();////////////////////////////////////////////////////////////////////////// inf.strName = ("Int.InAddr"); inf.Direction = INF_DIRECTION::INF_DIR_IN; inf.Type = INF_TYPE::INF_TYPE_STANDARD; inf.value.passMode = VALUE_PASS_MODE::PASS_BY_ADDRESS; inf.value.type = VALUE_TYPE::Type_Int; if (withValue) { inf.value.Ptr = (void**)&((ToolDialogImpl*)m_pDlgTool)->m_pInt; } // inf.bSmartLink = true; m_Interfaces.push_back(inf); inf.reset();////////////////////////////////////////////////////////////////////////// inf.strName = ("Int.Out"); inf.Direction = INF_DIRECTION::INF_DIR_OUT; inf.Type = INF_TYPE::INF_TYPE_STANDARD; inf.value.passMode = VALUE_PASS_MODE::PASS_BY_VALUE; inf.value.type = VALUE_TYPE::Type_Int; if (withValue) { inf.value.Ptr = (void**)&((ToolDialogImpl*)m_pDlgTool)->m_intOutput; } // inf.bSmartLink = false; m_Interfaces.push_back(inf); inf.reset();////////////////////////////////////////////////////////////////////////// // 2021-12-18 增加复杂控件的索引接口供测试 inf.strName = ("Index.Int"); inf.Direction = INF_DIRECTION::INF_DIR_OUT; inf.Type = INF_TYPE::INF_TYPE_STANDARD; inf.value.passMode = VALUE_PASS_MODE::PASS_BY_VALUE; inf.value.type = VALUE_TYPE::Type_Int; if (withValue) { inf.value.Ptr = (void**)&((ToolDialogImpl*)m_pDlgTool)->m_nIndex; } m_Interfaces.push_back(inf); inf.reset(); // 2021-12-27 增加另外一个复杂控件的索引接口供测试 inf.strName = ("Index2.Int"); inf.Direction = INF_DIRECTION::INF_DIR_OUT; inf.Type = INF_TYPE::INF_TYPE_STANDARD; inf.value.passMode = VALUE_PASS_MODE::PASS_BY_VALUE; inf.value.type = VALUE_TYPE::Type_Int; if (withValue) { inf.value.Ptr = (void**)&((ToolDialogImpl*)m_pDlgTool)->m_nIndex2; } m_Interfaces.push_back(inf); inf.reset(); inf.strName = ("QString.In"); inf.Direction = INF_DIRECTION::INF_DIR_IN; inf.Type = INF_TYPE::INF_TYPE_STANDARD; inf.value.passMode = VALUE_PASS_MODE::PASS_BY_VALUE; inf.value.type = VALUE_TYPE::Type_String; if (withValue) { inf.value.Ptr = (void**)&((ToolDialogImpl*)m_pDlgTool)->m_strInput; } m_Interfaces.push_back(inf); inf.reset();////////////////////////////////////////////////////////////////////////// inf.strName = ("QString.Out"); inf.Direction = INF_DIRECTION::INF_DIR_OUT; inf.Type = INF_TYPE::INF_TYPE_STANDARD; inf.value.passMode = VALUE_PASS_MODE::PASS_BY_VALUE; inf.value.type = VALUE_TYPE::Type_String; if (withValue) { inf.value.Ptr = (void**)&((ToolDialogImpl*)m_pDlgTool)->m_strOutput; } m_Interfaces.push_back(inf); inf.reset();////////////////////////////////////////////////////////////////////////// // 增加Event类型的接口 inf.strName = ("Event.Out"); inf.Direction = INF_DIRECTION::INF_DIR_OUT; inf.Type = INF_TYPE::INF_TYPE_EVENT; inf.value.passMode = VALUE_PASS_MODE::PASS_BY_VALUE; if (withValue) { // 初始化event名字 ((ToolDialogImpl*)m_pDlgTool)->m_eventOut.setName(m_strPouName, this->m_strInstanceName + "." + inf.strName); inf.value.Ptr = (void**)&((ToolDialogImpl*)m_pDlgTool)->m_eventOut; } m_Interfaces.push_back(inf); inf.reset();////////////////////////////////////////////////////////////////////////// // 增加Event类型的接口2 inf.strName = ("Event2.Out"); inf.Direction = INF_DIRECTION::INF_DIR_OUT; inf.Type = INF_TYPE::INF_TYPE_EVENT; inf.value.passMode = VALUE_PASS_MODE::PASS_BY_VALUE; // inf.value.type = VALUE_TYPE::Type_Event; if (withValue) { ((ToolDialogImpl*)m_pDlgTool)->m_eventOut2.setName(m_strPouName, this->m_strInstanceName + "." + inf.strName); inf.value.Ptr = (void**)&((ToolDialogImpl*)m_pDlgTool)->m_eventOut2; } m_Interfaces.push_back(inf); inf.reset();////////////////////////////////////////////////////////////////////////// // 增加QButton类型的测试接口 inf.strName = ("QButton.Out"); inf.Direction = INF_DIRECTION::INF_DIR_OUT; inf.Type = INF_TYPE::INF_TYPE_CONTROL; inf.value.passMode = VALUE_PASS_MODE::PASS_BY_ADDRESS; inf.value.type = VALUE_TYPE::Control_Button; if (withValue) { // 注意提供控件指针的时候比起普通变量要少一个 & 否则内存地址就弄错了 inf.value.Ptr = (void**)((ToolDialogImpl*)m_pDlgTool)->m_expButton; } m_Interfaces.push_back(inf); inf.reset();////////////////////////////////////////////////////////////////////////// // 增加QLineEdit输出类型的接口 inf.strName = ("QLineEdit.Out"); inf.Direction = INF_DIRECTION::INF_DIR_OUT; inf.Type = INF_TYPE::INF_TYPE_CONTROL; inf.value.passMode = VALUE_PASS_MODE::PASS_BY_ADDRESS; inf.value.type = VALUE_TYPE::Control_LineEdit; if (withValue) { // 注意提供控件指针的时候比起普通变量要少一个 & 否则内存地址就弄错了 inf.value.Ptr = (void**)((ToolDialogImpl*)m_pDlgTool)->m_expEdit; } m_Interfaces.push_back(inf); inf.reset();////////////////////////////////////////////////////////////////////////// // 增加QRadioButton输出类型的接口 inf.strName = ("QRadio.Out"); inf.Direction = INF_DIRECTION::INF_DIR_OUT; inf.Type = INF_TYPE::INF_TYPE_CONTROL; inf.value.passMode = VALUE_PASS_MODE::PASS_BY_ADDRESS; inf.value.type = VALUE_TYPE::Control_RadioBox; if (withValue) { // 注意提供控件指针的时候比起普通变量要少一个 & 否则内存地址就弄错了 inf.value.Ptr = (void**)((ToolDialogImpl*)m_pDlgTool)->m_expRadio; } m_Interfaces.push_back(inf); inf.reset();////////////////////////////////////////////////////////////////////////// // 增加QCheckBox输出类型的接口 inf.strName = ("QCheck.Out"); inf.Direction = INF_DIRECTION::INF_DIR_OUT; inf.Type = INF_TYPE::INF_TYPE_CONTROL; inf.value.passMode = VALUE_PASS_MODE::PASS_BY_ADDRESS; inf.value.type = VALUE_TYPE::Control_CheckBox; if (withValue) { // 注意提供控件指针的时候比起普通变量要少一个 & 否则内存地址就弄错了 inf.value.Ptr = (void**)((ToolDialogImpl*)m_pDlgTool)->m_expCheck; } m_Interfaces.push_back(inf); inf.reset();////////////////////////////////////////////////////////////////////////// // 增加QListWidget输出类型的接口 inf.strName = ("QList.Out"); inf.Direction = INF_DIRECTION::INF_DIR_OUT; inf.Type = INF_TYPE::INF_TYPE_CONTROL; inf.value.passMode = VALUE_PASS_MODE::PASS_BY_ADDRESS; inf.value.type = VALUE_TYPE::Control_Listbox; if (withValue) { // 注意提供控件指针的时候比起普通变量要少一个 & 否则内存地址就弄错了 inf.value.Ptr = (void**)((ToolDialogImpl*)m_pDlgTool)->m_expList; } m_Interfaces.push_back(inf); inf.reset();////////////////////////////////////////////////////////////////////////// // 增加QComboBox输出类型的接口 inf.strName = ("QCombo.Out"); inf.Direction = INF_DIRECTION::INF_DIR_OUT; inf.Type = INF_TYPE::INF_TYPE_CONTROL; inf.value.passMode = VALUE_PASS_MODE::PASS_BY_ADDRESS; inf.value.type = VALUE_TYPE::Control_ComboBox; if (withValue) { // 注意提供控件指针的时候比起普通变量要少一个 & 否则内存地址就弄错了 inf.value.Ptr = (void**)((ToolDialogImpl*)m_pDlgTool)->m_expCombo; } m_Interfaces.push_back(inf); inf.reset();////////////////////////////////////////////////////////////////////////// }