REDHAWK——组件

简介: REDHAWK——组件

前言

组件是模块化构建块,可以插入任意数量的信号处理应用程序中以执行特定且可重用的功能。组件完全由其接口、属性和功能定义。示例包括调谐、滤波和抽取宽带信号的组件以及执行 FM 解调的组件。某些组件不可避免地需要自定义实现,但大多数信号处理功能可以重用和共享。

组件可以在波形内互连在一起以创建完整的信号处理应用程序,也可以在 REDHAWK sandbox 中独立运行以在本地主机上执行琐碎的任务。下图描绘了波形中各分量的组成。

通过使用 REDHAWK 框架,基本处理元素可以封装为组件并由其他 REDHAWK 兼容系统重用。使用 REDHAWK IDE 和附带的代码生成器,可以自动生成许多用于控制和输入/输出的代码。下图描述了将任意处理算法封装到自动生成的 REDHAWK 组件包装器中。


一、REDHAWK 核心资产

REDHAWK 打包了由入门/示例组件、设备、波形和共享库组成的核心资产。

1、REDHAWK 基本组件

REDHAWK 基本组件是入门/示例 REDHAWK 组件的集合。这些组件提供简单的 DSP 功能,同时演示 REDHAWK 的许多功能和用例。

下表包含 REDHAWK 基本组件的名称和描述。

2、REDHAWK 基本设备

REDHAWK 基本设备是入门/示例 REDHAWK 设备的集合。下表包含 REDHAWK 基本设备的名称和描述。

3、REDHAWK 基本波形

REDHAWK 基本波形是入门/示例 REDHAWK 波形的集合。下表包含 REDHAWK 基本波形的名称和描述。

4、REDHAWK 共享库

REDHAWK 共享库是入门/示例共享库的集合。

下表包含通用 REDHAWK 共享库的名称和描述。

5、REDHAWK 设备依赖性

下表描述了 REDHAWK 设备使用的外部共享库。这些库是用 REDHAWK 打包和分发的,但不由 REDHAWK 管理。

二、创建组件项目

下面概述了组件的结构。

1、组件向导

在 REDHAWK IDE 中,REDHAWK 环境中新组件、设备或其他工件的开发包含在 Eclipse 项目中。每个特定于 REDHAWK 的工件都与一个向导相关联,该向导引导开发人员完成创建项目所需的步骤,该项目支持正常运行所需的最少部分。对于组件,默认项目设置允许开发人员选择 Python、C++ 和 Java 作为开发语言。要启动 IDE 并开始创建组件,请运行 eclipseIDE 安装目录中的二进制文件。然后,选择“文件”>“新建”>“REDHAWK 组件项目”。

2、组件描述符

REDHAWK 组件通过三个 XML 文件进行描述:软件包描述符 (SPD) 文件 ( .spd.xml)、属性文件 (PRF) 文件 ( .prf.xml) 和软件组件描述符 (SCD) 文件 ( .scd.xml)。SPD 的作用是描述与组件关联的所有文件:PRF 和 SCD 文件、所有二进制文件以及关联的数据文件。PRF 文件包含该组件支持的所有属性的描述。SCD 文件包含组件输入/输出的描述。

REDHAWK IDE 使用内部模型来维护组件设计的状态。该模型是上述三个 XML 文件以及项目特定信息(如开发语言)的 Java 表示。组件开发透视图的主屏幕包含多个选项卡。其中一些选项卡用于面板,一些选项卡用于 XML 文件。可用于组件设计的不同面板用于更改此模型;该模型会自动连续映射到三个 XML 文件。这种意识是对称的;就像面板中的更改会导致 XML 文件中的更改一样,XML 文件中的更改也会导致面板的自动更新。

3、端口

数据流入和流出组件是通过使用端口来完成的。端口被描述为提供(输入)或使用(输出)端口。这种命名约定通常被认为是违反直觉的,因此需要进行解释。端口是组件的 RPC 接口。因此,输入端口提供可由输出端口使用的功能。

REDHAWK 包含各种促进互操作性的标准化接口。这些接口是通过端口来实现的。当在 REDHAWK IDE 的组件生成向导中选择端口时,会自动生成实现这些接口的代码。

4、属性

属性提供了一种调整组件配置或设置的方法,同时还允许外部实体(例如程序、UI 或状态脚本)检查组件的状态。属性是组件配置的主要手段。

有四种类型的属性:simple、simple sequence、struct 和 struct sequence。属性 simple 具有特定基元类型的单个值(例如,short 或 float)。一个 simple sequence 是相同原始类型的值的数组。一个 struct 属性是包含一组命名和/或属性 struct 的结构。一个 struct sequence 是一组相同 struct 类型实例的数组。

属性还有一种表示使用该属性的角色的类型。种类可以是 property、allocation、 或 message。该 property 类型用于配置和状态。该 allocation 类型用于表达对设备提供的能力的要求。该 message 类型仅与属性一起使用 struct 以在 REDHAWK 内发送事件消息。

5、记录

组件,无论使用哪种语言来实现,都包含对记录器的访问。C++、Python 和 Java 中的日志记录使用log4j由 Apache Software Foundation 维护的强大日志框架。

6、为组件生成代码

创建组件项目并在 SPD 编辑器中输入组件的适当详细信息后,IDE 可以为该项目生成框架代码。要开始代码生成过程,请单击 SPD 编辑器概述面板右上角的 “生成所有实现”按钮。

三、创建并运行 Hello World 组件

1、创建一个新的 REDHAWK component Project,将其起名为 HelloWorld,并点击 Generate All Component Implementations

2、在该 HelloWorld.cpp 文件中,将以下包含添加到文件的开头:

#include <iostream>

3、在该 HelloWorld.cpp 文件中,将以下代码添加到方法中 serviceFunction():

std::cout<<"Hello world"<<std::endl;

4、编译项目

Project -> Build Project

5、打开一个终端,启动 Python 会话,并执行下面的命令:

from ossie.utils import sb
hello_world = sb.launch("HelloWorld")
sb.start()

可以看到,Python 会话一直在打印 “Hello World”,按 ctrl+D 退出

目录
相关文章
|
4月前
|
传感器 人工智能 安全
法思诺创新洞察:TRIZ方法如何助力企业卡脖子实现关键技术自主可控?实战案例解析!
法思诺创新学院运用TRIZ系统化创新方法,助力企业破解“卡脖子”技术难题,如高精度传感器温漂与工业泵振动等,实现关键技术自主可控,提升产品竞争力与市场突破能力。
260 0
|
4月前
|
JSON 自然语言处理 API
gRPC凭什么成为微服务通信首选?深度解析RPC进化史
本文深入解析了分布式系统中服务通信的核心机制,重点介绍了 RPC 与 gRPC 的原理、优势及使用场景,并详解 gRPC 所依赖的序列化协议 Protocol Buffers(Protobuf)。内容涵盖 RPC 概念、gRPC 特性、Protobuf 语法及服务定义,适合微服务架构设计与维护人员阅读,助你构建高性能、低耦合的服务通信体系。
576 73
gRPC凭什么成为微服务通信首选?深度解析RPC进化史
|
5月前
|
数据采集 机器学习/深度学习 自然语言处理
智能风险管理的技术架构:2025从数据采集到自主决策的全链路解析
本文系统梳理了项目风险管理的技术演进历程,从文档驱动到智能化阶段,深入解析各时期关键技术与工具架构,并结合实践案例提出前瞻性实施策略,助力项目管理专业人士构建智能风险管理体系。
338 2
|
数据采集 数据安全/隐私保护 开发者
非阻塞 I/O:异步编程提升 Python 应用速度
非阻塞 I/O:异步编程提升 Python 应用速度
EMQ
|
缓存 数据可视化 物联网
在 Windows 上搭建 MQTT 消息服务器
本文将以NanoMQ为例,演示如何通过安装包和源代码编译两种安装方式,在Windows系统中快速搭建一个可以支持多协议连接的物联网MQTT消息服务器。
EMQ
907 0
|
8月前
|
人工智能 编解码 异构计算
Neo-1:全球首个原子级生成式AI模型!这个AI模型把10年药物研发周期压缩到1个月
VantAI推出的Neo-1是全球首个统一分子生成与原子级结构预测的AI模型,采用潜在空间扩散技术,结合大规模训练和定制数据集,显著提升药物研发效率。
423 15
Neo-1:全球首个原子级生成式AI模型!这个AI模型把10年药物研发周期压缩到1个月
|
API Python
使用Python requests库下载文件并设置超时重试机制
使用Python的 `requests`库下载文件时,设置超时参数和实现超时重试机制是确保下载稳定性的有效方法。通过这种方式,可以在面对网络波动或服务器响应延迟的情况下,提高下载任务的成功率。
769 1
|
安全 NoSQL 关系型数据库
内网扫描器Fscan
内网扫描器Fscan
|
存储 缓存 Shell
Transformers 4.37 中文文档(一)(3)
Transformers 4.37 中文文档(一)
1465 1
Transformers 4.37 中文文档(一)(3)
|
机器学习/深度学习 数据采集 数据可视化
NumPy 正态分布与 Seaborn 可视化指南
正态分布(高斯分布)是重要的概率分布,常用于描述自然和人为现象的数据。分布呈钟形,峰值在均值(μ)处,两侧对称下降。特征由均值和标准差(σ)描述,标准差影响分布的分散程度。NumPy 的 `random.normal()` 函数可生成正态分布随机数,Seaborn 库则方便绘制分布图。正态分布广泛应用于统计学、机器学习、金融和工程等领域。练习包括生成正态分布随机数并作图,以及比较不同标准差下的分布形状。
307 3