当前位置: 首页>>代码示例>>C++>>正文


C++ XMLParser::load方法代码示例

本文整理汇总了C++中XMLParser::load方法的典型用法代码示例。如果您正苦于以下问题:C++ XMLParser::load方法的具体用法?C++ XMLParser::load怎么用?C++ XMLParser::load使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在XMLParser的用法示例。


在下文中一共展示了XMLParser::load方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: loadConfigFile

string FabAtHomePrinter::loadConfigFile(string filePath)
{
     
     //Clear previously loaded data.
     axes.clear(); 
     motors.clear();
     tool.bays.clear();

     XMLParser parser;
     string result = parser.load(filePath);
     if(result.compare("") != 0)
     {
          return result;
     }

     //Load constants.
     COM_PORT = Util::assertType<unsigned int>(parser.text("fabAtHomePrinter 0\\electronics 0\\comPort 0"));
     NUM_MODULES = Util::assertType<unsigned int>(parser.text("fabAtHomePrinter 0\\electronics 0\\numModules 0"));
     BAUD_RATE = Util::assertType<unsigned int>(parser.text("fabAtHomePrinter 0\\electronics 0\\baudRate 0"));
     X_Y_Z_GROUP_ADDRESS = (byte)Util::assertType<unsigned int>(parser.text("fabAtHomePrinter 0\\electronics 0\\xyzGroupAddress 0"));
     PLATFORM_DELTA = Util::assertType<double>(parser.text("fabAtHomePrinter 0\\motion 0\\platformDelta 0"));
     OLD_MSPS = Util::assertType<double>(parser.text("fabAtHomePrinter 0\\motion 0\\oldMsps 0"));
     
     //Load motors.
     unsigned int count = parser.count("fabAtHomePrinter 0\\electronics 0\\motor");
     for(unsigned int i = 0; i < count; ++i)
     {
          string base = "fabAtHomePrinter 0\\electronics 0\\motor "+Util::toString(i)+"\\";
          string name = parser.text(base+"name 0");
          byte address = (byte)Util::assertType<unsigned int>(parser.text(base+"address 0"));
          double countsPerDistanceUnit = Util::assertType<double>(parser.text(base+"countsPerDistanceUnit 0"));
          short kp = Util::assertType<unsigned short>(parser.text(base+"kp 0"));
          short kd = Util::assertType<unsigned short>(parser.text(base+"kd 0"));
          short ki = Util::assertType<unsigned short>(parser.text(base+"ki 0"));
          short il = Util::assertType<unsigned short>(parser.text(base+"il 0"));
          byte ol = (byte)Util::assertType<unsigned int>(parser.text(base+"ol 0"));
          byte cl = (byte)Util::assertType<unsigned int>(parser.text(base+"cl 0"));
          short el = Util::assertType<unsigned short>(parser.text(base+"el 0"));
          byte sr = (byte)Util::assertType<unsigned int>(parser.text(base+"sr 0"));
          byte db = (byte)Util::assertType<unsigned int>(parser.text(base+"db 0"));
          double ticksPerSecond = Util::assertType<double>(parser.text(base+"ticksPerSecond 0"));
          motors[name] = Motor(name,address,countsPerDistanceUnit,ticksPerSecond,kp,kd,ki,il,ol,cl,el,sr,db);
     }
     
     //Load axes.
     count = parser.count("fabAtHomePrinter 0\\axis");
     for(unsigned int i = 0; i < count; ++i)
     {
          string base = "fabAtHomePrinter 0\\axis "+Util::toString(i)+"\\";
          string name = parser.text(base+"name 0");
          string motorName = parser.text(base+"motorName 0");
          map<string, Motor, LessThanString>::iterator motor = motors.find(motorName);
          if(motor == motors.end())
          {
               return "Axis "+name+" references motor "+motorName+" which has not been loaded.";
          }
          if(name.compare("Y") == 0 || name.compare("Z") == 0)
          {
               motor->second.setReversed(true);
          }
          axes[name] = Axis(name,&(motor->second));
     }

     //Check that axes named X, Y, and Z were loaded.
     if(axes.find("X") == axes.end())
     {
          return "Must load an axis named X.";
     }
     if(axes.find("Y") == axes.end())
     {
          return "Must load an axis named Y.";
     }
     if(axes.find("Z") == axes.end())
     {
          return "Must load an axis named Z.";
     }

     //Load bays.
     count = parser.count("fabAtHomePrinter 0\\tool 0\\bay");
     for(unsigned int i = 0; i < count; ++i)
     {
          string base = "fabAtHomePrinter 0\\tool 0\\bay "+Util::toString(i)+"\\";
          string name = parser.text(base+"name 0");
          string motorName = parser.text(base+"motorName 0");
          if(motors.find(motorName) == motors.end())
          {
               return "Bay "+name+" references motor "+motorName+" which has not been loaded.";
          }          
          double x = Util::assertType<double>(parser.text(base+"location 0\\x 0"));
          double y = Util::assertType<double>(parser.text(base+"location 0\\y 0"));
          double z = Util::assertType<double>(parser.text(base+"location 0\\z 0"));
          tool.bays[name] = Bay(name,Point(x,y,z),&(motors.find(motorName)->second));
     }

     //Check that at least one bay is loaded.
     if(tool.bays.size() == 0)
     {
          return "Must load at least one bay.";
     }
     
//.........这里部分代码省略.........
开发者ID:idle-git,项目名称:fabathome,代码行数:101,代码来源:FabAtHomePrinter.cpp


注:本文中的XMLParser::load方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。