C/C++ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Способы интеграции C++ .. |br| raw:: html
**Создание объекта** Перед началом работы с устройством необходимо получить указатель на конкретный экземпляр объекта, который должен передаваться в каждую вызываемую функцию драйвера. .. code:: C++ typedef void* libptr; int create(libptr* handle); **Добавление и получение параметров** Добавление и получение параметров возможно через специальные функции, учитывающие тип данных этих параметров: .. code:: C++ 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 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& param_value); .. hint:: Список типов параметров приведён в разделе с общими принципами работы с драйвером. **Выполнение команд** Для отправки любой поддерживаемой команды на весы нужно воспользоваться универсальной функцией выполнения команды и указать в качестве аргумента числовой эквивалент нужной команды. .. code:: C++ int execute_command(libptr handle, int command); После успешного выполнения команды функция вернёт значение "0". В противном случае вернётся код ошибки. .. hint:: Список всех поддерживаемых команд приведён в разделе с общими принципами работы с драйвером. **Пример работы** .. code:: C++ 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; } .. toctree:: :maxdepth: 2 :caption: Команды :numbered: Си/Подключение_и_настройки_драйвера Си/Работа_с_товарами Си/Работа_с_файлами Си/Системные_настройки_весов Си/Состояние_весов Си/Штрихкод Си/Этикетка Си/Работа_с_распознаванием Си/Устаревшие_команды