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

RTI Connext 现代 C++ DDS API 关键增强解析

自推出 DDS 现代 C++ API 以来,客户反响热烈。许多已基于 C++11 构建新系统,我们持续优化 API,引入多项影响深远的增强。

增强的 IDL 到现代 C++ 映射

RTI 代码生成器新增 -stl 选项,配合 -language C++03 或 -language C++11 使用。此选项更新多个 IDL 类型映射:

例如给定以下 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; };

使用命令 rtiddsgen -language C++11 -stl -unboundedSupport MyType.idl,生成的 C++11 类如下:

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); ... };

现代 C++ 请求-应答 API

API 新增两个实体:rti::request::Requester 和 rti::request::Replier。提供原生请求-应答模式,其他语言已有,5.3 原型引入,5.3.0.7 生产就绪。

简洁代码示例见 此处。

小幅 API 增强

简化若干常见任务:

condition.handler([]() { // do something }); // 或用新签名 condition.handler([](dds::core::cond::Condition c) { // do something (condition == c) });

TopicQuery:按需历史数据

TopicQuery 5.3 引入,允许应用按需检索历史数据。现代 C++ API 中可从 DataReader 创建 TopicQuery:

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

随后可获取匹配过滤器的历史样本,同时正常接收实时数据。

展望未来

C++17 已定案、C++20 在即,RTI Connext 将持续以现代语言特性和性能改进演进 C++ API。保持关注或订阅 RTI 博客获取最新动态。

物联网技术

  1. 工业 5.0:重新定义制造业未来的人机协作新范式
  2. IoT驱动实体零售数字化复兴:挽救高街生存危机
  3. 第三代流处理:将物联网数据转化为实时行动
  4. 5G推进为何放缓:成本、频谱与覆盖的三重博弈
  5. 边缘计算释放实时数据价值:效率提升与新收入增长引擎
  6. G.hn:为工业物联网革命提供高性价比可靠连接
  7. 重塑智能制造迎接新常态:数据驱动韧性策略
  8. 数据:新石油——炼厂如何将原始信息转化为商业价值
  9. IT/OT混合型专业人才:连接数据中心与工业自动化的新物种
  10. 微软成立AI研究孵化器 聚焦通用人工智能
  11. 革新农业:物联网如何驱动现代农业效率与可持续性
  12. 掌握 C++ std::list:语法、函数与实战示例