【问题标题】:How to set QOS in CycloneDDS C++?如何在 CycloneDDS C++ 中设置 QOS?
【发布时间】:2021-07-05 02:11:02
【问题描述】:

我正在使用CycloneDDSC++ version

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

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

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 &'       

【问题讨论】:

    标签: c++ visual-studio data-distribution-service qos


    【解决方案1】:

    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, topicMyData, dwqos, NULL, ::dds::core::status::StatusMask::none());
    

    【讨论】:

      猜你喜欢
      • 2021-12-01
      • 2020-09-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-07
      • 1970-01-01
      • 2012-10-24
      相关资源
      最近更新 更多