# TimeBasedFilterQoS
# 功能介绍
该 QoS 功能仅作用于读者(DataReader),该 QoS 需设置时间变量:minimum_separation。该设置指定在特定时间周期(minimum_separation)内,无论 DataWriter 发布的新数据速度如何,DataReader 获取数据的次数不会超过一次。
# 兼容性
无兼容性要求。
# 使用方法
TimeBasedFilterQoS 成员列表如下表。
类型 | 字段名 | 描述 |
---|---|---|
Duration_t | minimum_separation | 用于保存读者读取数据的周期时间。 |
# DataWrietr 端
无需设置。
# DataReader 端
1) QoS 赋值
对 minimum_separation 的 sec 赋秒数,对 minimum_separation 的 nanosec 赋纳秒数;赋值给 QoS 后,将 QoS 作为参数传入 create_datareader()。
创建上述回调函数指针,将该指针作为参数传入 create_datareader()。如下图所示。
# 效果展示
1) 适用场景
①.DataReader 通过低带宽连接连接到网络,该连接生成的流量无法保持与 DataWriter 的匹配。
②. DataWriter 生成 DDS 样本的速率比 DataReader 处理它们的速率快。或比 DataReader 所需的更快。
③. DataReader 的资源限制导致从 DataWriter 接受的大量数据包没有时间处理。
2) 使用例子
读者现在因带宽,资源限制等各种原因,只想每隔 3 秒接受一次数据。那么读者就可以通过设置 TimeBasedFilterQoS,控制接受数据的周期、频率。
我们可以将写者的数据发送间隔设置为 1 秒(1000ms),然后将 DataReader 的 minimum_separation 的 sec 设置为 3,nanosec 设置为 0,并运行,结果如下图所示。
← PartionQoS HistoryQoS →