Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Industrial Internet of Things >> Technologie de l'Internet des objets

Quoi de neuf dans l'API C++ moderne

Depuis que nous avons introduit l'API C++ moderne pour DDS, nous avons constaté beaucoup d'intérêt de la part de nos clients. Plusieurs d'entre eux ont commencé à développer de tout nouveaux systèmes en C++11. Nous avons également constamment amélioré l'API et il y a quelques nouvelles fonctionnalités, grandes et petites, dont je voulais parler ici.

Mappage IDL vers C++ amélioré. Le générateur de code fournit un nouveau mappage amélioré vers le C++ moderne. Une nouvelle option, -stl , combiné avec -langue C++03 ou -langage C++11 l'active.

Cette option modifie le mappage des types IDL suivants :

Par exemple, étant donné le type IDL suivant :

struct MyType { 
séquence my_unbounded_seq ;
séquence my_bounded_seq ;
@use_vector sequence my_other_bounded_seq
chaîne my_str;
@external long my_external ;
} ;

Voici à quoi ressemble le type C++11 généré avec "-stl"

(Commande complète :rtiddsgen -language C++11 -stl -unboundedSupport MyType.idl )

classe MyType {

Publique:
Mon type();
...

MonType (MonType&&) =par défaut ;
MonType&opérateur=(MonType&&) =par défaut ;
MyType&operator=(const MyType&) =default;
MonType(const MonType&) =par défaut ;

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

rti::core::bounded_sequence&my_bounded_seq() noexcept ;
const rti::core::bounded_sequence&my_bounded_seq() const noexcept;
void my_bounded_seq(const rti::core::bounded_sequence&value);

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::external value);

...
} ;

API de demande-réponse. La nouvelle API de requête-réponse pour le C++ moderne étend l'API DDS avec deux entités :rti::request::Requester et rti::request::Replier . Cette API était déjà disponible dans d'autres langages et est désormais disponible en C++ moderne en tant que prototype dans la 5.3 et prête pour la production dans la 5.3.0.7.

Un exemple de code simple est disponible ici.

Nous avons apporté des petites améliorations supplémentaires pour rendre l'API plus facile à utiliser. Par exemple, nous avons simplifié l'utilisation des gestionnaires pour la répartition des conditions dans un WaitSet. Auparavant, les gestionnaires devaient être des foncteurs sans argument. Maintenant, ils peuvent prendre la condition comme argument.

condition.handler([]() { 
// faire quelque chose
});

// maintenant nous soutenons également
condition.handler([](dds::core::cond::Condition c) {
// faire quelque chose (condition ==c)
});

Nous avons également maintenu l'API à jour avec de nouvelles fonctionnalités de connectivité , comme TopicQuery, que nous avons introduit dans 5.3. Les requêtes de rubrique fournissent un mécanisme évolutif permettant aux applications de recevoir des données historiques à la demande.
Dans l'API C++ moderne, vous pouvez créer une instance TopicQuery à partir d'un DataReader comme suit :

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

Vous pouvez maintenant utiliser my_reader pour prendre les échantillons de données historiques de tous les DataWriters correspondants qui passent le filtre. Vous pouvez également continuer à lire les données « en direct » comme d'habitude.

Avec C++17 qui vient d'être approuvé et C++20 au coin de la rue, nous continuons à mettre à jour et à moderniser notre API C++ avec des fonctionnalités intéressantes. Restez à l'écoute ou abonnez-vous simplement au blog RTI pour toutes les dernières mises à jour !


Technologie de l'Internet des objets

  1. L'IoT annonce une nouvelle ère pour le grand public
  2. Le streaming de données ouvre de nouvelles possibilités à l'ère de l'IoT
  3. Qu'est-ce qui va arrêter le déploiement de la 5G ?
  4. Il est temps de changer :une nouvelle ère à la limite
  5. G.hn ouvre la porte à de nouvelles opportunités industrielles
  6. Repenser la fabrication intelligente pour la nouvelle norme
  7. Si les données sont le nouveau pétrole, qui est votre raffineur ?
  8. L'émergence d'une nouvelle espèce informatique :le professionnel hybride IT/OT
  9. Le bureau est-il fermé ? Microsoft annonce un nouvel incubateur de recherche sur l'IA