亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Industrial Internet of Things >> 物联网技术

现代 C++ API 的新增功能

自从我们为 DDS 引入现代 C++ API 以来,我们已经看到了很多客户的兴趣。他们中的一些人已经开始用 C++11 开发全新的系统。我们也一直在不断改进 API,我想在这里谈谈一些大大小小的新功能。

改进了 IDL 到 C++ 的映射。 代码生成器提供了一种新的、增强的现代 C++ 映射。一个新选项,-stl , 结合 -language C++03-语言 C++11 启用它。

此选项更改以下 IDL 类型的映射:

例如,给定以下 IDL 类型:

struct MyType { 
序列 my_unbounded_seq;
序列 my_bounded_seq;
@use_vector 序列 my_other_bounded_seq
字符串 my_str;
@external long my_external;
};

这就是使用“-stl”生成的 C++11 类型的样子

(完整命令:rtiddsgen -language C++11 -stl -unboundedSupport MyType.idl )

class MyType { 

上市:
我的风格();
...

MyType (MyType&&) =默认值;
MyType&operator=(MyType&&) =default;
MyType&operator=(const MyType&) =default;
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 使用两个实体扩展了 DDS API:rti::request::Requester rti::request::Replier .这个 API 已经在其他语言中可用,现在在现代 C++ 中作为 5.3 的原型和 5.3.0.7 的生产就绪可用。

此处提供了一个简单的代码示例。

我们进行了额外的小改进 使 API 更易于使用。例如,我们简化了如何使用处理程序在 WaitSet 中分派条件。以前,处理程序必须是无参数函子。现在他们可以将 Condition 作为参数。

condition.handler([]() { 
// 做一点事
});

// 现在我们也支持
条件处理程序([](dds::core::cond::Condition c){
// 做某事(条件 ==c)
});

我们还通过新的连接功能使 API 保持最新状态 ,比如我们在 5.3 中介绍的 TopicQuery。主题查询为应用程序提供了一种按需接收历史数据的可扩展机制。
在现代 C++ API 中,您可以从 DataReader 创建一个 TopicQuery 实例,如下所示:

rti::sub::TopicQuery my_topic_query( 
我的读者,
rti::sub::TopicQuerySelection(dds::topic::Filter("x <10")));

现在您可以使用 my_reader 从所有通过过滤器的匹配 DataWriter 中获取历史数据样本。您还可以像往常一样继续阅读“实时”数据。

随着 C++17 刚刚获得批准,C++20 即将到来,我们将继续使用令人兴奋的功能更新和现代化我们的 C++ API。请继续关注或订阅 RTI 博客以获取所有最新更新!


物联网技术

  1. 物联网预示着商业街的新时代
  2. 流数据开启物联网时代的新可能性
  3. 什么会阻止 5G 的推出?
  4. 是时候改变了:边缘的新时代
  5. G.hn 正在为新的工业机会打开大门
  6. 为新常态重新思考智能制造
  7. 如果数据是新石油,谁是你的炼油厂?
  8. IT 新物种的出现:IT/OT 混合专业
  9. 办公室关门了吗?微软宣布新的人工智能研究孵化器
  10. C++ 中的 std::list 示例
  11. 物联网如何有益于现代农业
  12. 工业 5.0:新革命