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:
Си/Подключение_и_настройки_драйвера
Си/Работа_с_товарами
Си/Работа_с_файлами
Си/Системные_настройки_весов
Си/Состояние_весов
Си/Штрихкод
Си/Этикетка
Си/Работа_с_распознаванием
Си/Устаревшие_команды