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


C++ Command::Construct方法代码示例

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


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

示例1: ParseCommand

bool CommandParser::ParseCommand(const String& command, Command& outCommand)
{
  Clear(); // clear first

  if(command.length() < MIN_COMMAND_LENGTH)
    return false;

  const char* readPtr = command.c_str();
  
  bool rightPrefix = !strncmp_P(readPtr,(const char*)CMD_PREFIX,CMD_PREFIX_LEN);// || !strncmp_P(readPtr,(const char*)CHILD_PREFIX,CMD_PREFIX_LEN);

  if(!rightPrefix)
    return false;


  // перемещаемся за префикс (CT или CD)
  readPtr += CMD_PREFIX_LEN;

  // проверяем, GET или SET должно быть передано
  bool isGet = !strncmp_P(readPtr,(const char*)CMD_GET,CMD_TYPE_LEN);
  bool rightType =  isGet || !strncmp_P(readPtr,(const char*)CMD_SET,CMD_TYPE_LEN);
  if(!rightType)
    return false;


  uint8_t commandType = isGet ? ctGET : ctSET;

  // перемещаемся за тип команды и знак '='
  readPtr += CMD_TYPE_LEN + 1;

  // ищем, есть ли разделитель в строке. Если он есть, значит, передали ещё и параметры помимо просто имени модуля
  const char* delimPtr = strchr(readPtr,'|');
  if(!delimPtr)
  {
    // без параметров, тупо конструируем и выходим
     outCommand.Construct(readPtr,NULL,commandType);
     return true;
  }

  // есть параметры, надо выцепить имя модуля
  size_t len = (delimPtr - readPtr);

  
  char* moduleName = new char[len+1];
  memset(moduleName,0,len+1);
  strncpy(moduleName,readPtr,len);
  
  delimPtr++;

  outCommand.Construct(moduleName,delimPtr,commandType);
  delete[] moduleName;
  return true;
   
}
开发者ID:Porokhnya,项目名称:GreenhouseProject,代码行数:54,代码来源:CommandParser.cpp

示例2: Update

void LoopModule::Update(uint16_t dt)
{

  size_t sz = vec.size();
  for(size_t i=0;i<sz;i++)
  {
      LoopLink* lnk = vec[i];
      if(!lnk->bActive || !lnk->interval || (lnk->countPasses > 0 && lnk->currPass >= lnk->countPasses)) // связанный модуль неактивен
      {
        continue;
      }

      
      lnk->lastTimerVal += dt;
      if(lnk->lastTimerVal >= lnk->interval)
      {
        // need to do the job
        lnk->lastTimerVal = lnk->lastTimerVal - lnk->interval;
        

          // конструируем команду
       
          Command com;
          com.Construct(lnk->linkedModule->GetID(),lnk->paramsToPass.c_str(),lnk->commandType);


          com.SetInternal(true); // говорим, что команда - от одного модуля к другому

          MainController->ProcessModuleCommand(com,lnk->linkedModule);

        if(lnk->countPasses > 0)
        {
          lnk->currPass++;
          if(lnk->currPass >= lnk->countPasses) // все проходы выполнены
          {
            lnk->currPass = 0;
            lnk->bActive = false;            
          } // if
        } // if(lnk->countPasses > 0)          

     } // if
      
        
  } // for
}
开发者ID:Porokhnya,项目名称:GreenhouseProject,代码行数:45,代码来源:LoopModule.cpp


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