工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Industrial Internet of Things >> モノのインターネットテクノロジー

最新のC ++ APIの新機能

DDS用の最新のC ++ APIを導入して以来、お客様から多くの関心が寄せられています。それらのいくつかは、C ++ 11で新しいシステムの開発を開始しました。また、APIは常に改善されており、ここで話したかった大小の新機能がいくつかあります。

C ++へのIDLマッピングを改善しました。 コードジェネレーターは、最新のC ++への新しい拡張マッピングを提供します。新しいオプション、 -stl -言語と組み合わせる C ++ 03 または-言語C ++ 11 有効にします。

このオプションは、次のIDLタイプのマッピングを変更します。

たとえば、次のIDLタイプがあるとします。

 struct MyType { 
sequence my_unbounded_seq;
sequence my_bounded_seq;
@use_vector sequence my_other_bounded_seq
文字列my_str;
@external long my_external;
};

これは、生成されたC ++ 11タイプが「-stl」でどのように見えるかです

(フルコマンド: rtiddsgen -language C ++ 11 -stl -unboundedSupport MyType.idl

 class MyType { 

公衆:
私のタイプ();
..。

MyType(MyType &&)=デフォルト;
MyType&operator =(MyType &&)=デフォルト;
MyType&operator =(const MyType&)=デフォルト;
MyType(const MyType&)=デフォルト;

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。 最新のC ++用の新しい要求/応答APIは、DDSAPIを次の2つのエンティティで拡張します。 rti ::request ::Requester および rti ::request ::Replier 。このAPIはすでに他の言語で利用可能でしたが、現在5.3ではプロトタイプとして最新のC ++で利用可能であり、5.3.0.7では本番環境に対応しています。

簡単なコード例はここで利用できます。

追加の小さな改善を行いました APIを使いやすくするため。たとえば、WaitSetで条件をディスパッチするためのハンドラーの使用方法を簡略化しました。以前は、ハンドラーは引数のないファンクターである必要がありました。これで、条件を引数として取ることができます。

 condition.handler([](){ 
//何かをする
});

//今はサポートもしています
condition.handler([](dds ::core ::cond ::Condition c){
//何かをする(条件==c)
});

また、新しい接続機能でAPIを最新の状態に保ちました 、5.3で導入したTopicQueryなど。トピッククエリは、アプリケーションが履歴データをオンデマンドで受信するためのスケーラブルなメカニズムを提供します。
最新のC ++ APIでは、次のようにDataReaderからTopicQueryインスタンスを作成できます。

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

これで、my_readerを使用して、フィルターを通過するすべての一致するDataWriterから履歴データサンプルを取得できます。いつものように「ライブ」データを読み続けることもできます。

C ++ 17が承認され、C ++ 20が間もなく登場する中、エキサイティングな機能を備えたC ++ APIの更新と最新化を続けています。最新のアップデートについては、しばらくお待ちいただくか、RTIブログに登録してください。


モノのインターネットテクノロジー

  1. IoTはハイストリートの新時代を告げる
  2. データのストリーミングは、IoT時代の新しい可能性を解き放ちます
  3. 5Gの展開を止めるにはどうすればよいですか?
  4. 変化の時:最先端の新時代
  5. G.hnは新しい産業機会への扉を開いています
  6. ニューノーマルのためのスマートマニュファクチャリングの再考
  7. データが新しい石油の場合、精製業者は誰ですか?
  8. 新しいIT種の出現:IT / OTハイブリッドプロフェッショナル
  9. オフィスは閉鎖されていますか?マイクロソフトが新しいAIリサーチインキュベーターを発表
  10. C++ の std::list と例
  11. IoTが現代の農業にどのように役立つか