REDHAWK——连接(三)

简介: REDHAWK——连接(三)

REDHAWK——连接(二)https://developer.aliyun.com/article/1474048

9、例子

这两个示例展示了两个 C++ 组件之间的高速数据交换以及通过沙盒进行的基本数据操作。

①、高速数据

在这个例子中,创建了两个 C++ 组件:一个源和一个接收。然后,我们将通过沙盒部署这些组件,并评估它们之间数据传输的统计数据。

  • 1)创建一个名为 source 的 C++ 组件,带有一个类型为 dataShort 的 uses 端口,名为 output。添加一个简单的属性,ID 为 xfer_length,类型为 ulong,默认值为 100000。生成组件代码。


  • 2)打开文件 source.h,并向 source_i 类添加以下成员:
std::vector<short> data;
bulkio::OutShortStream stream;
  • 3)打开 source.cpp 文件,并通过以下方式对其进行编辑:
  • 在 source_i 构造函数
data.resize(0);
• 1
  • 在 serviceFunction() 中注释掉 RH_DEBUG 语句并添加以下行:
if (data.size() != this->xfer_length) {
   data.resize(xfer_length);
}
if (!stream) {
   stream = output->createStream("sample");
}
BULKIO::PrecisionUTCTime tstamp = bulkio::time::utils::now();
stream.write(data,tstamp);
return NORMAL;
  • 4)编译 source 组件并将其安装到 Target SDR上。(拖动项目到Target SDR

  • 5)创建一个名为 sink 的 C++ 组件,其提供端口称为 dataShort 类型的输入。生成组件代码。

  • 6)打开该文件 sink.cpp 并通过以下方式对其进行编辑:
  • 在 serviceFunction() 中,注释掉该 RH_DEBUG 语句
  • 添加以下行:
bulkio::InShortStream stream = input->getCurrentStream();
if (!stream) {
   return NOOP;
}
bulkio::ShortDataBlock block = stream.read();
if (!block) {
   return NOOP;
}
return NORMAL;
  • 7)编译该 sink 组件并将其安装在 Target SDR 上。(拖动项目到Target SDR

    将 source 和 sink 组件成功将其安装在 Target SDR 上后可以看到 rh 下多了 sink 和 source 组件

  • 8)在命令行终端中启动 Python 会话并运行以下命令:
from ossie.utils import sb
source = sb.launch("source")
sink = sb.launch("sink")
source.connect(sink)
sb.start()
print source._ports[0]._get_statistics()[0].statistics

  • print 语句的输出是 Bulk Input/Output(BulkIO)中的 PortStatistics 结构体的一个实例。该结构体包含了从这个连接收集的统计信息。数据速率的衡量单位是每秒比特数
    要显示每秒千兆比特的数量,请运行以下命令:
print source._ports[0]._get_statistics()[0].statistics.bitsPerSecond/1e9

  • 得到的值是两个组件之间测量的数据传输速率。可以通过输入以下内容来查看当前的 xfer_length 属性:
source.xfer_length

  • 默认值是 100000。通过运行以下命令将属性更新为 200000:
source.xfer_length = 200000
  • 通过重复调用 _get_statistics() 来检查新的数据速率。结果显示的数据速率现在已经发生了变化。
目录
相关文章
|
2天前
|
IDE 测试技术 API
REDHAWK——连接(续)(三)
REDHAWK——连接(续)(三)
12 0
|
2天前
|
XML IDE C++
REDHAWK——连接(续)(一)
REDHAWK——连接(续)(一)
43 0
|
2天前
|
IDE Java 开发工具
REDHAWK——组件结构
REDHAWK——组件结构
47 0
|
2天前
|
XML 区块链 C++
REDHAWK——连接(一)
REDHAWK——连接(一)
55 0
|
2天前
|
存储 算法 中间件
REDHAWK——连接(二)
REDHAWK——连接(二)
35 1
|
2天前
|
C++
REDHAWK——连接(续)(二)
REDHAWK——连接(续)(二)
20 0
|
2天前
|
IDE 算法 中间件
初识REDHAWK
初识REDHAWK
42 2
|
2天前
|
XML IDE Java
REDHAWK——组件
REDHAWK——组件
29 0
|
9月前
CTK框架 - 通信 - 事件通信和信号槽通信
CTK框架中的事件监听,即观察者模式流程上是这样:接收者注册监听事件->发送者发送事件->接收者接收到事件并响应;相比调用插件接口,监听事件插件间依赖关系更弱,不用指定事件的接收方和发送方是谁。比如我们需要弹出一个界面,可以使用事件来弹出。
143 0
|
JSON JavaScript 小程序
【小程序】组件通信
【小程序】组件通信
173 0
【小程序】组件通信

热门文章

最新文章