微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在 CycloneDDS C++ 中设置 QOS?

如何解决如何在 CycloneDDS C++ 中设置 QOS?

我正在使用 CycloneDDS C++ version

尝试将以下 QOS 设置为写入器 DDS_HISTORY_KEEP_ALL、DDS_DURABILITY_TRANSIENT_LOCAL、DDS_RELIABILITY_RELIABLE

我正在尝试将 Qos 设置为数据编写器,在 dds 发布者中

dds::domain::DomainParticipant local_participant(domain::default_id());
dds::pub::Publisher local_publisher(local_participant);
dds::topic::Topic<DDSData::myData> topicMyData(local_participant,"DDS");

dds::pub::qos::DataWriterQos  QosW( dds_history_kind(DDS_HISTORY_KEEP_ALL),dds_durability_kind(DDS_DURABILITY_TRANSIENT_LOCAL),dds_reliability_kind(DDS_RELIABILITY_RELIABLE));

m_ReplyDataWriter = std::make_shared < dds::pub::DataWriter<DDSData::myData>>(local_publisher,topicMyData,QosW,NULL,::dds::core::status::StatusMask::none());

具有 Qos 的 DataWriter 构造函数

DataWriter(const dds::pub::Publisher& pub,const ::dds::topic::Topic<T>& topic,const dds::pub::qos::DataWriterQos& qos,dds::pub::DataWriterListener<T>* listener = NULL,const dds::core::status::StatusMask& mask = ::dds::core::status::StatusMask::none());

在这里想念的东西不起作用?

Error   C2664'dds::pub::DataWriter<DDSData::myData,dds::pub::detail::DataWriter>::DataWriter(const dds::pub::DataWriter<DDSData::myData,dds::pub::detail::DataWriter> &)': cannot convert argument 3 from '_Ty' to 'const dds::pub::qos::DataWriterQos &'       

解决方法

Check this out

错误是因为 QoS 设置不正确,您可以尝试以下代码,

使用您自己的 QoS 创建 DataWriter

dds::domain::DomainParticipant local_participant(domain::default_id());
dds::pub::Publisher local_publisher(local_participant);
dds::topic::Topic<DDSData::myData> topicMyData(local_participant,"DDS");       

dds::pub::qos::DataWriterQos dwqos = topicMyData.qos();

dwqos << dds_history_kind(DDS_HISTORY_KEEP_ALL) 
      << dds_durability_kind(DDS_DURABILITY_TRANSIENT_LOCAL) 
      << dds_reliability_kind(DDS_RELIABILITY_RELIABLE);

dds::pub::DataWriter<Foo::Type> writer2(local_publisher,topicMyData,dwqos);

//m_ReplyDataWriter = std::make_shared < dds::pub::DataWriter<DDSData::myData>>(local_publisher,dwqos,NULL,::dds::core::status::StatusMask::none());

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。