固件升级

介绍

Zivid为其相机提供持续的更新。更新包括了在主机上运行的部分和相机本身。 Zivid SDK会定期更新,以改进主机上的图像处理。 SDK里还包括了最新的相机固件。相机固件的更新频率低于主机软件的频率。这些更新将提高稳定性、鲁棒性和采集速度。

本教程将介绍如何在Zivid相机上执行固件更新。

每个SDK版本都与相机固件相匹配,SDK将确保相机运行与之兼容的固件。

备注

本文是使用已停产的相机 Zivid One+ 编写的,但该概念适用于所有相机型号。

Zivid Studio

当Zivid Studio连接到相机时,它会检查相机是否有匹配的固件。如果固件不匹配,它将进行自动更新。

更多信息

命令行界面

可以通过命令行界面工具 ZividFirmwareUpdater 手动更新相机上的固件。执行后,该工具将:

  1. 获取连接到计算机的相机的列表。

  2. 连接到列表中的一台相机。

  3. 查询相机当前固件版本。

  4. 如果不匹配则进行更新。

  5. 对列表中的其他相机执行步骤2-4。


运行 ZividFirmwareUpdater

按下键盘上的Win+R键启动命令提示符,键入 cmd 后点击 Enter

../../_images/run-cmd-windows.png

导航到您安装Zivid软件的文件夹:

cd C:/Program Files/Zivid/bin

运行 ZividFirmwareUpdater

ZividFirmwareUpdater.exe

ZividFirmwareUpdater 是适用于Ubuntu系统的 Zivid-Tools 软件包的一部分。当您安装Zivid SDK和Studio时,它可能并未一同安装。按照以下步骤安装 Zivid-Tools

ZividFirmwareUpdater 可以在 /usr/bin/ 中找到。

按下键盘上的 Ctrl + Alt + T 键打开终端窗口:

mkdir -p Zivid
cd Zivid
zividVersion=$(curl -L https://www.zivid.com/software/latest_version)
wget https://downloads.zivid.com/sdk/releases/${zividVersion}/u22/zivid-tools_${zividVersion}_amd64.deb
wget https://downloads.zivid.com/sdk/releases/${zividVersion}/u20/zivid-tools_${zividVersion}_amd64.deb

备注

自 SDK 2.10 起,移除了对 Ubuntu 18.04 的支持。如需查看早期 SDK 版本的 Ubuntu 18.04 说明,请更改左上角的知识库版本。

sudo apt install ./zivid-tools_${zividVersion}_amd64.deb

现在您可以运行 ZividFirmwareUpdater 了:

usr/bin/ZividFirmwareUpdater
将固件从1.6.6 更新到1.6.7

将固件从1.6.6 更新到1.6.7

更多信息
无需更新

无需更新

将固件从版本1.6.7回滚到版本1.6.6。

将固件从版本1.6.7回滚到版本1.6.6。

可以从 此处 找到 ZividFirmwareUpdater 的源代码。

Zivid API

Zivid Studio和ZividFirmwareUpdater CLI在Zivid SDK中使用了相同的API。您也可以在算法中使用这些API。

检查是否需要更新固件

跳转到源码

源码

int main()
{
    try
    {
        Zivid::Application zivid;

        auto cameras = zivid.cameras();
        for(auto &camera : cameras)
        {
            if(!Zivid::Firmware::isUpToDate(camera))
            {
                std::cout << "Firmware update required" << std::endl;
            }
            else
            {
                std::cout << "Skipping update of camera " << camera.info().serialNumber()
                          << ", model name: " << camera.info().modelName()
                          << ", firmware version: " << camera.info().firmwareVersion() << std::endl;
            }
        }
    }

    return EXIT_SUCCESS;
}

更新固件

跳转到源码

源码

int main()
{
    try
    {
        Zivid::Application zivid;

        auto cameras = zivid.cameras();
        for(auto &camera : cameras)
        {
            if(!Zivid::Firmware::isUpToDate(camera))
            {
                std::cout << "Updating firmware on camera " << camera.info().serialNumber()
                          << ", model name: " << camera.info().modelName()
                          << ", firmware version: " << camera.info().firmwareVersion() << std::endl;
                Zivid::Firmware::update(camera, [](double progressPercentage, const std::string &stageDescription) {
                    std::cout << std::round(progressPercentage) << " % : " << stageDescription
                              << (progressPercentage < 100 ? "..." : "") << std::endl;
                });
            }
            else
            {
                std::cout << "Skipping update of camera " << camera.info().serialNumber()
                          << ", model name: " << camera.info().modelName()
                          << ", firmware version: " << camera.info().firmwareVersion() << std::endl;
            }
        }
    }

    return EXIT_SUCCESS;
}

小技巧

固件会根据SDK版本进行更新。因此,当较旧的SDK版本与具有较新固件版本的相机一起使用时,相机固件会回滚到旧版本。