Flc C++ lib. Software controller for Fujinon CCTV lenses.

€400.00

Flc C++ library is a software controller for Fujinon lenses. These lenses provide control interface over serial port.

LICENSE: We sell source code of this library as is, without future updates and technical support according to perpetual non-exclusive royalty-free license. You pay once and can use this library in your software and hardware products without limits. Please read the license agreement before purchasing: LICENSE.

Flc C++ library is a software controller for Fujinon lenses. These lenses provide control interface over serial port.

LICENSE: We sell source code of this library as is, without future updates and technical support according to perpetual non-exclusive royalty-free license. You pay once and can use this library in your software and hardware products without limits. Please read the license agreement before purchasing: LICENSE.

Overview

The Flc C++ library is a software controller for Fujinon lenses. These lenses provide control interface over serial port. The Flc library inherits Lens interface. It depends on libraries: Lens (provides interface and data structures to control lenses, source code included, Apache 2.0 license), Logger (provides function to print logs, source code included, Apache 2.0 license), SerialPort (provides functions to work with serial ports, source code included, Apache 2.0 license) and FujiProtocolParser (provides functions to encode control commands and decode responses from Fujinon lenses, source code included). The Flc library provides simple interface to be integrated in any C++ projects. The library repository (folder) provided by source code and doesn’t have third-party dependencies to be specially installed in OS (excepts test application which depends on OpenCV open source library to provide user interface). It is developed with C++17 standard and compatible with Linux and Windows.

Documentation

Documentation: GO TO DOCUMENTATION

Lens control interface

class Flc : public cr::lens::Lens
{
public:
    /// Get class version.
    static std::string getVersion();

    /// Decode and execute command.
    bool decodeAndExecuteCommand(uint8_t* data, int size) override;

    /// Open controller serial port.
    bool openLens(std::string initString) override;

    /// Init lens by parameters structure.
    bool initLens(cr::lens::LensParams& params) override;

    /// Closes serial port and stops all threads.
    void closeLens() override;

    /// Get serial port status.
    bool isLensOpen() override;

    /// Get lens connection status.
    bool isLensConnected() override;

    /// Set lens parameter.
    bool setParam(cr::lens::LensParam id, float value) override;

    /// Get lens parameter.
    float getParam(cr::lens::LensParam id) override;

    /// Get the lens parameters.
    void getParams(cr::lens::LensParams& params) override;

    /// Execute lens command.
    bool executeCommand(cr::lens::LensCommand id, float arg = 0) override;

    /// Add video frame for auto focus purposes. Not supported.
    void addVideoFrame(cr::video::Frame& frame) override;
};

Simple example

#include <iostream>
#include "Flc.h"

int main(void)
{
    // Init camera controller.
    cr::fuji::Flc controller;
    if (!controller.openCamera("/dev/ttyUSB0;9600;50"))
        return -1;

    while (true)
    {
        // Main dialog.
        int option = -1;
        std::cout << "Options (1:Zoom tele, 2:Zoom wide, 3:Zoom stop) : ";
        std::cin >> option;

        // Get all lens params.
        cr::lens::LensParams lensParams;
        controller.getParams(lensParams);

        switch (option)
        {
        case 1: // Zoom tele.
            controller.executeCommand(cr::lens::LensCommand::ZOOM_TELE);
            break;
        case 2: // Zoom wide.
            controller.executeCommand(cr::lens::LensCommand::ZOOM_WIDE);
            break;
        case 3: // Zoom stop.
            controller.executeCommand(cr::lens::LensCommand::ZOOM_STOP);
            break;
        default:
            break;
        }
    }
    return 1;
}