GnuRadio配套使用XML文件来描述树外(OOT)模块块的API。描述该XML模式的文档在哪里?
答案 0 :(得分:1)
此处有部分说明:https://wiki.gnuradio.org/index.php/GNURadioCompanion#Creating_the_XML_Block_Definition
名称标记用于指示块,参数和端口的标签文本。
键标记是唯一标识符,它们可能不包含空格。块密钥在GRC中的所有块中必须是全局唯一的。该 参数键只能在块内唯一。
类别标记是一个unix样式的路径,表示块选择窗口内块的位置。路径可以是新的 类别(自定义),或表示子类别(过滤器/自定义)。至 将一个块放入根类别,只需使用一个斜杠(/)即可 根路径。
import 标记(可以有多个)必须是包含块的模块的有效python import语句。
make 标记包含构建块所需的代码。此代码本质上是嵌套在xml标记内的猎豹模板。 生成代码后,模板会对代码执行文本替换 “$”参数。有关更高级的功能,请参阅猎豹 模板文档。
回调标记会在您的自定义块中注册一个set方法。注册set-method后,可以在运行时调用set-method 当变量改变时。可以有任意数量的回调标签, 你的块的每个set方法都有一个。如果是这样,或者没有回调标签 不适用。
对于 param 标记,类型标记的常用值为:complex,real,int,complex_vector,real_vector,int_vector,string, 和原始的。原始类型允许使用任何值而不执行 类型检查。真实类型应该用于单个和双重 精确浮点数。 int类型应该用于 长,小,短,和字符。
隐藏标记控制参数在GRC中的显示方式。它可以是无,部分(在道具对话框中显示,而不是在块中 帆布)或全部。
接收器标记表示输入端口,源标记表示输出端口。类型标记的允许值为:complex, float,int,short和byte。对于具有向量长度的端口,请指定a 类型标记后的vlen标记。
代替更好的替代方案,有一个描述块的XML的文档类型定义:https://github.com/gnuradio/gnuradio/blob/master/grc/core/block.dtd。相关部分如下所示:
<!--
Top level element.
A block contains a name, ...parameters list, and list of IO ports.
-->
<!ELEMENT block (name, key, category?, throttle?, flags?, import*, var_make?, var_value?,
make, callback*, param_tab_order?, param*, bus_sink?, bus_source?, check*,
sink*, source*, bus_structure_sink?, bus_structure_source?, doc?, grc_source?)>
<!--
Sub level elements.
-->
<!ELEMENT param_tab_order (tab+)>
<!ELEMENT param (base_key?, name, key, value?, type?, hide?, option*, tab?)>
<!ELEMENT option (name, key, opt*)>
<!ELEMENT sink (name, type, vlen?, domain?, nports?, optional?, hide?)>
<!ELEMENT source (name, type, vlen?, domain?, nports?, optional?, hide?)>
<!--
Bottom level elements.
Character data only.
-->
维基百科描述了Document type definition中使用的限定符:
量词是紧随其后的单个字符 它适用的指定项目,限制连续的数量 在内容的指定位置出现这些项目 元素;它可能是:
+用于指定项目必须出现一次或多次 - 每次出现的有效内容可能不同;
*用于指定允许任何数量(零个或多个)出现 - 该项目是可选的,每个项目的有效内容 发生可能不同
?用于指定一定不能 不止一次出现 - 该项目是可选的;
&lt; check&gt; 标记可用于验证。例如。如果你有一个带有键“title”的参数和另一个带有键“num”的参数,你可以使用以下顶级标签进行验证。
<check>$title != ""</check>
<check>$num > -1</check>
<check>$num < 5</check>