User Libraries

在用户库中,您可以封装多次需要的模块组合,并将其保存以供后续重复使用。

您可以根据需要定义任意数量的用户库。每个用户库可以包含任意数量的用户库元素。

一个 user library element 包含特定的模块和连接组合。创建完成后,库元素将在库面板(User Library 选项卡)中可用,并且可以像算子一样使用。

用户库元素与分层框(参见 'Hierarchical Boxes')非常相似。不同之处在于,用户库元素存储在(用户定义的)用户库中,并且可以插入到不同的设计和项目中,就像算子库中的算子一样。

库面板中带有元素的用户库

图 169. 库面板中带有元素的用户库


用户库元素的各个实例彼此独立,也就是说,如果您对其中一个实例进行更改,则不会影响同一用户库元素的其他实例。

用户库保存为 *.val 或 *.vl 文件。这些文件不属于特定项目的一部分。因此,它们也可以用于其他项目。

在 系统设置 在 VisualApplets 中,您可以指定 *.val 或 *.vl 文件在系统中的存储位置(参见 'System Settings')。

将用户库元素的实例插入到设计中后,加载项目或构建小应用程序(*.hap 文件)时不再需要 *.val 或 *.vl 文件。

创建一个新的用户库

要创建新用户库,请按照以下步骤操作:

  1. 在库面板中,单击 User Library 选项卡。

  2. 在用户库窗口中右键单击。

  3. 从上下文菜单中选择 Create New User Library。

    (或者,您也可以使用主菜单 Library → Create New User Library。)

  4. Create new User Library 对话框随即打开:

  5. 为您的新用户库命名。

  6. 默认情况下,新用户库保存在 *.val 文件格式中。如果要在此库中打开 VisualApplet 3.3.2 或更旧版本,请选择 Legacy library format (.vl)。请注意,如果您在中的旧版用户库 *.vl 文件格式包含受保护的用户库元素,该元素将不会被保存,也无法在旧版文件格式中打开。

  7. 点击 OK

此时,已创建一个空的用户库(其功能类似于容器),您现在可以用您的用户库元素来 Fill 它。

当您将鼠标移动到用户库名称上方时,工具提示会显示该库是否已保存为 *.vl 旧版文件格式:

创建 User Library 元素

有两种方法可以创建一个新的用户库元素。您可以

将分层框保存为用户库元素

  1. 右键点击分层框以打开该模块的快捷菜单。

  2. 选择 Save to User Library。

    将弹出 Save 对话框:

    将分层框保存为用户库元素

    图 170. 将分层框保存为用户库元素


  3. 选择要将新元素保存到的用户库(或者,点击 New User Library 并定义一个新库)。

  4. 为您的新用户库元素输入一个名称(在 Element Type 下方)。

  5. 可选:如果您想添加有关元素的信息(版本号、简短描述、个人 GUI 图标、HTML 帮助文件形式的文档):

    1. 点击 Details。将打开一个新对话框:

      添加文档、版本信息、简短描述和/或个人 GUI 图标

      图 171. 添加文档、版本信息、简短描述和/或个人 GUI 图标


    2. 如果需要,为您的库元素输入一个版本号。

    3. 如果需要,为您的库元素输入简短描述。

    4. 若要指定要与 VisualApplets GUI 上的库元素一起显示的特定图标,请在 Icon File 字段中指定 PNG 文件的路径,或使用该字段右侧的导航按钮。

    5. 若要添加描述您的用户库元素的文档,请点击 HTML Help Files 下方的加号按钮,并导航至保存文档文本的 HTML 文件。

      您可以指定多个 HTML 和图像文件。如果您添加了多个 HTML 文件,列表中的第一个 HTML 文件将作为您文档的起始页。起始页将显示为您的用户库元素的文档(在信息面板的 Help 选项卡中)。附加文件可以包含由起始页链接的图像或其他 HTML 文件。

      [注意] 帮助文件的命名和存储

      When you save your user library element later on, all the files you specify here will be copied to the VisualApplets installation directory, sub-directory LibraryCache. The starting page of your documentation (first HTML file in the list) will be renamed and will have the name of the user library element:<elementname>.html

      若要取消库元素与 HTML 文件的链接,请选择该文件并点击删除按钮。该 HTML 文件将取消链接,但仍保留在您的文件系统中。

    6. 使用 OK 确认新用户库元素的详细规格。

  6. 如果您想保护您的用户库元素,请选择 Protection 选项。这样,用户库元素就会变成一个“黑盒”。(有关元素保护的详细信息,请参阅 'Protecting User Library Elements'。)

  7. 点击 Save。

    可选的 PNG 和 HTML 文件会被复制到 VisualApplets 安装目录下的子目录 LibraryCache 中。

    如果您激活了 Protection 选项,将会显示一个额外的对话框 Protect User Library Element。

    1. 确保保护模式 Password 已激活。

    2. 输入您的密码并点击 OK。

      为库元素提供密码

      图 172. 为库元素提供密码


    所有用户库及其内容都可以在库面板中找到(参见 The User Interface of VisualApplets)。点击 User Library 标签页以显示“用户库”窗口。

    您所选的图标会与库元素一起显示。

    关于单个元素的详细信息会显示在工具提示中:

    关于用户库元素的工具提示信息

    图 173. 关于用户库元素的工具提示信息


    如果您选择新的用户库元素,相关的帮助信息将显示在信息面板的 Help 标签页下。

    设计窗口内的显示已更改:显示的不再是“HierarchicalBox”,而是用户库元素的名称。分层框的图标已被您为该库元素选择的图标所取代。设计中实例的名称(图标下方)保持不变。

    您的库元素在设计中的显示

    图 174. 您的库元素在设计中的显示


您可以随时在稍后更改您的用户库元素(请参阅 'Editing User Library Elements' 一节)。但是,这些更改不会推广到该元素的实例。如果您愿意,您有多种选项来更新用户库元素的实例(请参阅 'Updating Instantiated User Library Elements' 一节)。

[注意] 用户库元素分析

可以进行设计规则检查 1 级(Design Rules Check Level 1)。

无法进行资源分析、构建和仿真。

从头开始创建一个新的用户库元素

或者,您也可以从头开始创建新的用户库元素。若要定义和/或更改用户库元素,您可以使用 User Library Editor。

若要从头开始定义新的用户库元素:

  1. 从主菜单中,选择 Library → Edit User Library → New User Library Element。

    现在,设计编辑器关闭。随设计编辑器一起关闭的,还有您一直在处理的设计。

    用户库编辑器随即打开。用户库编辑器的行为与普通设计编辑器相同。

  2. 为您的新用户库元素定义一个名称。

  3. 选择目标硬件平台。

    (不过,只有在您的元素中包含依赖于硬件问题(例如相机算子)的算子时,平台才具有相关性。)

  4. 点击 OK。

  5. 点击 OK 后,将立即打开一个对话框,您必须在其中指定元素的输入和输出端口数量。请确保指定正确的输入和输出链接数量,因为之后将无法更改这些数量。

    1. 指定所需的输入端口数量。

    2. 指定所需的输出端口数量。

    [Caution] 定义必要的链接数量

    请确保指定正确的输入和输出链接数量,因为之后将无法更改这些数量。

  6. 使用 OK 确认端口定义。

    用户库编辑器随即打开,其中包含一个仅有您刚刚指定的输入和输出端口的空元素设计。

  7. 根据需要编辑用户库元素的设计。

  8. 完成后,通过从主菜单中选择 File → Save As 来保存您的元素。

    保存新用户库元素

    图 175. 保存新用户库元素


  9. 选择要在其中保存新元素的的用户库(或者,也可以点击 New User Library 并定义一个新库)。

  10. 可选:如果您想添加有关元素的信息(版本号、简短描述、单独的 GUI Icon、HTML 帮助文件形式的文档):

    1. 点击 Details。将打开一个新对话框:

      添加文档、版本信息、简短描述和/或个人 GUI 图标

      图 176. 添加文档、版本信息、简短描述和/或单独的 GUI Icon


    2. 如果需要,可为您的库元素输入版本号。

    3. 如果需要,可为您的库元素输入简短描述。

    4. 若要指定要与 VisualApplets GUI 上的库元素一起显示的特定图标,请在 Icon File 字段中指定 PNG 文件的路径,或使用该字段右侧的导航按钮。

    5. 若要添加描述用户库元素的文档,请点击 HTML Help Files 下方的加号按钮,并导航至保存文档文本的 HTML 文件。

      您可以指定多个 HTML 和图像文件。如果添加多个 HTML 文件,列表中的第一个 HTML 文件将作为您文档的起始页。起始页将显示为您用户库元素的文档(在信息面板的 Help 选项卡中)。附加文件可能包含由起始页链接的图像或其他 HTML 文件。

      [注意] 帮助文件的命名和存储

      When you save your user library element later on, all the files you specify here will be copied to the VisualApplets installation directory, sub-directory LibraryCache. The starting page of your documentation (first HTML file in the list) will be renamed and will have the name of the user library element:<elementname>.html

      要从库元素中取消关联 HTML 文件,请选择该元素并单击删除按钮。该 HTML 文件将被取消关联,但仍会保留在您的文件系统中。

    6. 使用 OK 确认新用户库元素的详细规格。

  11. 如果需要保护用户库元素,请选择 Protection 选项。这样,用户库元素就会变成一个“黑盒”。(有关元素保护的详细信息,请参阅 'Protecting User Library Elements'。)

    [注意] 受保护的元素无法保存为旧版文件格式

    如果将用户库保存为 *.vl 旧版文件格式,则无法保存受保护的元素。在这种情况下,请取消保护或将用户库保存为更新且推荐的 *.val 文件格式。

    使用旧版文件格式,您可以在 VisualApplets 3.3.2 或更低版本中打开用户库。

  12. 点击 Save。

    可选的 PNG 和 HTML 文件会被复制到 VisualApplets 安装目录的子目录 LibraryCache 中。

    如果激活了 Protection 选项,将会出现一个附加对话框 Protect User Library Element。

    1. 确保已激活保护模式 Password。

    2. 输入您的密码并点击 OK。

      为库元素提供密码

      图 177. 为库元素提供密码


    所有用户库及其内容均可在库面板中找到(参见 The User Interface of VisualApplets)。单击 User Library 选项卡以显示“用户库”窗口。

    您所选的图标会与库元素一起显示。

    有关各个元素的详细信息将显示在工具提示中:

    关于用户库元素的工具提示信息

    图 178. 用户库元素工具提示信息


    如果选择新用户库元素,相应的帮助信息将显示在 Help 选项卡下的信息面板中。

  13. 如果想继续处理您的设计,请关闭用户库元素设计和用户库编辑器:从主菜单中选择 File → Close。

    [Caution] 通过 File->Close 关闭元素设计

    仅关闭设计选项卡来关闭元素设计是不够的。您还需要关闭用户库编辑器。

    要同时关闭这两者,请单击 File → Close。只有通过这种方式关闭用户库元素的设计(从而关闭库编辑器)之后,您才能重新打开常规设计编辑器以及整个小应用程序设计。

  14. 要继续处理您的设计,请打开设计。

您可以随时在稍后更改您的用户库元素(请参阅 'Editing User Library Elements' 一节)。但是,这些更改不会推广到该元素的实例。如果您愿意,您有多种选项来更新用户库元素的实例(请参阅 'Updating Instantiated User Library Elements' 一节)。

[注意] 用户库元素分析

可以进行设计规则检查 1 级(Design Rules Check Level 1)。

无法进行资源分析、构建和仿真。

使用 User Library

将 User Library 元素插入您的设计中

您可以通过简单地将元素拖放到设计中来创建其实例(就像处理运算符一样)。

实例化后的模块表现得像一个分层框,但它知道自己派生自用户库。

使元素实例适应您的设计

您可以调整用户库元素的实例以适应您的整体设计。您可能需要

  • 修改各个运算符参数

  • 修改布局(添加和删除算子与连线)

[提示] 更改 Link Property

更改的 Link Property 不会改变库元素实例的实现。例如:如果某个库元素的保存 Parallelism 为 4,但其实例连接到了 Parallelism 为 8,这当然会影响实例内部的连线。然而,这并不是对实例实现的更改,因为更改 Link Property 不会影响任何算子参数。

修改了用户库元素实例后(无论是通过修改单个算子参数,还是通过修改布局(添加和删除算子与连线)),该实例就不再仅仅是用户库元素的复制品了。

为了让您知道哪个实例包含更改,修改后的用户库元素实例将被标记:

图 179。


了解这一点对您非常重要,因为更新用户库元素的实例(请参阅章节 '更新已实例化的用户库元素')会覆盖您对实例所做的更改。在为包含更改的实例选择自动更新之前,您应始终仔细权衡利弊。

保护 User Library 元素

您可以保护用户库元素。 启用了保护功能后,用户库元素将变为“黑盒”。 但是,包含动态参数或引自 Parameters 库中算子的参数的受保护元素在运行时仍然可见。

[注意] 受保护的元素无法保存为旧版文件格式

如果将用户库保存为 *.vl 旧版文件格式, 无法保存受保护的元素。在这种情况下,请取消保护,或者将用户库保存为更新且推荐的 *.val 文件 格式。

使用旧版文件格式,您可以在 VisualApplets 3.3.2 或更低版本中打开用户库。

保护用户库元素有两种方法:

  • 通过密码保护:用户库元素随后可以通过密码打开和编辑。没有密码的用户甚至无法看到用户库元素中使用了哪些算子(黑盒)。

  • 不可逆保护:用户库元素将永久变为黑盒,无法重新打开,即使您自己也无法打开。

通过密码保护用户库元素:

  1. 右键单击该元素。

  2. 从上下文菜单中,选择 Protect User Library Element。

    保护用户库元素

    图 180。保护用户库元素


  3. 确保激活了保护模式 Password。

  4. 输入您的密码。

    输入受保护用户库元素的密码

    图 181。输入受保护用户库元素的密码


  5. 点击 OK。

[Caution] “单向”不可逆保护

如果您选择保护模式 One Way(而不是 Password),用户库元素将永远无法重新打开,甚至连您自己也无法打开。如果您计划在以后增强该元素, 请确保选择保护模式 Password。 或者,您可以在启用此保护模式之前保存该元素的副本(作为分层框或未受保护的算子)。

编辑 User Library 元素

您可以对用户库元素进行修改。具体操作方式为:

  • 在库编辑器中直接编辑库元素,或者

  • 使用修改后的实例或分层框(hierarchical box)对其进行覆盖。

但是,这些更改不会自动同步。如果您希望库元素的实例能够反映您对该元素所做的更改,则需要更新该实例(请参见章节 'Updating Instantiated User Library Elements')。

在 User Library 编辑器中编辑 User Library 元素

您可以在用户库编辑器中编辑用户库元素。要打开用户库编辑器:

  1. 保存您当前正在处理的设计。

  2. 在库窗格中,转到 User Library 选项卡。

  3. 右键单击要编辑的元素。

  4. 从元素的上下文菜单中,选择 Edit。

    打开用户库编辑器

    图 182. 打开用户库编辑器


此时,设计编辑器将关闭。与设计编辑器一起关闭的还有您一直在处理的设计。

用户库编辑器随即打开。用户库编辑器的行为方式与普通设计编辑器相同。

  1. 进行您的修改。

  2. 保存您的更改。

如果要编辑元素描述和版本号:

  1. 从主菜单中,选择 Library → Element Details。

  2. 保存编辑后的元素。

分析用户库元素: 您可以执行 1 级设计规则检查(Design Rules Check Level 1)。但是,无法进行带宽分析、资源分析、构建和仿真。

[重要] 更新实例

当您修改用户库元素时,设计中实例化的元素将不会自动应用这些更改。如果您希望库元素的实例反映您对该元素所做的更改,则需要更新该实例(请参见章节 'Updating Instantiated User Library Elements')。

通过覆盖编辑 User Library 元素

或者,您也可以通过直接覆盖的方式来编辑用户库元素。为此,请执行以下操作:

  1. 使用现有用户库元素的名称保存分层框或实例化的用户库元素(如 'Saving a Hierarchical Box as a User Library Element' 中所述)。

[重要] 更新实例

当您修改用户库元素时,设计中实例化的元素将不会自动应用这些更改。如果您希望库元素的实例反映您对该元素所做的更改,则需要更新该实例(请参见章节 'Updating Instantiated User Library Elements')。

在接下来的章节中,您将了解有关如何更新实例化的用户库元素的信息。

更新已实例化的 User Library 元素

在常规工作流中,用户库元素可能需要进行更新。但是,您对元素所做的更改对该元素的实例没有影响。要更新设计中的元素实例,您可以手动添加更改,或使用 VisualApplets 提供的两种更新机制之一(见下文)。

手动更新

如果您决定手动更新已更改元素的实例,则可以在设计中选择该元素的多个实例,并在一个步骤中同时更改它们。

[Caution] 无分层更新

不支持用户库元素的分层更新。如果您选择更新层次结构中的多个模块,则仅更新层次结构中的最高模块。

通过快速更新替换模块

您可以通过“Quick Update”功能更新设计中的用户库元素实例。

[Caution] 更新将覆盖实例内的更改

更新用户库元素的实例将覆盖您对实例所做的所有更改(参数设置或添加/删除 operator)。在为包含更改的实例选择自动更新之前,您应始终仔细权衡利弊。

为了让您了解哪个实例包含更改,库元素的修改实例会有所标记:

要通过 Quick Update 更新库元素的实例:

  1. 选择要更新的实例。

  2. 从主菜单中选择 Library → Quick Update from User Library。

所选的元素实例将被替换为一个新实例,该实例反映了您在库中所做出的更改。

只有当要更新的实例与已编辑的用户库元素具有相同数量的输入和输出端口时,“Quick Update”才可执行。不能使用“Quick Update”将 A 类型用户库元素的实例替换为 B 类型用户库元素的实例。

通过“Quick Update”,您可以一次更新元素的多个实例:

  1. 按住 Ctrl 键不放,同时选择要更新的所有实例。

  2. 从主菜单中选择 Library → Quick Update from User Library。

    该元素的所有选定实例都将被新实例替换。

通过 Update from User Library 替换实例

当您选择此选项时,要替换的实例不必与用于更新它们的库元素属于同一类型。因此,您可以使用此选项将用户库元素或分层框的实例替换为另一个用户库元素的实例。例如,您可以将 A 类型用户库元素的实例替换为 B 类型用户库元素的实例(与“Quick Update”选项相反)。尽管如此,只有当要替换的实例与要替换成的用户库元素具有相同数量的输入和输出端口时,Update from User Library 才可行。

要将一个或多个元素实例替换为另一个用户库元素的实例:

  1. 选择要替换的模块(按住 Ctrl 键)。

  2. 从主菜单中选择 Library → Update from User Library。

    对话框 Update User Library Elements 将打开。左侧面板显示您选择用于更新的模块。右侧面板显示您的用户库。

    实例替换

    图 183. 实例替换


  3. 在右侧面板中,选择所需的用户库元素。在左侧面板中,所有可以按需替换的模块都会以绿色高亮显示(如果没有高亮显示,请检查输入和输出的数量是否匹配)。

  4. 点击 Replace Modules。

    所有具有匹配节点数目的列出模块将立即被替换为新用户库元素的实例。

上面示例:在两种情况下输入和输出的数目不匹配。模块 28 只有 1 个输入端口和 1 个输出端口,而 USRLibraryELement5 具有三个输入端口和三个输出端口。将模块 32、31 和 33 替换为 USRLibraryELement5 是可行的,因为它们的输入和输出端口数量与 USRLibraryELement5 完全相同。

将 User Library 模块转换为层次化框

有时您可能会发现将元素实例与用户库解除关联很有帮助。为此,您可以将用户库元素的实例转换为层次化框。

  1. 在您的设计中选择要转换的模块。(如果您想转换多个模块,请按住 Ctrl 键并选择所有要转换的模块。)

  2. 从主菜单中选择 Library → Change to Hierarchical Box。

所有选定的模块将立即转换为完全独立的层次化框。

交付的 User Libraries

VisualApplets 发行版包含两个用户库:

  • JPEG_Color

  • imaFlex_CXP12_Tools

  • imaFlex_CXP12_Tools_Advanced

如果您没有看到这些随附的用户库,请在 User Library 面板中右键单击,并从打开的上下文菜单中选择 Rescan User Library Directory:

随后,VisualApplets 将打开位于 System Settings → Path Settings → Libraries/Path for storage of user libraries 中指定的目录中的库。

JPEG_Color User Library

JPEG_Color 用户库包含以下元素:

  • JPEGEncoder_Color_800MPs_VCX:通过此用户库元素,您可以将 8 位彩色图像转换为 JPEG 图像。JPEG_Encoder_Color_800MPs_VCX 适用于 CXPx2 采集卡,在 160 MHz 的时钟频率下提供 800 MP/s 的带宽。其输入 Parallelism 为 8。

  • JPEGEncoder_Color_1500MPs_VCX:通过此用户库元素,您可以将 8 位彩色图像转换为 JPEG 图像。JPEG_Encoder_Color_1500MPs_VCX 适用于 CXPx2 采集卡,在 160 MHz 的时钟频率下提供 1200 MP/s 的带宽。其输入 Parallelism 为 8。

  • JPEGEncoder_Color_2500MPs_VCX:通过此用户库元素,您可以将 8 位彩色图像转换为 JPEG 图像。JPEG_Encoder_Color_2500MPs_VCX 适用于 CXPx4 采集卡,在 160 MHz 的时钟频率下提供 2400 MP/s 的带宽。其输入 Parallelism 为 16。

  • JPEGEncoder_Color_300MPs_VCL:通过此用户库元素,您可以将 8 位彩色图像转换为 JPEG 图像。JPEG_Encoder_Color_300MPs_VCL 适用于 Camera Link (CL) 采集卡,并提供 300 MP/s 的带宽。其输入 Parallelism 为 4。

  • JPEGEncoder_Color_600MPs_VCL:通过此用户库元素,您可以将 8 位彩色图像转换为 JPEG 图像。JPEG_Encoder_Color_600MPs_VCL 适用于 Camera Link (CL) 采集卡,在 155 MHz 的时钟频率下提供 600 MP/s 的带宽。其输入 Parallelism 为 4。

  • JPEGEncoder_Color_850MPs_VCL:通过此用户库元素,您可以将 8 位彩色图像转换为 JPEG 图像。JPEG_Encoder_Color_850MPs_VCL 适用于 Camera Link (CL) 采集卡,在 170 MHz 的时钟频率下提供 850 MP/s 的带宽。其输入 Parallelism 为 8。

您可以在 VisualApplets 安装的 Help 面板中找到有关用户库元素的详细文档。

imaFlex_CXP12_Tools User Library

[注意] 最好使用 imaFlex_CXP12_Tools_Advanced User Library

imaFlex_CXP12_Tools 用户库仅出于向后兼容的原因而提供。如果可能,请改用 imaFlex_CXP12_Tools_Advanced 用户库。

imaFlex_CXP12_Tools 用户库包含以下元素:

  • ImageBufferMultiRoI:此运算符为每个缓存的图像提供对多个兴趣区 (ROI) 的支持。作为适用于 imaFlex 平台的工具元素,用户库元素 ImageBufferMultiRoI 提供了与 VisualApplets 标准运算符 ImageBufferMultiRoI 相同的功能,后者在 imaFlex 平台上不受支持。

  • ImageBufferMultiRoIDyn:此运算符为每个缓存的图像提供对多个动态兴趣区 (ROI) 的支持。作为适用于 imaFlex 平台的工具元素,用户库元素 ImageBufferMultiRoIDyn 提供了与 VisualApplets 标准运算符 ImageBufferMultiRoIDyn 相同的功能,后者在 imaFlex 平台上不受支持。

imaFlex_CXP12_Tools_Advanced User Library

imaFlex_CXP12_Tools_Advanced user library 包含以下元素:

  • FrameBufferMultiRoi:此算子为每个缓冲图像提供对多个感兴趣区 (ROI) 的支持。作为适用于 imaFlex 平台的工具元素,用户库元素 FrameBufferMultiRoi 提供了与 VisualApplets 标准算子 ImageBufferMultiRoi 相同的功能,后者在 imaFlex CXP-12 平台上不受支持。

  • JPEG_Encoder_Color_iF_Penta:JPEG_Encoder_Color_iF_Penta 允许您将 8 位彩色图像转换为 JPEG 图像。

  • JPEG_Encoder_Color_iF:JPEG_Encoder_Color_iF 允许您将 8 位彩色图像转换为 JPEG 图像。

您可以在 VisualApplets 安装的 Help 面板中找到用户 library 元素的详细文档。此外,还有展示如何使用用户 library 元素的示例,请参见 'Basic Acquisition Examples for Cameras for CoaXPress 12 imaFlex Frame Grabber'