예제 #1
0
int main() {
  krpc::Client conn = krpc::connect();
  krpc::services::KRPC krpc(&conn);
  krpc::schema::Status status = krpc.get_status();
  std::cout << "Data in = " << (status.bytes_read_rate()/1024.0) << " KB/s" << std::endl;
  std::cout << "Data out = " << (status.bytes_written_rate()/1024.0) << " KB/s" << std::endl;
}
예제 #2
0
파일: Streaming.cpp 프로젝트: krpc/krpc
int main() {
  krpc::Client conn = krpc::connect();
  krpc::services::KRPC krpc(&conn);
  SpaceCenter sc(&conn);
  SpaceCenter::Vessel vessel = sc.active_vessel();
  SpaceCenter::ReferenceFrame ref_frame = vessel.orbit().body().reference_frame();
  while (true) {
    std::tuple<double, double, double> pos = vessel.position(ref_frame);
    std::cout << std::get<0>(pos) << ","
              << std::get<1>(pos) << ","
              << std::get<2>(pos) << std::endl;
  }
}
예제 #3
0
int main() {
  krpc::Client conn = krpc::connect("Sub-orbital flight");
  krpc::services::KRPC krpc(&conn);
  krpc::services::SpaceCenter space_center(&conn);

  auto vessel = space_center.active_vessel();

  vessel.auto_pilot().target_pitch_and_heading(90, 90);
  vessel.auto_pilot().engage();
  vessel.control().set_throttle(1);
  std::this_thread::sleep_for(std::chrono::seconds(1));

  std::cout << "Launch!" << std::endl;
  vessel.control().activate_next_stage();

  typedef krpc::services::KRPC::Expression Expr;

  {
    auto solid_fuel = vessel.resources().amount_call("SolidFuel");
    auto expr = Expr::less_than(
      conn, Expr::call(conn, solid_fuel), Expr::constant_float(conn, 0.1));
    auto event = krpc.add_event(expr);
    event.acquire();
    event.wait();
    event.release();
  }

  std::cout << "Booster separation" << std::endl;
  vessel.control().activate_next_stage();

  {
    auto mean_altitude = vessel.flight().mean_altitude_call();
    auto expr = Expr::greater_than(
      conn, Expr::call(conn, mean_altitude), Expr::constant_double(conn, 10000));
    auto event = krpc.add_event(expr);
    event.acquire();
    event.wait();
    event.release();
  }

  std::cout << "Gravity turn" << std::endl;
  vessel.auto_pilot().target_pitch_and_heading(60, 90);

  {
    auto apoapsis_altitude = vessel.orbit().apoapsis_altitude_call();
    auto expr = Expr::greater_than(
      conn, Expr::call(conn, apoapsis_altitude), Expr::constant_double(conn, 100000));
    auto event = krpc.add_event(expr);
    event.acquire();
    event.wait();
    event.release();
  }

  std::cout << "Launch stage separation" << std::endl;
  vessel.control().set_throttle(0);
  std::this_thread::sleep_for(std::chrono::seconds(1));
  vessel.control().activate_next_stage();
  vessel.auto_pilot().disengage();

  {
    auto srf_altitude = vessel.flight().surface_altitude_call();
    auto expr = Expr::less_than(
      conn, Expr::call(conn, srf_altitude), Expr::constant_double(conn, 1000));
    auto event = krpc.add_event(expr);
    event.acquire();
    event.wait();
    event.release();
  }

  vessel.control().activate_next_stage();

  while (vessel.flight(vessel.orbit().body().reference_frame()).vertical_speed() < -0.1) {
    std::cout << "Altitude = " << vessel.flight().surface_altitude() << " meters" << std::endl;
    std::this_thread::sleep_for(std::chrono::seconds(1));
  }
  std::cout << "Landed!" << std::endl;
}
예제 #4
0
파일: Basic.cpp 프로젝트: Kerbal007/krpc
int main() {
  krpc::Client conn = krpc::connect();
  krpc::services::KRPC krpc(&conn);
  std::cout << "Connected to kRPC server version " << krpc.get_status().version() << std::endl;
}