13.1.14. 第三方存储库#
IDE 附带 OpenMV 自己的开发板、固件、示例、机器学习模型和编辑器存根,但它也可以加载来自其他公司的相同类型的内容 - 合作伙伴构建的开发板、在其上运行的固件、为其调整的示例和模型,以及固件添加的 API 的代码完成。这些内容以 third-party repositories 的形式到达:IDE 与自己的内容合并并保持最新的内容文件夹。
此页面有两个受众。其中大部分是供安装和管理其他人发布的存储库的人使用的。最后一部分,authoring a repository,用于供应商构建。
13.1.14.1. 第三方存储库页面#
一切都通过编辑 → 首选项 → OpenMV → 第三方存储库进行管理。该表列出了每个已安装的存储库,以及每个存储库的显示名称、短 ID(无论是 Built-in 还是 User)、它提供的每种内容的已安装版本(固件、示例、模型、存根)以及它更新的 URL。
Built-in 表示存储库由供应商提供的安装程序放置到应用程序自己的目录中,就像驱动程序包将文件添加到程序中一样。 User 表示您自己通过 URL 安装了它。唯一的实际区别是您无法从 IDE 中删除内置存储库——它是通过卸载放置在其中的任何内容来删除的——因此“删除”按钮对其禁用。
13.1.14.2. 安装存储库#
从 URL 安装会询问存储库的 config.json(供应商发布的小清单文件)的地址,并安装它指向的所有内容。粘贴供应商给您的 URL; IDE 下载清单,获取固件、示例、模型和它列出的存根,并验证每个下载。安装、删除和更新存储库都会在重新启动后生效,因此 IDE 会在安装完成后重新启动。
供应商还可以将存储库作为安装程序分发,直接将其放入应用程序目录中,在这种情况下,它在您第一次打开页面时仅显示为 Built-in 行 - 无需安装任何内容。
13.1.14.3. 保持存储库更新#
每次 IDE 启动时都会检查带有更新 URL 的存储库。当有更新的内容可用时,IDE 会告诉您什么 - 列出每个存储库和涉及的版本 - 并提供安装它,所有这些都在一个提示中完成。检查更新按需运行相同的检查。
13.1.14.4. 优先级和覆盖#
存储库是一个有序列表,最高优先级位于顶部,上移和下移会对所选存储库重新排序。仅当两个来源提供 same 事物时,顺序才重要:具有相同 USB 标识符的板,或者具有相同名称的示例、模型或存根。当这种情况发生时,更高的条目会获胜,并且每个存储库都会胜过 OpenMV 的内置内容。这是经过深思熟虑的——供应商为共享 OpenMV 板 USB 标识符的板提供自己的固件,替换 IDE 为其提供的库存固件,或者用为其硬件编写的示例替换库存示例。
因为覆盖会默默地改变熟悉名称的功能,所以页面永远不会隐藏它。覆盖警告面板列出了每个有效的覆盖——哪个存储库的板、示例、模型或存根正在覆盖哪个——并且相同的列表在第一次看到存储库时作为消息出现一次。如果某个板、示例或模型的行为不符合 OpenMV 文档所描述的方式,那么首先要查看此面板。
13.1.14.5. 存储库提供什么#
这四种内容分别出现在 IDE 中的常用位置,因此安装存储库后,就没有什么新内容需要学习了:
Boards and firmware. 存储库的板的行为与 OpenMV 板完全相同 - 它在连接时被识别,其类型显示在状态栏中,并且其固件通过 IDE 更新,包括安装最新开发版本路径。参见固件更新与恢复。
Examples. 存储库的示例出现在“文件”→“示例”中,并合并到类别树中:供应商与 OpenMV 类别命名相同的类别中的示例位于 OpenMV 类别旁边,新类别成为其自己的子菜单。像任何示例一样,它们会被过滤到它们支持的板。参见脚本、示例与文档文件夹。
Models. 存储库的模型出现在 Model Zoo 中,并以相同的方式合并到浏览器树中,并带有供应商自己的描述。
Stubs. 存储库可以传送
.pyi存根文件,因此 editor 为其固件添加的功能提供补全、签名和文档 - 与 OpenMV 自己的模块以及供应商的自定义 API 获得的补全相同。