REDHAWK——组件

文章目录

  • 前言
  • 一、REDHAWK 核心资产
    • 1、REDHAWK 基本组件
    • 2、REDHAWK 基本设备
    • 3、REDHAWK 基本波形
    • 4、REDHAWK 共享库
    • 5、REDHAWK 设备依赖性
  • 二、创建组件项目
    • 1、组件向导
    • 2、组件描述符
    • 3、端口
    • 4、属性
    • 5、记录
    • 6、为组件生成代码
  • 三、创建并运行 Hello World 组件


前言

组件模块化构建块,可以插入任意数量的信号处理应用程序中以执行特定且可重用的功能。组件完全由其接口、属性和功能定义。示例包括调谐、滤波和抽取宽带信号的组件以及执行 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 退出


我的qq:2442391036,欢迎交流!


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/744879.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode hot100-10

560. 和为 K 的子数组 给你一个整数数组 nums 和一个整数 k &#xff0c;请你统计并返回 该数组中和为 k 的子数组的个数 。子数组是数组中元素的连续非空序列。我的解法&#xff0c;就是很简单的那种两层循环&#xff0c;没啥好说的。这题是不会超时&#xff0c;能通过。 cla…

【DAY09 软考中级备考笔记】机组:信息加密,系统可靠性

机组&#xff1a;信息加密&#xff0c;系统可靠性 3月8日 – 天气&#xff1a;晴 1. 信息加密 信息加密分为了对称加密和非对称加密&#xff1a; 对称加密&#xff1a;加密和解密的密钥相同且不公开 优点是加密速度快缺点是加密的强度不高&#xff0c;密钥分发困难常见算法&…

es 聚合操作(二)

书接上文&#xff0c;示例数据在上一篇&#xff0c;这里就不展示了 一、Pipeline Aggregation 支持对聚合分析的结果&#xff0c;再次进行聚合分析。 Pipeline 的分析结果会输出到原结果中&#xff0c;根据位置的不同&#xff0c;分为两类&#xff1a; Sibling - 结果和现有…

C语言—求最大公约数(4种算法思路)

1.穷举法 如果大数可以整除小数&#xff0c;那么最大公约数为小数。如果不能整除小数&#xff0c;那么这两个数就按大到小依次对比小数小的数求余&#xff0c;遇到都能够整除的&#xff0c;就是最大公约数。 int gcd(int a, int b) {int i;int min a < b ? a : b;for (i …

“禁止互撕”新规第二天,热搜把#章子怡“怒怼”网友#推上了榜一

3月12日&#xff0c;微博热搜发布公告&#xff0c;对热搜词条处置规则进行了更新。 针对热搜词条长期以来存在的引战互撕、挑唆对立等不良现象&#xff0c;热搜生态秩序亟待改善&#xff0c;微博给出了两大解决方案&#xff1a; 一是更新热搜词条处置规则&#xff0c;当热搜词…

1456.定长子串中元音的最大数目

题目&#xff1a;给你字符串 s 和整数 k 。 请返回字符串 s 中长度为 k 的单个子字符串中可能包含的最大元音字母数。 英文中的 元音字母 为&#xff08;a, e, i, o, u&#xff09;。 解题思路&#xff1a; 1.右侧新进入窗口的字母为元音字母&#xff0c;左侧移出窗口的字母…

无源性指数

无源性指数&#xff08;Passivity Index&#xff09;是控制系统理论中的一个概念&#xff0c;用于量化系统的无源性特性。无源性是系统的一个重要属性&#xff0c;它描述了系统从外部环境中吸收能量并消耗这些能量的能力。具体来说&#xff0c;一个无源系统不能从外部环境中无限…

qiankun:vite/webpack项目配置

相关博文&#xff1a; https://juejin.cn/post/7216536069285429285?searchId202403091501088BACFF113F980BA3B5F3 https://www.bilibili.com/video/BV12T411q7dq/?spm_id_from333.337.search-card.all.click qiankun结构&#xff1a; 主应用base&#xff1a;vue3historyv…

3.1_8 两级页表

文章目录 3.1_8 两级页表&#xff08;一&#xff09;单级页表存在的问题&#xff08;二&#xff09;如何解决单级页表的问题&#xff1f;&#xff08;三&#xff09;两级页表的原理、地址结构&#xff08;四&#xff09;如何实现地址变换&#xff08;五&#xff09;需要注意的几…

QT5.14.2 探索QT的神秘力量:轻松获取MD5值的秘诀

在当今这个信息爆炸的时代&#xff0c;数据安全已经成为了我们每个人都需要关注的话题。MD5作为一种广泛使用的哈希算法&#xff0c;它的应用场景非常广泛&#xff0c;从密码存储到文件完整性校验&#xff0c;MD5都扮演着重要的角色。而在QT的世界里&#xff0c;获取MD5值就像吃…

第三方 cookie 就快被废弃了,再不玩就没机会了!

还记得初学前端时&#xff0c;一直听过 cookie&#xff0c;没碰它之前觉得特别简单&#xff0c;一听就懂。但当自己和后台成员对接时&#xff0c;那叫一个惨烈&#xff0c;搞了搞几天才好&#xff0c;最后弄好的时候还是懵懵的。最近突然看到第三方 cookie 快被废弃了&#xff…

洛谷 B3625 迷宫寻路

本道题需要注意&#xff1a;如果孩子的起始位置就是‘#’&#xff0c;那孩子就无路可走&#xff0c;出不来了。 所以需要特判一下&#xff0c;代码如下&#xff1a;&#xff08;这是废话&#xff0c;不需要特判&#xff0c;注意题目要求&#xff09; if(ch[1][1]#){printf(&q…

基于51单片机的数控直流可调电源设计[proteus仿真]

181基于51单片机的数控直流可调电源设计[proteus仿真] 电源系统这个题目算是课程设计和毕业设计中常见的题目了&#xff0c;本期是一个基于51单片机的数控直流可调电源设计 需要的源文件和程序的小伙伴可以关注公众号【阿目分享嵌入式】&#xff0c;赞赏任意文章 2&#xffe…

动态内存管理(下)

1.C/C程序的内存开辟 C/C程序内存分配的几个区域&#xff1a; 1. 栈区&#xff08;stack&#xff09;&#xff1a;在执行函数时&#xff0c;函数内局部变量的存储单元都可以在栈上创建&#xff0c;函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中…

谈谈你对Java平台的理解?

从你接触 Java 开发到现在&#xff0c;你对 Java 最直观的印象是什么呢&#xff1f;是它宣传的 “Write once, run anywhere”&#xff0c;还是目前看已经有些过于形式主义的语法呢&#xff1f;你对于 Java 平台到底了解到什么程度&#xff1f;请你先停下来总结思考一下。 今天…

java面试(缓存Redis)

为什么使用缓存 高性能&#xff0c;高可用&#xff0c;高并发。 什么是缓存击穿&#xff1f;缓存穿透&#xff1f;缓存雪崩&#xff1f; 击穿&#xff1a;redis中没有查询到数据。解决&#xff1a;设置热点数据永不过期。加载DB时防止并发。 穿透&#xff1a;redis和mysql中…

Java知识点之单例模式

1、单例模式&#xff08;Binary Search&#xff09; 单例模式确保某个类只有一个实例&#xff0c;而且自行实例化并向整个系统提供这个实例。在计算机系统中&#xff0c;线程池、缓存、日志对象、对话框、打印机、显卡的驱动程序对象常被设计成单例。这些应用都或多或少具有资…

TikTok新手如何起号?环境因素与内容创新技巧

相信很多刚入行的TikTok玩家都遇到过一个难题&#xff0c;那就是账号权重低&#xff0c;播放量在个位数徘徊&#xff0c;其实都是因为还没起号&#xff01;那么具体如何起号呢&#xff1f;下面小编也给大家分享一下技巧。 一、如何起号 1、明确注册 TikTok 账号的目的 无论是…

Day46| 139 单词拆分

目录 139 单词拆分 139 单词拆分 class Solution { public:bool wordBreak(string s, vector<string>& wordDict) {unordered_set<string> wordset(wordDict.begin(), wordDict.end());//dp数组来判断i长度时能不能被字典里面的单词所组成vector<bool&g…

怎么把mp4转换成amv格式?如何下载amv格式视频?

MP4&#xff08;MPEG-4 Part 14&#xff09;是一种通用的视频文件格式&#xff0c;广泛用于多媒体应用。作为MPEG-4标准的一部分&#xff0c;MP4以其卓越的压缩性能、出色的视频质量和广泛的兼容性成为当前最流行的视频格式之一。 AMV文件格式的介绍 AMV文件格式起源于中国公司…