#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();//////////////////////////////////////////////////////////////////////////
}