Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Industrial Internet of Things >> Tecnología de Internet de las cosas

Mejoras clave en la API Moderna C++ de DDS de RTI Connext

Mejoras clave en la API Moderna C++ de DDS de RTI Connext

Desde que introdujimos la API moderna de C++ para DDS, hemos visto un interés significativo de nuestros clientes. Muchos han comenzado a construir nuevos sistemas usando C++11, y hemos continuado refinando la API con una serie de mejoras impactantes.

Mapeo IDL mejorado a C++ Moderno

El Generador de Código de RTI ahora ofrece una nueva opción -stl, usada junto con -language C++03 o -language C++11. Esta opción actualiza el mapeo de varios tipos IDL:

Por ejemplo, dado el siguiente tipo IDL:

struct MyType { sequence<long> my_unbounded_seq; sequence<long, 10> my_bounded_seq; @use_vector sequence<long, 10> my_other_bounded_seq string my_str; @external long my_external; };

Usando el comando rtiddsgen -language C++11 -stl -unboundedSupport MyType.idl, la clase C++11 generada se ve así:

class MyType { public: MyType(); ... MyType (MyType&&) = default; MyType& operator=(MyType&&) = default; MyType& operator=(const MyType&) = default; MyType(const MyType&) = default; std::vector<int32_t>& my_unbounded_seq() noexcept; const std::vector<int32_t>& my_unbounded_seq() const noexcept; void my_unbounded_seq(const std::vector<int32_t>& value); rti::core::bounded_sequence<int32_t, 10>& my_bounded_seq() noexcept; const rti::core::bounded_sequence<int32_t, 10>& my_bounded_seq() const noexcept; void my_bounded_seq(const rti::core::bounded_sequence<int32_t, 10>& value); std::vector<int32_t>& my_other_bounded_seq() noexcept; const std::vector<int32_t>& my_other_bounded_seq() const noexcept; void my_other_bounded_seq(const std::vector<int32_t>& value); std::string& my_str() noexcept; const std::string& my_str() const noexcept; void my_str(const std::string& value); dds::core::external<int32_t>& my_external() noexcept; const dds::core::external<int32_t>& my_external() const noexcept; void my_external(dds::core::external<int32_t> value); ... };

API Request-Reply para C++ Moderno

La API ahora incluye dos nuevas entidades: rti::request::Requester y rti::request::Replier. Estas proporcionan un patrón nativo request-reply, que ya está disponible en otros lenguajes y se introdujo en un prototipo en la versión 5.3 y está listo para producción en 5.3.0.7.

Un ejemplo de código conciso está disponible aquí.

Pequeñas mejoras en la API

Hemos simplificado varias tareas comunes:

condition.handler([]() { // do something }); // o, con la nueva firma condition.handler([](dds::core::cond::Condition c) { // do something (condition == c) });

TopicQuery para datos históricos bajo demanda

TopicQuery, introducido en 5.3, permite a las aplicaciones recuperar datos históricos bajo demanda. En la API moderna de C++ puede crear un TopicQuery desde un DataReader así:

rti::sub::TopicQuery my_topic_query( my_reader, rti::sub::TopicQuerySelection(dds::topic::Filter("x < 10")) );

Luego puede tomar muestras históricas que coincidan con el filtro mientras sigue recibiendo datos en vivo normalmente.

Mirando al futuro

Con C++17 ya aprobado y C++20 en el horizonte, RTI Connext continuará evolucionando la API de C++ con características modernas del lenguaje y mejoras de rendimiento. Manténgase atento o suscríbase al Blog de RTI para las últimas actualizaciones.

Tecnología de Internet de las cosas

  1. IoT: impulsando el renacimiento digital de la calle principal
  2. Procesamiento de flujos de tercera generación: Convirtiendo datos IoT en acción en tiempo real
  3. Por qué el despliegue de 5G se ralentiza: Costes, espectro y desafíos de cobertura
  4. Computación en el borde: Desbloqueando datos en tiempo real, impulsando eficiencia y generando nuevos ingresos
  5. G.hn: Impulsando la revolución IoT industrial para conectividad fiable y rentable
  6. Repensando la manufactura inteligente para la nueva normalidad: Estrategias basadas en datos para la resiliencia
  7. Datos: El Nuevo Petróleo — Cómo Refinerías Convierten Información Cruda en Valor de Negocio
  8. El Profesional Híbrido IT/OT: Puentes entre Centros de Datos y Automatización Industrial
  9. Microsoft Lanza Incubadora de Investigación IA Enfocada en Inteligencia de Propósito General
  10. Revolucionando la agricultura: cómo IoT impulsa eficiencia y sostenibilidad en la agricultura moderna
  11. Dominar std::list en C++: Sintaxis, Funciones y Ejemplos Prácticos