C/C++

Способы интеграции C++

Создание объекта

Перед началом работы с устройством необходимо получить указатель на конкретный экземпляр объекта, который должен передаваться в каждую вызываемую функцию драйвера.

typedef void* libptr;
int create(libptr* handle);

Добавление и получение параметров

Добавление и получение параметров возможно через специальные функции, учитывающие тип данных этих параметров:

int set_int_param(libptr handle, int param_type, int64_t value);
int set_string_param(libptr handle, int param_type, std::string value);
int set_wstring_param(libptr handle, int param_type, std::wstring value);
int set_bytes_array_param(libptr handle, int param_type, std::vector<std::byte> value);
int get_int_param(libptr handle, int param_type, int64_t& param_value);
int get_string_param(libptr handle, int param_type, std::string& param_value);
int get_wstring_param(libptr handle, int param_type, std::wstring& param_value);
int get_bytes_array_param(libptr handle, int param_type, std::vector<std::byte>& param_value);

Подсказка

Список типов параметров приведён в разделе с общими принципами работы с драйвером.

Выполнение команд

Для отправки любой поддерживаемой команды на весы нужно воспользоваться универсальной функцией выполнения команды и указать в качестве аргумента числовой эквивалент нужной команды.

int execute_command(libptr handle, int command);

После успешного выполнения команды функция вернёт значение «0». В противном случае вернётся код ошибки.

Подсказка

Список всех поддерживаемых команд приведён в разделе с общими принципами работы с драйвером.

Пример работы

static int example(){
    using namespace nativedriver;

    libptr ptr;
    create(&ptr);
    set_string_param(ptr, 1,  std::string("192.168.0.101"));
    set_string_param(ptr, 2,  std::string("1111"));
    set_string_param(ptr, 3,  std::string("1234"));
    int connection_result = execute_command(ptr, CONNECT);

    std::wstring shop_name_wstr;
    std::string shop_name_str;

    //Получение название магазина
    set_int_param(ptr, StringNumber, 1);
    int get_shop_name_result = execute_command(ptr, GET_NAME_SHOP);
    get_wstring_param(ptr, ShopName, shop_name_wstr);

    //Запись нового названия магазина
    auto new_name = std::string("Назв. маг. 3");
    set_int_param(ptr, StringNumber, 1);
    set_string_param(ptr, ShopName, new_name);
    int set_shop_name_result = execute_command(ptr, SET_NAME_SHOP);

    //Получение нового названия магазина
    set_int_param(ptr, StringNumber, 1);
    get_shop_name_result = execute_command(ptr, GET_NAME_SHOP);
    get_wstring_param(ptr, ShopName, shop_name_wstr);

    return connection_result;
}

Команды