C++ 多机同步示例代码-Multi Device Sync


    南宫NG·28



      南宫NG·28

      C++ 多机同步示例代码-Multi Device Sync

      # 多设备同步示例-MultiDeviceSync

      功能描述:演示多设备同步操作。

       

      >本示例基于C++ low Level API进行演示

       

      配置程序模式

      std::cout << "Please select options: " << std::endl;
      std::cout << " 0 --> config devices" << std::endl;
      std::cout << " 1 --> start stream" << std::endl;
      std::cout << "input: ";
      int index = -1;
      std::cin >> index;

       

      配置多设备同步

      exitValue = configMultiDeviceSync();

       

      区分主从设备

      streamDevList.clear();
      // Query the list of connected devices
      auto devList = context.queryDeviceList();

      // Get the number of connected devices
      int devCount = devList->deviceCount();
      for(int i = 0; i < devCount; i++) {
          streamDevList.push_back(devList->getDevice(i));
      }

      if(streamDevList.empty()) {
          std::cerr << "Device list is empty. please check device connection state" << std::endl;
          return -1;
      }

      // traverse the device list and create the device
      std::vector<std::shared_ptr<ob::Device>> primary_devices;
      std::vector<std::shared_ptr<ob::Device>> secondary_devices;
      for(auto dev: streamDevList) {
          auto config = dev->getMultiDeviceSyncConfig();
          if(config.syncMode == OB_MULTI_DEVICE_SYNC_MODE_PRIMARY) {
              primary_devices.push_back(dev);
          }
          else {
              secondary_devices.push_back(dev);
          }
      }

       

      开启从设备

      std::cout << "Secondary devices start..." << std::endl;
      int deviceIndex = 0;  // Sencondary device display first
      for(auto itr = secondary_devices.begin(); itr != secondary_devices.end(); itr++) {
          auto depthHolder = createPipelineHolder(*itr, OB_SENSOR_DEPTH, deviceIndex);
          pipelineHolderList.push_back(depthHolder);
          startStream(depthHolder);

          auto colorHolder = createPipelineHolder(*itr, OB_SENSOR_COLOR, deviceIndex);
          pipelineHolderList.push_back(colorHolder);
          startStream(colorHolder);

          deviceIndex++;
      }

       

      开启主设备

      std::cout << "Primary device start..." << std::endl;
      deviceIndex = secondary_devices.size();  // Primary device display after primary devices.
      for(auto itr = primary_devices.begin(); itr != primary_devices.end(); itr++) {
          auto depthHolder = createPipelineHolder(*itr, OB_SENSOR_DEPTH, deviceIndex);
          startStream(depthHolder);
          pipelineHolderList.push_back(depthHolder);

          auto colorHolder = createPipelineHolder(*itr, OB_SENSOR_COLOR, deviceIndex);
          startStream(colorHolder);
          pipelineHolderList.push_back(colorHolder);

          deviceIndex++;
      }

       

      设置多设备同步间隔时间

      // Start the multi-device time synchronization function
      context.enableDeviceClockSync(3600000);  // update and sync every hour

       

      进行多设备测试

      testMultiDeviceSync();

       

      关闭数据流

      // close data stream
      for(auto itr = pipelineHolderList.begin(); itr != pipelineHolderList.end(); itr++) {
          stopStream(*itr);
      }


      友情链接: