前言
这一部分的内容放在如何生成大恒相机的参数,但其实难点并不在我接下去写的部分。难点在于你获得了这个节点的Name,Attribute,你该如何根据节点的类型,从而得到对于的Item,也就是这个节点是Number型你就该生成一个Number型的Item,QString类型就生成QString类型的Item。这才是难点,不过,这篇文章并不打算讲这个,这篇文章涉及到的内容主要是你该如何生成那个节点而已,以后关于那个有机会再出一篇文章,但那是后话了。
正文
初始化配置信息
首先,先让整个函数,然后再慢慢解析,你可以先瞄个大概:
//初始化配置信息
void MConfigureDahengG3UC::InitConfigure(QString index,MDeviceAbstract *pDev)
{
m_cCameraID = index;
m_pDevice = dynamic_cast<MDeviceDahengG3UC*>(pDev);
m_pNodeMap = new MNodeMap();
m_pNodeMap->SetDeviceId(m_cCameraID);
m_pNodeMap->SetConfigureObject(this);
m_pSimplyNodeMap = new MNodeMap();
m_pSimplyNodeMap->SetDeviceId(m_cCameraID);
CreateDocXml(); //创建doc
CreateSimplyDocXml(); //创建simply_doc
}
开始解析
m_pNodeMap = new MNodeMap();
整个语句是创建出整个节点。m_pNodeMap->SetConfigureObject(this);
整个是创建出那个配置对象。- 至于这里的Simply的类你们就不要管了 ,那个其实在把配置参数分成两个部分,一种是较为完整的,一种是除去一部分不常用的。
创建Xml节点
先给出完整的函数:
//创建doc
bool MConfigureDahengG3UC::CreateDocXml()
{
bool ret = false;
#ifdef WIN32_DAHENG_GEV
if((Q_NULLPTR == m_pNodeMap))
{
qDebug()<<"MConfigureDahengG3UC::CreateDocXml m_pNodeMap is null";
return ret;
}
if(m_pDevice->m_objDevicePtr.IsNull())
{
qDebug()<<"MConfigureDahengG3UC::CreateDocXml m_pDevice->m_objDevicePtr.IsNull";
return ret;
}
GxIAPICPP::gxstring_vector featureNameList;
GxIAPICPP::gxstring_vector featureRemoteNameList;
CGXFeatureControlPointer featureControl = m_pDevice->m_objDevicePtr->GetFeatureControl();
if(!featureControl.IsNull())
featureControl->GetFeatureNameList(featureNameList);//获取第一个属性参数集合featureNameList
CGXFeatureControlPointer featureControl2 = m_pDevice->m_objDevicePtr->GetRemoteFeatureControl();
if(!featureControl2.IsNull())
featureControl2->GetFeatureNameList(featureRemoteNameList);//获取第二个属性参数集合featureRemoteNameList
//开始创建xml文件
QDomDocument *m_doc = new QDomDocument(