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


C++ ArRobot::asyncConnect方法代码示例

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


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

示例1: main

int main(int argc, char **argv) 
{
  std::string str;
  int ret;

  // connection to the robot
  ArTcpConnection con;
  // the robot
  ArRobot robot;
  
  // ake the joydrive object, which also creates its own thread
  Joydrive joyd(&robot);
  
  // the connection handler
  ConnHandler ch(&robot, &joyd);

  // init aria, which will make a dedicated signal handling thread
  Aria::init(Aria::SIGHANDLE_THREAD);

  // open the connection with default args, exit if it fails
  if ((ret = con.open()) != 0)
  {
    str = con.getOpenMessage(ret);
    printf("Open failed: %s\n", str.c_str());
    Aria::shutdown();
    return 1;
  }


  // set the connection on the robot
  robot.setDeviceConnection(&con);

  // run the robot in its own thread
  robot.runAsync(false);
  
  // have the robot connect asyncronously (so its loop is still running)
  // if this fails it means that the robot isn't running in its own thread
  if (!robot.asyncConnect())
  {
    printf(
    "asyncConnect failed because robot is not running in its own thread.\n");
    Aria::shutdown();
    return 1;
  }

  // now we just wait for the robot to be done running
  printf("Waiting for the robot's run to exit.\n");
  robot.waitForRunExit();
  // then we exit
  printf("exiting main\n");
  Aria::exit(0);  // exit program
  return 0;
}
开发者ID:sendtooscar,项目名称:ariaClientDriver,代码行数:53,代码来源:joydriveThreaded.cpp

示例2: main

int main(int argc, char **argv)
{
  std::string str;
  int ret;
  int successes = 0, failures = 0;
  int action;
  bool exitOnFailure = true;
  
  ArSerialConnection con;
  ArRobot robot;
  //ArLog::init(ArLog::StdOut, ArLog::Verbose);
  srand(time(NULL));
  robot.runAsync(false);
// if (!exitOnFailure)
//    ArLog::init(ArLog::None, ArLog::Terse);
  //else
  //ArLog::init(ArLog::None);
  while (1)
  {
    if (con.getStatus() != ArDeviceConnection::STATUS_OPEN &&
    (ret = con.open()) != 0)
    {
      str = con.getOpenMessage(ret);
      printf("Open failed: %s\n", str.c_str());
      ++failures;
      if (exitOnFailure)
      {
    printf("Failed\n");
    exit(0);
      }
      else
      {
    ArUtil::sleep(200);
    robot.unlock();
    continue;
      }
    }
    robot.lock();
    robot.setDeviceConnection(&con);
    robot.unlock();
    ArUtil::sleep((rand() % 5) * 100);
    if (robot.asyncConnect())
    {
      robot.waitForConnectOrConnFail();
      robot.lock();
      if (!robot.isConnected())
      {
    if (exitOnFailure)
    {
      printf("Failed after %d tries.\n", successes);
      exit(0);
    }
    printf("Failed to connect successfully");
    ++failures;
      }
      robot.comInt(ArCommands::SONAR, 0);
      robot.comInt(ArCommands::SOUNDTOG, 0);
      //robot.comInt(ArCommands::PLAYLIST, 0);
      robot.comInt(ArCommands::ENCODER, 1);
      ArUtil::sleep(((rand() % 20) + 3) * 100);
      ++successes;
      // okay, now try to leave it in a messed up state
      action = rand() % 8;
      robot.dropConnection();
      switch (action) {
      case 0:
    printf("Discon  0 ");
    robot.disconnect();
    ArUtil::sleep(100);
    robot.com(0);
    break;
      case 1:
    printf("Discon  1 ");
    robot.disconnect();
    ArUtil::sleep(100);
    robot.com(0);
    ArUtil::sleep(100);
    robot.com(1);
    break;
      case 2:
    printf("Discon  2 ");
    robot.disconnect();
    ArUtil::sleep(100);
    robot.com(0);
    ArUtil::sleep(100);
    robot.com(1);
    ArUtil::sleep(100);
    robot.com(2);
    break;
      case 3:
    printf("Discon 10 ");
    robot.disconnect();
    ArUtil::sleep(100);
    robot.com(10);
    break;
      case 4:
    printf("Discon    ");
    robot.disconnect();
    break;
      default:
//.........这里部分代码省略.........
开发者ID:sauver,项目名称:sauver_sys,代码行数:101,代码来源:asyncConnectTest.cpp


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