本文主要是介绍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:
首先,导入pmt模块。我们分别使用和调用from_long()和from_complex()为PMT分配两个值 (P和P2)。如我们所见,它们都是同一类型!这意味着我们可以通过 SWIG 将这些变量传递给 C++,C++ 可以相应地处理这种类型。
与上面代码相同的,使用C++的代码如下:
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_*方法转换回来:
最后一行显示了pmt::mp()速记函数。它基本上节省了一些打字,因为它from_从给定的类型推断出正确的功能。
字符串类型在 PMT 中扮演了一个特殊的角色并且有自己的转换器:
pmt::intern 是 pmt::string_to_symbol 的另一种说法。
有关转换函数的完整列表, 请参阅PMT 文档和头文件pmt.h。
在 Python 中,我们可以使用动态类型,实际上有一个辅助函数来进行这些转换(C++ 也有一个用于转换为 PMT 的辅助函数,称为 pmt::mp(),但它的功能不那么强大,而且还不如很有用,因为在 C++ 中类型总是严格已知的):
这篇关于GNU Radio教程 7.多态类型PMT的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!