GNU Radio教程 7.多态类型PMT

多态类型 (PMT)

内容:

1   介绍

1.1 更复杂的类型

2   PMT 数据类型

3   插入和提取数据

4   字符串

5   测试和比较

6   字典

7   矢量图

7.1 斑点

8   对

9   PDU

10  序列化和反序列化

11  印刷

11.1   集合符号

12  Python 对象和 PMT 之间的转换

参数多态性的概念适用于数据类型和函数。可以计算或应用于不同类型值的函数称为多态函数。可以看起来是通用类型的数据类型(例如,具有任意类型元素的列表)被指定为多态数据类型,就像进行这种专门化的通用类型一样。

PMT并不是代表某一种数据类型,可以被赋予多种类型的值。比如标签tag和消息message都是PMT的应用场景,由于它很灵活,所以用在多个进程的通信很方便。

一、简介

    多态类型PMT用作从一个块/线程到另一个块/线程的数据载体,例如流标签和消息传递接口。PMT 数据类型可以表示从布尔值到字典的各种数据。它们在流标签和消息传递接口中大量使用。从某种意义上说,PMT 是一种用更灵活的方式扩展 C++ 严格类型的方法。最完整的 PMT 函数列表当然是源代码,特别是头文件pmt.h。本页总结了 PMT 最重要的特性和要点。

    让我们直接研究一些 Python 代码,看看我们如何使用 PMT:

GNU Radio教程 7.多态类型PMT_第1张图片

首先,导入pmt模块。我们分别使用和调用from_long()和from_complex()为PMT分配两个值 (P和P2)。如我们所见,它们都是同一类型!这意味着我们可以通过 SWIG 将这些变量传递给 C++,C++ 可以相应地处理这种类型。

与上面代码相同的,使用C++的代码如下:

GNU Radio教程 7.多态类型PMT_第2张图片

Python 和 C++ 中有两点很突出:首先,我们可以简单地打印 PMT 的内容。这怎么可能?好吧,PMT 具有将它们的值转换为字符串的内置功能(尽管这对所有类型都是不可能的)。其次,PMT 显然必须知道它们的类型,所以我们可以查询它,例如通过调用is_complex()方法。

注意:当独立运行上述代码时,编译器命令将类似于g++ pmt_tutorial.cpp -I$(gnuradio-config-info --prefix)/include -lgnuradio-pmt -o pmt_tutorial

    在将非 PMT 值分配给 PMT 时,我们可以使用from_*方法,并使用to_*方法转换回来:

GNU Radio教程 7.多态类型PMT_第3张图片

    最后一行显示了pmt::mp()速记函数。它基本上节省了一些打字,因为它from_从给定的类型推断出正确的功能。

    字符串类型在 PMT 中扮演了一个特殊的角色并且有自己的转换器:

pmt::intern 是 pmt::string_to_symbol 的另一种说法。

有关转换函数的完整列表, 请参阅PMT 文档和头文件pmt.h。

在 Python 中,我们可以使用动态类型,实际上有一个辅助函数来进行这些转换(C++ 也有一个用于转换为 PMT 的辅助函数,称为 pmt::mp(),但它的功能不那么强大,而且还不如很有用,因为在 C++ 中类型总是严格已知的):

你可能感兴趣的:(GNU,Radio,c++,开发语言)