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

Novedades de la API de C ++ moderna

Desde que presentamos la API C ++ moderna para DDS, hemos visto mucho interés por parte de nuestros clientes. Varios de ellos han comenzado a desarrollar nuevos sistemas en C ++ 11. También hemos mejorado constantemente la API y hay algunas funciones nuevas, grandes y pequeñas, de las que quería hablar aquí.

Asignación IDL mejorada a C ++. El generador de código proporciona un mapeo nuevo y mejorado para C ++ moderno. Una nueva opción, -stl , combinado con -language C ++ 03 o -lenguaje C ++ 11 lo habilita.

Esta opción cambia la asignación de los siguientes tipos de IDL:

Por ejemplo, dado el siguiente tipo de IDL:

 struct MyType { 
secuencia my_unbounded_seq;
secuencia my_bounded_seq;
@use_vector sequence my_other_bounded_seq
string my_str;
@external long my_external;
};

Así es como se ve el tipo de C ++ 11 generado con "-stl"

(Comando completo: rtiddsgen -language C ++ 11 -stl -unboundedSupport MyType.idl )

 clase MyType { 

público:
Mi tipo();
...

MyType (MyType &&) =predeterminado;
MyType &operator =(MyType &&) =predeterminado;
MyType &operator =(const MyType &) =predeterminado;
MyType (const MyType &) =predeterminado;

std ::vector &my_unbounded_seq () noexcept;
const std ::vector &my_unbounded_seq () const noexcept;
void my_unbounded_seq (const std ::vector &valor);

rti ::core ::secuencia_delimitada &my_seq_delimitado () noexcept;
const rti ::core ::secuencia_delimitada &my_seq_delimitado () const noexcept;
void my_bounded_seq (const rti ::core ::bounded_sequence &valor);

std ::vector &my_other_bounded_seq () noexcept;
const std ::vector &my_other_bounded_seq () const noexcept;
void my_other_bounded_seq (const std ::vector &value);

std ::string &my_str () noexcept;
const std ::string &my_str () const noexcept;
void my_str (const std ::string &value);

dds ::core ::external &my_external () noexcept;
const dds ::core ::external &my_external () const noexcept;
void my_external (dds ::core ::valor externo );

...
};

API de solicitud-respuesta. La nueva API de solicitud-respuesta para C ++ moderno extiende la API de DDS con dos entidades: rti ::request ::Requester y rti ::request ::Replier . Esta API ya estaba disponible en otros lenguajes y ahora está disponible en C ++ moderno como prototipo en 5.3 y lista para producción en 5.3.0.7.

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

Hemos realizado pequeñas mejoras adicionales para facilitar el uso de la API. Por ejemplo, simplificamos cómo usar controladores para enviar condiciones en un WaitSet. Anteriormente, los manejadores tenían que ser functores sin argumentos. Ahora pueden tomar la condición como argumento.

 condition.handler ([] () { 
// hacer algo
});

// ahora también apoyamos
condition.handler ([] (dds ::core ::cond ::Condición c) {
// haz algo (condición ==c)
});

También hemos mantenido la API actualizada con nuevas funciones de conectividad , como TopicQuery, que presentamos en 5.3. Las consultas de temas proporcionan un mecanismo escalable para que las aplicaciones reciban datos históricos a pedido.
En la API de C ++ moderna, puede crear una instancia de TopicQuery desde un DataReader de la siguiente manera:

 rti ::sub ::TopicQuery my_topic_query ( 
mi_lector,
rti ::sub ::TopicQuerySelection (dds ::tema ::Filtro ("x <10")));

Ahora puede usar my_reader para tomar las muestras de datos históricos de todos los DataWriters coincidentes que pasan el filtro. También puede seguir leyendo datos "en vivo" como de costumbre.

Con C ++ 17 recién aprobado y C ++ 20 a la vuelta de la esquina, continuamos actualizando y modernizando nuestra API de C ++ con características interesantes. ¡Esté atento o simplemente suscríbase al Blog de RTI para conocer las últimas actualizaciones!


Tecnología de Internet de las cosas

  1. IoT anuncia una nueva era para la calle principal
  2. La transmisión de datos abre nuevas posibilidades en la era de IoT
  3. ¿Qué va a detener el lanzamiento de 5G?
  4. Es hora de cambiar:una nueva era en el límite
  5. G.hn abre la puerta a nuevas oportunidades industriales
  6. Repensando la fabricación inteligente para la nueva normalidad
  7. Si los datos son el aceite nuevo, ¿quién es su refinador?
  8. El surgimiento de una nueva especie de TI:el profesional híbrido de TI / OT
  9. ¿Está cerrada la oficina? Microsoft anuncia una nueva incubadora de investigación de IA
  10. std::list en C++ con ejemplo
  11. Cómo IoT es beneficioso para la industria agrícola moderna