Изменения

Перейти к навигации Перейти к поиску

Импорт данных по протоколу R1Sensor

30 730 байт добавлено, 21:54, 29 марта 2023
Запросы к весовому комплексу
=Дата изменения документации=
0911.0811.2017 2022 года.
=Общие сведения о протоколе=
Весы допускают множественные одновременные подсоединение к прослушиваемому порту.
'''{{Внимание:''' |запрещается одновременно обновлять базу товаров в параллельных сессиях.Допускается параллельное выполнение таких операций как копирование файлов или копирование файлов и обновление базы товаров.}}
Допускается параллельное выполнение таких операций как копирование или считывание файлов.
==Алгоритм взаимодействия:==
:При подсоединении к весам, они выдают пакет соединения.
:В ответ на этот пакет в течении 30 секунд необходимо передать пакет установки связи. В случае истечения таймаута весы закрывают соединение.
==Запросы к весовому комплексу:==
Запрос обязательно должен содержать следующие поля:
"''id''" - идентификатор запроса. Можно использовать для проверки, что ответ идет на ту команду, на которую посылался запрос.
"''command''" - выполняемый запрос или команда.
объект "''data''" - в данном объекте передаются дополнительные данные, необходимые для выполнения запроса или команды. Так же в этом поле содержится информация о ПО которое сформировало запрос.
{{ProtocolCommand|id}} - идентификатор запроса. Можно использовать для проверки, что ответ идет на ту команду, на которую посылался запрос. {{ProtocolCommand|command}} - выполняемый запрос или команда. Объект {{ProtocolCommand|data}} - в данном объекте передаются дополнительные данные, необходимые для выполнения запроса или команды. Так же в этом поле содержится информация о ПО которое сформировало запрос. {{Внимание|Максимальный размер пакета принимаемый весами 1024000 байт! Рекомендуется использовать пакеты не более 16348 байт.}} ==Ответы от весового комплекса:==
Ответ обязательно содержать следующие поля:
"''id''" - идентификатор запроса.
"''response''" - текстовое описание ответа весов (результат выполнения команды или запроса).
"''response-code''" - цифровое код ответа весов (результат выполнения команды или запроса)
объект "''data''" - в данном объекте передаются дополнительные данные, являющиеся результатом выполнения команды. Так же в этом поле содержится информация о ПО весов.
{{ProtocolCommand|id}} - идентификатор запроса.
{{ProtocolCommand|response}} - текстовое описание ответа весов (результат выполнения команды или запроса). {{ProtocolCommand|response-code}} - цифровое код ответа весов (результат выполнения команды или запроса). Объект {{ProtocolCommand|data}} - в данном объекте передаются дополнительные данные, являющиеся результатом выполнения команды. Так же в этом поле содержится информация о ПО весов. ==Объект "''data''": ==В объекте "''{{ProtocolCommand|data''" }} передаются дополнительные данные, необходимые для выполнения или являющиееся являющиеся результатом выполнения команд.Постоянно в объекте дата присутствуют поля "''{{ProtocolCommand|application''" "''}} {{ProtocolCommand|version''" "''}} {{ProtocolCommand|compile-date''"}}, в которых содержится информация о ПО, которое их сформировало. Данная информация используется в информационных целях. Так же в случае возникновения ошибки присутсвует присутствует поле "{{ProtocolCommand|response-ext"}}, в котором содержится расширенное описание ошибки.
В некоторых командах, пересылающих большие объемы данных, данные предварительно могут быть запакованы архиватором GZip (см. описание команд).
Данная возможность отключается через настройки весового комплекса или в флагом "''{{ProtocolCommand|use-compress''" }} объекте "''{{ProtocolCommand|data''"}}.
Кодировка русских символов: UTF-8
Запрос:
<source lang="json"> "command" : "Link"</source>
Ответ:
<source lang="json"> "response" : "Ok"  "response-code" : 0</source>
Пример:
<source lang="json">
{ "id" : 1, "command" : "Link", "data" : { "application" : "R1ScaleTester", "version" : "0.0.0.1", "compile-date" : "09-08-2017" } } { "id" : 1, "response" : "Ok", "response-code" : 0, "data" : { "application" : "R1 Self Service Soft.", "version" : "1.0.2.11", "compile-date" : "09-08-2017" } }
</source>
Запрос:
<source lang="json"> "command" : "TestLink"</source>
Ответ:
<source lang="json"> "response" : "Ok"  "response-code" : 0</source>
Пример:
<source lang="json">
{ "id" : 1, "command" : "TestLink", "data" : { "application" : "R1ScaleTester", "version" : "0.0.0.1", "compile-date" : "09-08-2017" } } { "id" : 1, "response" : "Ok", "response-code" : 0, "data" : { "application" : "R1 Self Service Soft.", "version" : "1.0.2.11", "compile-date" : "09-08-2017" } }
</source>
==Получение и установка даты и времени на весах==
При запросе в объекте "{{ProtocolCommand|data" }} возвращаются дата/время с весов.
При установке в объекте "{{ProtocolCommand|data" }} передаются дата/время с весов.
Запрос:
<source lang="json"> "command" : "GetDateTime"  "command" : "SetDateTime"</source>
Ответ:
<source lang="json"> "response" : "Ok"  "response-code" : 0  "data" : { "date" : "21-08-2015", "time" : "12:00:00" }</source>
Пример:
<source lang="json">
{ "id" : 1, "command" : "GetDateTime", "data" : { "application" : "R1ScaleTester", "version" : "0.0.0.1", "compile-date" : "09-08-2017" } } { "id" : 1, "response" : "Ok", "response-code" : 0, "data" : { "date" : "21-08-2015", "time" : "12:00:00", "application" : "R1ScaleTester", "version" : "0.0.0.1", "compile-date" : "09-08-2017" } }
{ "id" : 1, "command" : "SetDateTime", "data" : { "date" : "21-08-2015", "time" : "12:00:00", "application" : "R1ScaleTester", "version" : "0.0.0.1", "compile-date" : "09-08-2017" } } { "id" : 1, "response" : "Ok", "response-code" : 0, "data" : { "application" : "R1 Self Service Soft.", "version" : "1.0.2.11", "compile-date" : "09-08-2017" } }
</source>
==Начало и окончание загрузки товаров и групп==
Команда "{{ProtocolCommand|BeginUpdate" }} подается перед загрузкой товаров и/или групп внутренний буфер приема данных в этот момент очищается и весы готовы к приему данных, если команда подается повторно - данные, уже приняты на тот момент удаляются.
Команда "{{ProtocolCommand|EndUpdate" }} подается после передачи всех данных. После передачи этой команды данные анализируются, сохраняются во внутреннюю базу весов и происходит обновление информации на экране.
Изначально включается режим обновления/добавления товаров и групп. Если после команды "{{ProtocolCommand|BeginUpdate" }} передать команду "{{ProtocolCommand|ClearGoodsAndGropus"}}, то включается режим замены базы данных (перед обработкой загруженных данных база данных в весах очищается).
Запрос:
<source lang="json"> "command" : "BeginUpdate"  "command" : "EndUpdate"</source>
Ответ:
<source lang="json"> "response" : "Ok"  "response-code" : 0</source>
Пример:
<source lang="json">
{ "id" : 1, "command" : "BeginUpdate", "data" : { "application" : "R1ScaleTester", "version" : "0.0.0.1", "compile-date" : "09-08-2017" } } { "id" : 1, "response" : "Ok", "response-code" : 0, "data" : { "application" : "R1ScaleTester", "version" : "0.0.0.1", "compile-date" : "09-08-2017" } }
{ "id" : 1, "command" : "EndUpdate", "data" : { "application" : "R1ScaleTester", "version" : "0.0.0.1", "compile-date" : "09-08-2017" } } { "id" : 1, "response" : "Ok", "response-code" : 0, "data" : { "application" : "R1 Self Service Soft.", "version" : "1.0.2.11", "compile-date" : "09-08-2017" } }
</source>
Данная команда позволяет получить текущее состояние весов: заблокированы или нет, текущий вес, состояние ошибки и др. информацию о весах.
При запросе в объекте "{{ProtocolCommand|data" }} данные статуса весов.
Запрос:
<source lang="json"> "command" : "GetState",</source>
Ответ:
<source lang="json"> "response" : "Ok" "response-code" : 0</source>  Пример:<source lang="json"> { "id" : 1, "command" : "GetState", "data" : { "application" : "R1ScaleTester", "version" : "0.0.0.1", "compile-date" : "09-08-2017" } }</source>  {{ProtocolCommand|error-state}} - флаг наличия ошибки на весах; {{ProtocolCommand|error}} - код ошибки; {{ProtocolCommand|error-text}} - текстовое описание ошибки;
"response{{ProtocolCommand|lock-code" : 0state}} - флаг ручной блокировки весов;
{{ProtocolCommand|packing-mode}} - флаг включения режима фасовки;
Пример:{{ProtocolCommand|user-inactive-time}} - время с последней активности весов (нажатия на тач-экран); {{ProtocolCommand|licensed}} - флаг состояния лицензии; { "id" : 1, "command" : "GetState", "data" : { "application" : "R1ScaleTester"ProtocolCommand|database-type}} - тип внутренней базы данных (0 - xml, "version" : "0.0.0.1", "compile-date" : "09sqlite); {{ProtocolCommand|weight}} - текущий вес; {{ProtocolCommand|weight-tare}} - текущая тара; {{ProtocolCommand|weight-stability}} - флаг стабильности веса; {{ProtocolCommand|scale-model}} -08модель весов; {{ProtocolCommand|scale-2017" version} } - версия весового модуля;
{{ProtocolCommand|scale-serial-number}} - заводской номер;
"error{{ProtocolCommand|operation-state" system}} - флаг наличия ошибки на весахтип операционной системы;
"error" {{ProtocolCommand|hostname}} - код ошибкиимя хоста весов;
"error{{ProtocolCommand|user-text" name}} - текстовое описание ошибкиимя пользователя, под которым запущено ПО весов;
"lock{{ProtocolCommand|current-state" time- флаг ручной блокировки весовdate}} - текущее время и дата;
"packing{{ProtocolCommand|disks}} -mode" - флаг включения режима фасовкиперечень дисков (актуально для Windows версии);
"user{{ProtocolCommand|free-inactivesystem-time" disk}} - время с последней активности весов (нажатия свободного места на тач-экран)системном диске;
"licensed" {{ProtocolCommand|free- флаг состояния лицензииwork-disk}} - свободного места на рабочем диске;
"database{{ProtocolCommand|free-type" memory}} - тип внутренней базы данных (0 - xml, 1 - sqlite)свободно оперативной памяти;
"weight" {{ProtocolCommand|screen- текущий весresolution}} - разрешение экрана;
"weight{{ProtocolCommand|system-tare" up- текущая тараtime}} - время со старта системы;
"weight-stability" - флаг стабильности веса;
"scale-model" - модель весов;
"scalegoods-versioncount" "groups- версия весового модуля;count""labels-count"
"scaleerror-serialcode""error-numberstate"" error- заводской номер;text"
"operationlock-systemstate" "packing-mode""user-inactive-time""image-recognition- тип операционной системы;active""image-recognition-camera-error""price-checker-active""voice-control-active"
"hostnamelicensed" - имя хоста весов;
"usercurrent-namealgoritm" - имя пользователя, под которым запущено ПО весов;
"currentweight""weight-timestability""weight-datetare" - текущее время и дата;
"disksscale-model""scale-version""scale-serial-number"" scale-serial- перечень дисков (актуально для Windows версии);number-ext"
"freeoperation-system""cpu-diskmodel"" cpu- свободного места на системном диске;serial-number""cpu-temperature""hostname""user-name"
"freecurrent-worktime-diskdate" "hardware-rtc-state""version- свободного места на рабочем диске;build"
"freescreen-memoryresolution" - свободно оперативной памяти;
"screenlast-resolutionimport-datetime"" last-import- разрешение экрана;status"
"systemeth-upip-timeaddress" "eth- время со старта системы;mac""wifi-ip-address""wifi-mac"
==Запуск ротации логов программы и архивов, создаваемых программой==
Запрос:
<source lang="json"> "command" : "RotateLog",</source>
Ответ:
<source lang="json"> "response" : "Ok"  "response-code" : 0</source>
Пример:
<source lang="json">
{ "id" : 1, "command" : "RotateLog", "data" : { "application" : "R1ScaleTester", "version" : "0.0.0.1", "compile-date" : "09-08-2017" } }
</source>
==Получение текущего протокола работы весов==
Данная команда позволяет получить текущий файл протокола работы весов.
Данные могут быть предварительно запакованы архиватором GZip (отключается в настройках весов). Так же флаг использования компрессии можно предать в объекте {{ProtocolCommand|"data": "use-compress" }} : 1 или 0. Далее данные кодируются в BASE-64. В объекте "{{ProtocolCommand|data" }} возвращаются данные лог файла "{{ProtocolCommand|log-file-data" }} и размер файла "{{ProtocolCommand|log-file-size"}}.
Запрос:
<source lang="json"> "command" : "GetLog"</source>
Ответ:
<source lang="json"> "response" : "Ok" "response-code" : 0 "data" : { "log-file-size" : "120000", "log-file-data" : "данные-лог-файла" }</source> ==Вывод сообщения на экран весов==Данная команда позволяет выводить на экран текстовые сообщения. Возможно сопровождать вывод сообщения звуковым сигналом. В объекте {{ProtocolCommand|data}} передается сообщение и другие параметры. {{ProtocolCommand|message}} - текст сообщения;{{ProtocolCommand|message-for-led}} - текст сообщения для светодиодного индикатора (если он установлен);{{ProtocolCommand|beep}} - разрешить звуковой сигнал;{{ProtocolCommand|time}} - длительность вывода сообщения в мс. Запрос: <source lang="json"> "command" : "DisplayMessage" "data" : { "message" : "Текс сообщения", "beep" : "true", "time" : "1000" }</source>
"response-code" Ответ: 0
<source lang="datajson" : { > "log-file-sizeresponse" : "120000Ok", "log-fileresponse-datacode" : "данные-лог-файла" }0</source>
==Блокировка и разблокировка работы весов==
Данная команда позволяет выполнить удаленную блокировку "{{ProtocolCommand|LockScale" }} и разблокировку "{{ProtocolCommand|UnlockScale" }} работы весов, например в случае поломок принтера.
В объекте "{{ProtocolCommand|data" }} передается пароль "{{ProtocolCommand|password" }} на проводимую операцию (изменяется в настройках весов).
Запрос:
<source lang="json"> "command" : "LockScale" "command" : "UnlockScale" "data" : { "password" : "239" }</source> Ответ: <source lang="json"> "response" : "Ok" "response-code" : 0</source> ==Обнуление веса и тарирование весов==Данная команда позволяет удаленно выполнить обнуление веса {{ProtocolCommand|ZeroWeight}} или произвести тарирование {{ProtocolCommand|TareWeight}} весов. В объекте {{ProtocolCommand|data}} передается пароль {{ProtocolCommand|password}} на проводимую операцию (изменяется в настройках весов).
"command" : "UnlockScale"
Запрос: <source lang="json"> "command" : "ZeroWeight" "command" : "TareWeight" "data" : { "password" : "239" }</source>
Ответ:
<source lang="json"> "response" : "Ok" "response-code" : 0</source>
"response-code" : 0==Перезагрузка и выключение весов==Данная команда позволяет удаленно выполнить перезагрузку {{ProtocolCommand|RebootScale}} или произвести выключение {{ProtocolCommand|PowerOffScale}} весов.
==Обнуление веса В объекте {{ProtocolCommand|data}} передается пароль {{ProtocolCommand|password}} проводимую операцию (изменяется в настройках весов). Стандартный пароль для перезагрузки и тарирование весов=выключения: {{Password|255}} Запрос: <source lang="json"> "command" : "RebootScale", "command" : "PowerOffScale",Данная команда позволяет удаленно выполнить обнуление веса "data"ZeroWeight: { " или произвести тарирование password"TareWeight: " весов.255" }</source>
В объекте "data" передается пароль "password" на проводимую операцию (изменяется в настройках весов).Ответ:
<source lang="json">
"response" : "Ok"
"response-code" : 0
</source>
Запрос:==Перезапуск и завершение работы ПО весов==Данная команда позволяет удаленно выполнить перезагрузку {{ProtocolCommand|RestartApp}} или завершить работу {{ProtocolCommand|ShutdownApp}} основного ПО весов. В объекте {{ProtocolCommand|data}} передается пароль {{ProtocolCommand|password}} проводимую операцию (изменяется в настройках весов).
"command" Стандартный пароль для перезагрузки и выключения: "ZeroWeight"{{Password|255}}
"command" Запрос: "TareWeight"
<source lang="json"> "command" : "RestartApp", "command" : "ShutdownApp", "data" : { "password" : "239255" }</source>
Ответ:
<source lang="json"> "response" : "Ok" "response-code" : 0</source> ==Получение списка файлов в каталоге==Данная команда позволяет получить список файлов или каталогов в указанном каталоге. Начальным путем для поиска файлов является каталог программы.
"responseДля получения информации необходимо передать каталог {{ProtocolCommand|search-code" : 0dir}}, маску файлов {{ProtocolCommand|files-mask}} и флаг поиска файлов или каталогов {{ProtocolCommand|search-files}}.
==Перезагрузка и выключение весов==Данная команда позволяет удаленно выполнить перезагрузку "Reboot" или произвести выключение "Shutdown" весовВ ответ информация приходит виде списка в поле {{ProtocolCommand|files-list}}.
В объекте "data" передается пароль "password" проводимую операцию (изменяется в настройках весов).Запрос:
<source lang="json">
"command" : "GetFileList",
"data" : {
"search-dir" : "./Data/Images/",
"files-mask" : "*.png",
"search-files" : true
}
</source>
ЗапросОтвет:
<source lang="commandjson"> "response" : "Ok", "response-code" : 0, "data" : { "search-dir" : "./Data/", "files-list" : ["goods.no.picture.png", "Rebootr1s.select.goods.action.png"] }</source>
"command" : "Shutdown"==Добавление, удаление и получение файлов и каталогов на/с весов==
"data" : { "password" : "239" }Данные команды позволяют получать файлы с весов, удалять файлы на весах и передавать файлы на весы. Начальным точкой для поиска файлов является каталог программы.
Ответ:Для работы с файлами, находящимся в подкаталогах, необходимо в имя файла включить путь до необходимого файла.
"response" : "Ok"Вне каталога программы можно получить доступ только к каталогу {{Путь к файлу|/opt/Exchange}}, в котором содержится протокол работы, данные для импорта, отчеты и т.д.
"response-code" Команды: 0
==Получение информации о файле, картинке, шаблоне этикетки или других файла в каталоге программы на весах, удаление и добавление файлов==Данная команда позволяет получить информацию о файле. Начальным путем для поиска файлов является каталог программы.Запрос:
Для получение информации о файле, находящимся в подкаталогах, необходимо в имя файла включить путь до необходимого файла.<source lang="json"> "command" : "AddFile" "command" : "GetFile" "command" : "GetFileInfo" "command" : "RemoveFile" "command" : "AddDir" "command" : "RemoveDir" "command" : "PartDataReceived" "command" : "PartDataSended"</source>
Вне каталога программы можно получить доступ только к каталогу "Exchange", в котором содержится протокол работы, данные для импорта, отчеты и т.д.Поля используемые при работе с файлами:
Например: для получения информации о картинке имя файла должно быть таким "{{ProtocolCommand|file-name" : "./Data/Images/goods.no.picture.png".}} - имя файла
В объекте "data" передается имя необходимого файла "file-name", а возвращается информация о файле: "file-name", "{{ProtocolCommand|file-size" }} - размер файла в байтах, "file-date" - дата/время последнего изменения файла, "file-md5" - контрольная сумма файла расчитанная по алгоритму MD5.
При добавлении файла в объекте "data" в поле "{{ProtocolCommand|file-data" передаются }} - данные файла, а . Кодируются в поле "file-md5" BASE- контрольная сумма файла расчитанная по алгоритму MD564.
Данные могут быть предварительно запакованы архиватором GZip (отключается в настройках весов){{ProtocolCommand|file-md5}} - контрольная сумма файла. Так же флаг использования компрессии можно предать Рассчитывается до кодировки данных в объекте "data": "useBASE-compress" : 1 или 064.
Далее данные кодируются {{ProtocolCommand|use-compress}} - использование компрессии данных в BASE-64GZip.
{{ProtocolCommand|"MultiPart"}} - блочный режим передачи данных. Использование нескольких пакетов при приеме/передаче файлов.
Стандартные пути к файлам:{{ProtocolCommand|"part-data-no"}} - номер текущего пакета при блочном приеме/передаче файлов. Отсчет с 0.
{{ProtocolCommand|"total-parts"}} - общее количество пакетов при блочном приеме/передаче файлов./Data/Images/ - картинки, используемые программой
./Data/Labels/ - шаблоны этикеток
Например: для получения файла-картинки имя файла должно быть таким {{ProtocolCommand|"file-name" : "./Data/MediaImages/ - звуки, используемые программойgoods.no.picture.png"}}.
В объекте {{ProtocolCommand|data}} передается имя необходимого файла {{ProtocolCommand|file-name}}, а возвращается информация о файле: {{ProtocolCommand|file-name}} {{ProtocolCommand|file-size}} - размер файла в байтах, {{ProtocolCommand|file-data}} - данные файла файла или части файла, {{ProtocolCommand|file-md5}} - контрольная сумма блока данных в поле {{ProtocolCommand|file-data}} до кодирования в BASE-64 рассчитанная по алгоритму MD5./Data/Lic/ - лицензии для программы
В объекте {{ProtocolCommand|data}} передается имя необходимого каталога {{ProtocolCommand|dir-name}}./Settings/ - настройки программы и экранные формы
При добавлении файла в объекте {{ProtocolCommand|data}} в поле {{ProtocolCommand|file-data}} передаются данные файла, а в поле {{ProtocolCommand|file-md5}} - контрольная сумма файла рассчитанная по алгоритму MD5 до кодирования в BASE-64../Exchange/Flags/ При передаче файла частями {{ProtocolCommand|file- флаги создаваемые программой md5}} передается только в результате событий на весахпоследнем пакете и содержит контрольную сумма всего файла.
Данные могут быть предварительно запакованы архиватором GZip (отключается в настройках весов).Так же флаг использования компрессии можно предать в объекте {{ProtocolCommand|"data": "use-compress"}} : ''1'' или ''0'' или ''true''/''false''./Exchange/Import/ При использовании блочной передачи файлов архиватором пакуется каждая часть отдельно. После паковки блока, данные кодируются в BASE- импортируемые данные64.
../Exchange/Log/ - протокол работы программыПример передачи файла:
.<source lang="json">--> "command" : "AddFile", "data" : { "file-name" : "./ExchangeData/LogImages/ProcessedFilesgoods.no.picture.png", "file-data" : "данные-файла", "file-md5" : "9caa7d76e8e08b56256594f39c13e7d8" } <-- "response" : "Ok", "response-code" : 0</ - протоколы обработки успешно импортированных данныхsource>
При передаче/запросе больших файлов можно использовать передачу файлов частями (получение файлов более 16384 байт с весов всегда выполняется по частям).При передаче по частям необходимо в первом пакете использовать команду {{ProtocolCommand|AddFile}} и в объект данных {{ProtocolCommand|data}} добавить поля {{ProtocolCommand|"total-parts" : ''xxx''}} и {{ProtocolCommand|"part-data-no" : 0}}./Exchange/Log/BadFiles/ - протоколы обработки неуспешно импортированных данных
В поле {{ProtocolCommand|total-parts}} вместо ''xxx'' нужно передать общее количество частей файла../Exchange/Reports/ - отчеты, создаваемые программой
В поле {{ProtocolCommand|part-data-no}} передается номер текущего пакет. Начиная с '''0'''.
Запрос:Остальные части файла передаются с помощью команд {{ProtocolCommand|PartDataSended}}, а принимаются с помощью команд {{ProtocolCommand|PartDataReceived}}.
Поле {{ProtocolCommand|"commandMultiPart" : "GetFileInfo"1}} используется в ответе на команду передачи по частям.
"command" Т.е. последовательность следующая: "RemoveFile"
<source lang="json">--> Первая часть "command" : "AddFile", "data" : { "file-name" : "./Data/Images/goods.no.picture.png", "file-data" : "данные-файла", "part-data-no" : 0, "total-parts" : 5 } <-- "response" : "Ok", "response-code" : 0, "data" : { "part-data-no" : 0, "total-parts" : 5 }
"data" : { "file-name" : "./Data/Images/goods.no.picture.png" "file-data" : "данные-файла""use-compress" : 1}
Ответ-->Последующие части "command" :"PartDataSended", "data" : { "file-name" : "./Data/Images/goods.no.picture.png", "file-data" : "данные-файла", "part-data-no" : 3, "total-parts" : 5, "use-compress" : 1 } <-- "response" : "MultiPart", "response-code" : 1, "data" : { "part-data-no" : 3, "total-parts" : 5 } ...
-->Последняя часть "command" : "PartDataSended", "data" : { "file-name" : "./Data/Images/goods.no.picture.png", "file-data" : "данные-файла", "part-data-no" : 4, "total-parts" : 5, "use-compress" : 1, "file-md5" : "9caa7d76e8e08b56256594f39c13e7d8" } <-- "response" : "MultiPart", "response-code" : 1, "Okdata": { "part-data-no" : 4, "total-parts" : 5 }
"response-code" : 0 </source>
"data" : {
"file-name" : "./Data/Images/goods.no.picture.png",
"file-size" : "12332",
"file-md5" : "e455d2b43b6157b50e8f502ac77aad13"
}
==Выполнение команды весами==
Данная команда позволяет выполнить команды на весах.
{{Внимание|Данная команда пока не реализована.}}
Запрос:
<source lang="json"> "command" : "ExecuteCommand"</source>
Ответ:
<source lang="json"> "response" : "Ok"  "response-code" : 0</source>
==Очистка базы товаров и групп==
Данная команда позволяет полностью очистить базу товаров и групп перед загрузкой новых товаров и групп.
Данная '''Если данная команда должна быть передана передается после команды "{{ProtocolCommand|BeginUpdate"}}, то включается режим очистки данных при передаче товаров.'''
Если данная команда не передается, то включается режим обновления/добавления товаров.
Очистка данных производится только если добавляется хотя бы один товар.
 
'''Если данная команда передается отдельно от других команд, производится полная очистка базы товаров (удаляются все товары и группы).'''
Запрос:
<source lang="json"> "command" : "ClearGoodsAndGroups"</source>
Ответ:
<source lang="json"> "response" : "Ok" "response-code" : 0</source> ==Добавление товаров, обновление или удаление товаров и групп товаров==Данные команды служат для изменение базы товаров в весах.  
"response-code" : 0Перед использование данных команд, необходимо передать на весы команду {{ProtocolCommand|BeginUpdate}}, а по окончании работы с товарами передается команда {{ProtocolCommand|EndUpdate}}. При необходимости очистки базы товаров на весах, между передачами команд {{ProtocolCommand|BeginUpdate/EndUpdate}}, так же необходимо передать команду {{ProtocolCommand|ClearGoodsAndGroups}}.
При использовании команд обновления ({{ProtocolCommand|UpdateGoods}} и {{ProtocolCommand|UpdateGroups}}), если товара или группы нет в базе весов - товар или группа создаются и сообщение об ошибке не передается.
==Добавление товаровРазница между командами {{ProtocolCommand|UpdateХХХ}} и {{ProtocolCommand|AddXXX}} заключается в минимальном наборе параметров, которые необходимо передаются на весы, что бы не возникло ошибки при приеме команды. Так для для команды {{ProtocolCommand|AddGoods}} необходимо передать: номер товара, название товар, обновление группу-владелец и цену. Для команды {{ProtocolCommand|UpdateGoods}}: только номер товара. Если при использовании команд удаления ({{ProtocolCommand|RemoveGoods}} и {{ProtocolCommand|RemoveGroups}}) товар или группа не найден - передается ошибка '''''товар не найден'''''. В объекте {{ProtocolCommand|data}} передаются все необходимые параметры товара или группы. Команды {{ProtocolCommand|Remove...}} обрабатываются в последнюю очередь. Т.е. сначала производится очистка базы данных, далее производится добавление товаров/групп и потом удаление товаров /групп.  {{Внимание2|Параметры {{ProtocolCommand|goods-picture-bytes}} и групп {{ProtocolCommand|group-picture-bytes}} являются устаревшими и не рекомендованы к использованию. Используете параметры передающие имена файлов-картинок и загружайте файлы картинок отдельно. Это позволяет более экономично использовать дисковое пространство и использовать будущие расширения протокола весов.}}   В версиях ПО старше '''1.0.2.22 сборка 4168''' добавлена возможность групповой передачи товаров. Для этого список товаров==загружается в поле {{ProtocolCommand|goods-list}}.  *Поля данных товара: Данные команды служат {{ProtocolCommand|goods-no}} - номер товара. '''Номер должен быть уникален.''' Поиск товара при добавлении/обновлении ведется по этому полю. {{ProtocolCommand|goods-add-code}} - дополнительный номер товар. Может использоваться при формировании штрих-кода товара. {{ProtocolCommand|goods-display-number}} - дополнительный номер товара. Данный номер можно вывести на кнопку товара. По данному номеру возможно сортировать товары внутри группы. {{ProtocolCommand|goods-name}} - название товара для изменение базы товаров в весахпечати на этикетке.
{{ProtocolCommand|goods-name-2}} - второе название товара для печати на этикетке.
Перед использование данных команд, необходимо передать {{ProtocolCommand|goods-full-name}} - название товара для вывода на весы команду "BeginUpdate", а по окончании работы с товарами передается команда "EndUpdate"экранную кнопку товара. При необходимости очистки базы товаров на весах, между передачами команд "BeginUpdate/EndUpdate"Если данное поле не задано, так же необходимо передать команду "ClearGoodsAndGroups"значение берется из поля {{ProtocolCommand|goods-name}}.
При использовании команд обновления ("UpdateGoods" и "UpdateGroups"){{ProtocolCommand|goods-full-name-2}} - второе название товара для вывода на экранную кнопку товара. Если данное поле не задано, если товара или группы нет в базе весов значение берется из поля {{ProtocolCommand|goods-name- товар или группа создаются и сообщение об ошибке не передается2}}.
Разница между командами "UpdateХХХ{{ProtocolCommand|goods-price}} - цена товара. Можно передавать как строку: '''''" и "AddXXX" заключается в минимальном наборе параметров, которые необходимо передаются на весы, что бы не возникло ошибки при приеме команды123. Так для для команды 55"AddGoods" необходимо передать: номер товара''''', название товар, группу-владелец и цену. Для команды "UpdateGoods"можно как число: только номер товара123.55
Если {{ProtocolCommand|goods-dep}} - отдел товара. Используется как префикс при использовании команд удаления ("RemoveGoods" и "RemoveGroups") товар или группа не найден формировании штрих-кода товара, если так задано в структуре штрих- передается ошибка "товар не найден"кода.
В объекте "data" передаются все необходимые параметры {{ProtocolCommand|goods-barcode}} - штрих-код товара (для режима прайс-чекера) или группыописание структуры штрих-кода, если номер структуры равен 200. Для версии 1.0.2.21 и старше.
Команды "Remove..." обрабатываются в последнюю очередь. Т.е. сначала производится очистка базы дынных, далее производится добавление товаров/групп и потом удаление товаров/групп{{ProtocolCommand|goods-barcode-type}} - номер структуры штрих-кода товара.
{{ProtocolCommand|goods-barcode-struct}} - номер структуры штрих-кода товара для версии 1.0.2.21 и старше.
Поля данных {{ProtocolCommand|goods-action}} - признак акционности (скидка) товара:(используется для вывода на кнопке товара специальной картинки).
"{{ProtocolCommand|goods-no" is- номер товара. Номер должен быть уникален. Поиск popular}} - признак популярности товара при добавлении/обновлении ведется по этому полю(используется для вывода этих товаров в отдельное поле на форме выбора товаров).
"{{ProtocolCommand|goods-addice-code" percent}} - дополнительный номер товарпроцент '''''ледяной глазури''''' в весе товара. Может использоваться при формировании штрих-кода товараВ формате от '''''0.0''''' до '''''99.99'''''.
"{{ProtocolCommand|goods-displaylabel}} -number" - дополнительный номер товара. Данный номер можно вывести на кнопку товара. По данному номеру возможно сортировать товары внутри группы. "goods-name" - название товара для печати на этикеткешаблона этикетки.
"{{ProtocolCommand|goods-fulllabel2}} -name" номер 2- название товара для вывода на кнопку товара. Если данное поле не задано, значение берется из поля "goods-name"го шаблона этикетки.
"{{ProtocolCommand|goods-price" discount- цена товара. Можно передавать как строку: "123.55", можно как число: 123label}} - номер шаблона этикетки для печати скидочных товаров.55
"{{ProtocolCommand|goods-dep" discount- отдел товара. Используется при формировании штрихprice}} -кода товарацена со скидкой.
"{{ProtocolCommand|goods-barcodediscount-type" percent}} - тип структуры штрих-кода товарапроцент скидки.
"{{ProtocolCommand|goods-action" discount- признак акционности товараtype}} - тип скидки ('''''0''''' - нет скидки).
"{{ProtocolCommand|goods-islimit-popular" quantity}} - признак популярности товараограничение количества для вывода на этикетку при использовании скидок.
"{{ProtocolCommand|goods-iceowner-percent" group}} - процент "ледяной глазури" в весе группа-владелец товара.
"{{ProtocolCommand|goods-label" picture- номер шаблона этикеткиbytes}} - картинка товара (массив байт). Устаревший параметр. Не рекомендуется использовать данный параметр, используете {{ProtocolCommand|goods-picture-filename}}.
"{{ProtocolCommand|goods-label2" picture- номер шаблона 2filename}} -го этикеткиимя файла картинки товара.
"{{ProtocolCommand|goods-discountsecond-label" picture- номер шаблона этикетки filename}} - имя файла дополнительной картинки товара. Обычно используется для вывода на экран выводимый после печати скидочных товаровэтикетки.
"{{ProtocolCommand|goods-discountpacking-price" date}} - цена со скидкойдата/время паковки (формат: '''''dd-MM-yyyy hh:mm''''').
"{{ProtocolCommand|goods-discountproduced-type" date}} - тип скидки дата/время производства (0 формат: '''''dd- нет скидкиMM-yyyy hh:mm''''').
"{{ProtocolCommand|goods-ownervalid-group" date}} - группадата/время окончания срока годности (формат: '''''dd-владелец товараMM-yyyy hh:mm''''').
"{{ProtocolCommand|goods-picturesale-bytes" before- картинка date}} - дата/время окончания продажи товара (массив байтформат: '''''dd-MM-yyyy hh:mm'''''). Для версии 1.0.2.21 и старше.
"{{ProtocolCommand|goods-pictureshelf-filename" life}} - имя файла картинки товарасрок годности в днях. Если число отрицательно: в часах.
"{{ProtocolCommand|goods-secondweight-pictureunit}} -filename" - имя файла дополнительной картинки весовая единица товара.
"{{ProtocolCommand|goods-producedtare}} -date" - дата производствавес тары товара.
"{{ProtocolCommand|goods-shelfmessage-life" x}}               - срок годноститекстовые сообщения для печати на этикетке, где х номер строки текстового сообщения. Расширенные сообщения (номера с 6 и выше) введены начиная с сборки 4121.
// "goods-weightmessage-unit1" - весовая еденица товара.текстовое сообщение // "goods-message-2" - ингредиенты // "goods-message-3" - страна происхождения // "goods-message-4" - реклама // "goods-message-5" - данные для второго ШК // "goods-message-6" - пищевая ценность / энергетическая ценность // "goods-message-7" - условия хранения // "goods-message-8" - изготовлено // "goods-message-9" - срок годности // "goods-message-10" - изготовитель // "goods-message-11" - картинка для этикетки
"goods-tare" - вес тары товара.
"goods-message-x" - текстовые сообщения для печати на этикетке.
*Для успешного добавления товара необходимо передать как минимум следующие поля:
Для успешного добавления товара необходимо передать как минимум следующие поля:{{ProtocolCommand|goods-no}}, {{ProtocolCommand|goods-name}}, {{ProtocolCommand|goods-price}},
"goods-no", "goods-name", "goods-price",
*Формат дат: '''''dd.MM.yyyy hh:mm'''''
Формат даты производства: "dd.MM.yyyy hh:mm"
*В поле {{ProtocolCommand|goods-picture-filename}} и {{ProtocolCommand|goods-second-picture-filename}} передается имя файла картинки для товара или группы. Указанный файл должен присутствовать в каталоге {{Путь к файлу|./Data/Images/}}. Можно располагать файлы в подкаталогах.
В поле "goods-picture-filename" и "goods-second-picture-filename" передается имя файла картинки для товара или группы. Указанный файл должен присутсвовать *Данные могут быть предварительно запакованы архиватором GZip (отключается в каталоге "настройках весов)./Data/Pictures/". Можно располагать файлы Так же флаг использования компрессии можно предать в подкаталогахобъекте {{ProtocolCommand|data: use-compress}} : 1 или 0.
Данные могут быть предварительно запакованы архиватором GZip (отключается в настройках весов). Так же флаг использования компрессии можно предать :Далее данные кодируются в объекте "data": "useBASE-compress" : 1 или 064.
Далее данные кодируются в BASE-64.
*Срок годности товара имеет следующие значение:
Срок '''''0''''' - срок годности товара имеет следующие значение:не задан
0 '''''-х''''' - срок годности не задануказан часах
-'''''х ''''' - срок годности указан часахв днях
х - срок годности указан в днях
*Поля {{ProtocolCommand|goods-message-x}} служат для передачи дополнительной текстовой информации, печатаемой на этикетке.
Поля "goods-message-x" служат для передачи дополнительной текстовой информации, печатаемой на этикетке.:Перечень соответствия сообщений и элементов шаблона этикетки:
Перечень соответсвия сообщений и элементов шаблона этикетки:{{ProtocolCommand|goods-message-1}} - текстовое сообщение
":{{ProtocolCommand|goods-message-1" 2}} - текстовое сообшениеингредиенты
":{{ProtocolCommand|goods-message-2" 3}} - ингридиентыстрана происхождения
":{{ProtocolCommand|goods-message-3" 4}} - страна происхожденияреклама
"goods-message-4" - реклама
*Поля данных группы:
Поля данных {{ProtocolCommand|group-no}} - номер группы:.
"{{ProtocolCommand|group-no" name}} - номер название группы.
"{{ProtocolCommand|group-name" picture- название filename}} - имя файла картинки группы.
"{{ProtocolCommand|group-second-picture-filename" }} - имя файла второй картинки группы. Используется для вывода на экраны товаров.
"{{ProtocolCommand|group-picture-bytes" }} - картинка товара (массив байт). Устаревший параметр. Не рекомендуется использовать данный параметр, используете {{ProtocolCommand|group-picture-filename}}.
"{{ProtocolCommand|group-owner-group" }} - номер группы-владельца.
*Для успешного добавления группы необходимо передать как минимум следующие поля:
"{{ProtocolCommand|group-no"}}, "{{ProtocolCommand|group-name"}}
Запрос:
<source lang="json"> "command" : "AddGoods" "command" : "UpdateGoods" "command" : "RemoveGoods" "command" : "AddGroups" "command" : "UpdateGroups" "command" : "RemoveGroups"</source> Ответ:
<source lang="commandjson"> "response" : "UpdateGoodsOk" "response-code" : 0</source>
"command" : "RemoveGoods"===Весовые типы товаров (Weight Unit)===
{| class="command" : "AddGroupswikitable"|-! Код !! Тип !! Название|-| 0 || 50g || 50 грамм|-| 1 || G || грамм|-| 2 || 10g || 10 грамм|-| 3 || 100g || 100 грамм|-| 4 || Kg || килограмм|-| 5 || Oz || унция|-| 6 || Pb || фунт|-| 7 || 500g || 500 грамм|-| 8 || 600g || 600 грамм|-| 9 || PSCg || 50 грамм|-| 10 || PSCKg || штучный грамм|-| 11 || PSCOz || штучный килограмм|-| 12 || PSCg || штучная унция|-| 13 || PSCLb || штучный фунт|}
"command" ===Типы штрихкодов товаров (Barcode Type)===  Сокращения используемые в таблице: "UpdateGroups" '''''D''''' - отдел '''''L''''' - № товара '''''I''''' - код магазина '''''P''''' - цена '''''Q''''' - вес '''''CRC''''' - контрольная сумма
"command" : "RemoveGroups"
Ответ:
{| class="response" : "Okwikitable"|-! Код !! Тип !! Содержание !! Примечание|-| 0 || EAN13 || DD(2) IIIIIIIIII(10) CRC(1) |||-| 1 || EAN13 || DD(2) IIIIII(6) PPPP(4) CRC(1) |||-| 2 || EAN13 || DD(2) IIIII(5) PPPPP(5) CRC(1) |||-| 3 || EAN13 || DD(2) IIII(4) PPPPPP(6) CRC(1) |||-| 4 || EAN13 || DD(2) III(3) PPPPPPP(7) CRC(1) |||-| 5 || EAN13 || DD(2) IIIIII(6) Q.QQQ(4) CRC(1) |||-| 6 || EAN13 || DD(2) IIIIII(6) QQ.QQ(4) CRC(1) |||-| 7 || EAN13 || DD(2) IIIII(5) QQ.QQQ(5) CRC(1) |||-| 8 || EAN13 || DD(2) IIIII(5) QQQQ.Q(5) CRC(1) |||-| 9 || EAN13 || DD(2) IIIII(5) QQQQQ(5) CRC(1) |||-| 10 || EAN13 || 20(2) IIIIIIIIII(10) CRC(1) |||-| 11 || EAN13 || 21(2) IIIIII(6) PPPP(4) CRC(1) |||-| 12 || EAN13 || 22(2) IIIII(5) PPPPP(5) CRC(1) |||-| 13 || EAN13 || 23(2) IIII(4) PPPPPP(6) CRC(1) |||-| 14 || EAN13 || 24(2) III(3) PPPPPPP(7) CRC(1) |||-| 15 || EAN13 || 25(2) IIIIII(6) Q.QQQ(4) CRC(1) |||-| 16 || EAN13 || 26(2) IIIIII(6) QQ.QQ(4) CRC(1) |||-| 17 || EAN13 || 27(2) IIIII(5) QQ.QQQ(5) CRC(1) |||-| 18 || EAN13 || 28(2) IIIII(5) QQQQ.Q(5) CRC(1) |||-| 19 || EAN13 || EAN13, 29(2) IIIII(5) QQQQQ(5) CRC(1) |||-| 20 || - || Не печатать штрихкод |||-| 21 || EAN13 || D(1) IIIIIII(7) PPPP(4) CRC(1) |||-| 22 || EAN13 || D(1) IIIIII(6) PPPPP(5) CRC(1) |||-| 23 || EAN13 || D(1) IIIII(5) PPPPPP(6) CRC(1) |||-| 24 || EAN13 || D(1) IIII(4) PPPPPPP(7) CRC(1) |||-| 25 || EAN13 || D(1) IIIIIII(7) Q.QQQ(4) CRC(1) |||-| 26 || EAN13 || D(1) IIIIIII(7) QQ.QQ(4) CRC(1) |||-| 27 || EAN13 || D(1) IIIIII(6) QQ.QQQ(5) CRC(1) |||-| 28 || EAN13 || D(1) IIIIII(6) QQQQ.Q(5) CRC(1) |||-| 29 || EAN13 || D(1) IIIIII(6) QQQQQ(5) CRC(1) |||-| 30 || EAN13+5 || D(1) IIIIII(6) PPPPP(5) QQ.QQQ(5) CRC(1) || Не поддерживание (введен для совместимости)|-| 31 || EAN13+5 || D(1) IIIIII(6) PPPPP(5) QQQQ.Q(5) CRC(1) || Не поддерживание (введен для совместимости)|-| 32 || EAN13+5 || D(1) IIIIII(6) PPPPP(5) QQQQQ(5) CRC(1) || Не поддерживание (введен для совместимости)|-| 33 || EAN13+5 || D(1) IIIIII(6) PPPPP(5) QQ.QQQ(5) CRC(1) || Не поддерживание (введен для совместимости)|-| 34 || EAN13+5 || D(1) IIIIII(6) PPPPP(5) QQQQ.Q(5) CRC(1) || Не поддерживание (введен для совместимости)|-| 35 || EAN13+5 || D(1) IIIIII(6) PPPPP(5) QQQQQ(5) CRC(1) || Не поддерживание (введен для совместимости)|-| 36 || EAN18 || D(1) LLLLLL(6) IIII(4) RR(2) QQ.QQQ(5) || Не поддерживание (введен для совместимости)|-| 37 || EAN18 || D(1) LLLLLL(6) IIII(4) RR(2) QQQQ.Q(5) || Не поддерживание (введен для совместимости)|-| 38 || EAN18 || D(1) LLLLLL(6) IIII(4) RR(2) QQQQQ(5) || Не поддерживание (введен для совместимости)|-| 50 || EAN8 || IIIIIII(7) CRC(1) || Не поддерживание (введен для совместимости)|-| 51 || EAN8 || D(1) IIIIII(6) CRC(1) || Не поддерживание (введен для совместимости)|-| 52 || EAN8 || DD(2) IIIII(5) CRC(1) || Не поддерживание (введен для совместимости)|-| '''99...119''' || EAN13 || Пользовательские штрихкоды || Тип ШК задается в структуре пользовательского кода начиная с версии 1.0.2.21|-| '''200''' || || Пользовательский штрихкод, индивидуальный для каждого товара || Тип ШК задается в данных каждого товара индивидуально с версии 1.0.2.23|}
"response-code" : 0Изменение пользовательских ШК описано {{Описано в разделе|Настройка_пользовательского_штрихкода}}.
==Добавление или связывание шаблонов этикеток==
Данная команда служат для передачи на весы шаблонов этикеток и установки связи между именами файлов шаблонов этикеток и номерами этикеток, которые используются в параметрах товаров.
При установке связи между именем файла шаблона этикетки, необходимо предварительно загрузить файл на весы в каталог {{Путь к файлу|./Data/Labels}}.
Если файл отсутвует отсутствует - связь не будет установлена.
В случае передачи данных шаблона в команде имя файла генерируется автоматически.
Перед использование данной команды, необходимо передать на весы команду "{{ProtocolCommand|BeginUpdate"}}, а по окончании работы с товарами передается команда "{{ProtocolCommand|EndUpdate"}}. Можно использовать эти команду в едином цикле с обновление информации о товарах.
Данные шаблонов, если передаются прямо в команде, могут быть предварительно запакованы архиватором GZip (отключается в настройках весов).
Так же флаг использования компрессии можно предать в объекте {{ProtocolCommand|"data": "use-compress" }} : 1 или 0.
Далее данные кодируются в BASE-64.
Запрос:
<source lang="json"> "command" : "AddLabel"</source>
Ответ:
<source lang="json"> "response" : "Ok"  "response-code" : 0</source>
Поля данных этикетки:
"{{ProtocolCommand|label-no" }} - номер шаблона этикетки.
"{{ProtocolCommand|label-filename-format" }} - имя файла c форматом шаблона этикетки. Файл должен находится в каталоге {{Путь к файлу|./Data/Labels}}.
"{{ProtocolCommand|label-filename-map" }} - имя файла с задним фоном шаблона этикетки. Файл должен находится в каталоге {{Путь к файлу|./Data/Labels}}.
"{{ProtocolCommand|label-format-bytes" }} - данные формата шаблона этикетки (массив байт).
"{{ProtocolCommand|label-map-bytes" }} - данные заднего фона шаблона этикетки (массив байт).
"{{ProtocolCommand|label-filename" }} - номер группы-владельца. Только для использования с весами LS215.
"{{ProtocolCommand|label-bytes" }} - данные шаблона этикетки (массив байт). Только для использования с весами LS215.
"{{ProtocolCommand|use-compress" }} - флаг использования компрессии данных
==Изменение номера и названия магазина==
Возможна передача до 4-х строк названия магазина.
Перед использование данной команды, необходимо передать на весы команду "{{ProtocolCommand|BeginUpdate"}}, а по окончании работы передается команда "{{ProtocolCommand|EndUpdate"}}. Можно использовать эти команду в едином цикле с обновление информации о товарах.
Запрос:
<source lang="json"> "command" : "AddStoreParams"</source> Ответ: <source lang="json"> "response" : "Ok" "response-code" : 0</source>  Поля данных этикетки: {{ProtocolCommand|store-no}} - номер магазина. {{ProtocolCommand|store-name-1}} - название магазина строка 1  {{ProtocolCommand|store-name-2}} - название магазина строка 2  {{ProtocolCommand|store-name-3}} - название магазина строка 3  {{ProtocolCommand|store-name-4}} - название магазина строка 4 ==Настройки весов==Данные команды служат для получения списка настроек весов, а так же получения или изменения самих значений настроек на весах.  При передаче данных команд необходимо передавать пароль для изменения настроек (этот пароль используется так же для входа в режим настроек на весах). При передаче пароля рекомендуется передавать MD5 сумму пароля в поле {{ProtocolCommand|password}} и значение {{ProtocolCommand|"crypted-password": true}}. Если пароль передается в открытом виде, что не рекомендуется по соображениям безопасности, то нужно передать значение {{ProtocolCommand|"crypted-password": false}}.  === Получение списка настроек === Команда для получения настроек с весов {{ProtocolCommand|GetSettingsList}}: <source lang="json">{ "id": 4, "command": "GetSettingsList", "data": { "application": "PyR1SensorDriver", "version": "0.0.1.0", "version-build": "1", "compile-date": "26.07.2022", "password": "11b9842e0a271ff252c1903e7132cd68", "crypted-password": true, }}</source>
Ответ:
<source lang="json">{ "id": 4, "response" : "Ok", "response-code": 0 "data": { "application": "R1 Sensor.", "compile-date": "26-07-2022", "version": "1.0.2.22", "version-build": 4153,  "settings-read-list": [{"settings-name": "enDebug", "settings-type": 1, "settings-type-name": "bool", "settings-value": true}, {"settings-name": "enLog", "settings-type": 1, "settings-type-name": "bool", "settings-value": true}], "settings-write-list": [{"settings-name": "enDebug", "settings-type": 1, "settings-type-name": "bool", "settings-value": true}, {"settings-name": "enLog", "settings-type": 1, "settings-type-name": "bool", "settings-value": true}] }}</source> Возвращаемые значения: {{ProtocolCommand|settings-read-list}} - Список настроек доступных для чтения. {{ProtocolCommand|settings-write-list}} - Список настроек доступных для изменения. В списках возвращается перечень настроек со следующими параметрами: {{ProtocolCommand|settings-name}} - название настройки. Используется для чтения и изменения. {{ProtocolCommand|settings-type}} - числовое представление типа значения настройки. {{ProtocolCommand|settings-type-name}} - название типа значения настройки. {{ProtocolCommand|settings-value}} - текущее значение настройки.  === Получение значения настроек === В поле {{ProtocolCommand|settings-name}} передается название необходимого параметра настроек, а поле {{ProtocolCommand|settings-valuе}} само значение. Команда для получения значений настроек с весов {{ProtocolCommand|GetSettings}}: <source lang="json">{ "id": 4, "command": "GetSettings", "data": { "application": "PyR1SensorDriver", "version": "0.0.1.0", "version-build": "1", "compile-date": "26.07.2022", "password": "11b9842e0a271ff252c1903e7132cd68", "crypted-password": true, "settings-name": "enImageRecognition" }} </source>
"response-code" Ответ: 0
<source lang="json">
{
"id": 4,
"response": "Ok",
"response-code": 0
"data": {
"application": "R1 Sensor.",
"compile-date": "26-07-2022",
"version": "1.0.2.22",
"version-build": 4153
Поля данных этикетки "settings-name":"enImageRecognition", "settings-value": false, }}</source> Для получения нескольких настроек одновременно можно при передаче использовать список c названиями настроек.Для этого необходимо записать имена настроек в список {{ProtocolCommand|items-list}}. Значения так же возвращаются в списке {{ProtocolCommand|items-list}}. <source lang="json">{ "id": 18, "command": "GetSettings", "data": { "application": "PyR1SensorDriver", "version": "0.0.1.0", "version-build": "1", "compile-date": "26.07.2022", "password": "11b9842e0a271ff252c1903e7132cd68", "crypted-password": true, "items-list": [{"settings-name": "enImageRecognition"}, {"settings-name": "enDebug"}] }}</source> Ответ: <source lang="json">{ "id": 18, "response": "Ok", "response-code": 0 "data": { "application": "R1 Sensor.", "compile-date": "26-07-2022", "version": "1.0.2.22", "version-build": 4153, "items-list": [{"settings-name": "enImageRecognition", "settings-value": "true"}, {"settings-name": "enDebug", "settings-value": "true"}] },}</source>  === Изменение значения настроек === Команда для изменения настроек на весах: {{ProtocolCommand|SetSettings}} При изменении настроек используется тоже имя настройки, что и при получении значения настройки. В поле {{ProtocolCommand|settings-name}} передается название необходимого параметра настроек, а поле {{ProtocolCommand|settings-valuе}} само значение. <source lang="json">{ "id": 18, "command": "SetSettings", "data": { "application": "PyR1SensorDriver", "version": "0.0.1.0", "version-build": "1", "compile-date": "26.07.2022", "password": "11b9842e0a271ff252c1903e7132cd68", "crypted-password": true, "settings-name": "enImageRecognition", "settings-value": "true" }}</source>  Ответ: <source lang="json">{ "id": 18, "response": "Ok", "response-code": 0 "data": { "application": "R1 Sensor.", "compile-date": "26-07-2022", "version": "1.0.2.22", "version-build": 4153 },}</source>  Для изменения нескольких настроек одновременно можно при передаче использовать список.Для этого необходимо записать настройки в список {{ProtocolCommand|items-list}} <source lang="json">{ "id": 18, "command": "SetSettings", "data": { "application": "PyR1SensorDriver", "version": "0.0.1.0", "version-build": "1", "compile-date": "26.07.2022", "password": "11b9842e0a271ff252c1903e7132cd68", "crypted-password": true, "items-list": [{"settings-name": "enImageRecognition", "settings-value": "true"}, {"settings-name": "enDebug", "settings-value": "true"}] }}</source> В ответе на данную команду присутствует список со статусами изменения каждой из переданных настроек: <source lang="json">{ "id": 18, "response": "Ok", "response-code": 0 "data": { "application": "R1 Sensor.", "compile-date": "26-07-2022", "version": "1.0.2.22", "version-build": 4153 "items-list": [{"enImageRecognition": True}, {"enDebug": True}] }}</source> ==Перезапуск системы распознавания товаров== Данная команда служат для перезапуска системы распознавания товаров после изменения настроек системы.  При передаче данной команды необходимо передавать пароль для изменения настроек (этот пароль используется так же для входа в режим настроек на весах).  При передаче пароля рекомендуется передавать MD5 сумму пароля в поле {{ProtocolCommand|password}} и значение {{ProtocolCommand|"crypted-password": true}}.
Если пароль передается в открытом виде, что не рекомендуется по соображениям безопасности, то нужно передать значение {{ProtocolCommand|"storecrypted-nopassword" - номер магазина: false}}.
"store-name-1 - название магазина строка 1
<source lang="storejson">{ "id": 6, "command": "RestartImageRecognitionSystem", "data": { "application": "PyR1SensorDriver", "version": "0.0.1.0", "version-namebuild": "1", "compile-2 date": "26.07.2022", "password": "11b9842e0a271ff252c1903e7132cd68", "crypted- название магазина строка 2 password": true }}</source>
"store-name-3 - название магазина строка 3 Ответ:
<source lang="storejson">{ "id": 6, "response": "Ok", "response-namecode": 0 "data": { "application": "R1 Sensor.", "compile-4 date": "26- название магазина строка 4 07-2022", "version": "1.0.2.22", "version-build": 4153 },}</source>
=Перечень ошибок=
При возникновении ошибок в ответе содержится текстовый ответ и код, сообщающие о возникшей ошибке.
Так же в объект "{{ProtocolCommand|data" }} добавляется поле с расширенным описание ошибки "{{ProtocolCommand|response-ext"}}.
При работе с весами возможны следующие ошибки:
Ошибок нет, команда выполнена успешно:
<source lang="json"> "response" : "Ok"   "response-code" : 0  "data" </source>
Истек таймаут соединения при установке связи или во время работы:
<source lang="json"> "response" : "Abort"  "response-code" : -1</source>
Ошибка данных команды или некорректные данные:
В поле "response-ext" : "Error"возвращается расширенное описание ошибки.
<source lang="json"> "response" : "Error" "response-code" : -2 "data" : { "response-ext" : "Unknown command" }</source>
Ошибка выполнения команды (например: при установке даты/времени):
В поле "response-ext" : "ExecError"возвращается расширенное описание ошибки.
<source lang="json"> "response" : "ExecError" "response-code" : -3 "data" : { "response-ext" : "Error sync date/time (-1)." }</source>
=Техническая поддержка=
Для получения технической поддержки можно обращаться:
 
по телефону: +7 (812) 640-2965 доб. 331 или 332
 
в сети интернет: http://www.aclas.ru/
 
по электронной почте: e-support@aclas.ru
 
В случае обнаружения ошибок или недостатков, просьба сообщать о них техническим специалистам ЗАО "ЭТИМ".[[Категория: LS515]][[Категория: Весы]][[Категория: Интеграция]]

Навигация