IronLogic СКУД

Адаптеры & Конвертеры => Z-397 WEB => Тема начата: alteksa от 30 Ноября 2016, 02:05

Название: Вопрос по SDK
Отправлено: alteksa от 30 Ноября 2016, 02:05
Доброго времени суток!
Тестируем Ваш SDK на указанном конвертере Z-397 WEB с подключенными к нему Matrix II Net <- Matrix II. В режиме сервер к нему удается подключиться, а вот как работать с ним в режиме "клиент"?
При смене типа конвертера на IPS(клиент), какие параметры следует передавать в ZG_Cvt_Open?

Заранее спасибо!
Название: Re: Вопрос по SDK
Отправлено: gsa от 30 Ноября 2016, 11:01
Добрый день

Установить в структуре ZG_CVT_OPEN_PARAMS:
nType = ZP_PORT_IPS;
pszName = "tcp-порт\внешний ip-адрес конвертера\серийный номер конвертера"; Например "25000\193.232.119.17\50010".

ip-адрес и с/н можно получить с помощью детектора устройств, т.е. с помощью функции ZP_DD_SetNotification, в которую нужно передать список tcp-портов для прослушки (параметры aIps и nIpsCount в структуре ZP_DD_NOTIFY_SETTINGS), затем получить список портов конвертеров в режиме "клиент" с помощью функции ZP_FindNextDevice и ZP_SearchDevices с флагом nFlags = ZP_SF_IPS в структуре ZP_SEARCH_PARAMS.
Название: Re: Вопрос по SDK
Отправлено: Alexander Vasilyev от 27 Сентября 2017, 15:47
Добрый день!
У меня есть аналогичный вопрос, но со своей спецификой.
Пусть, имеем оборудование Z-397 Web с конфигурацией:
Copyright 2012 RF Enabled
http://www.ironlogic.ru
For help, try the "help" command.
> cfg
CONFIG.CFG:
[INFO] SERIAL_NUMBER=3***9
[INFO] FW_VERSION=3.0.53(Nov 14 2016 12:13:20)
[COMMON] MODE=SERVER
[COMMON] AUTH_KEY=C******1
[NETWORK] USE_DHCP=0
[NETWORK] LOCAL_IP=192.168.15.186
[NETWORK] NETMASK=255.255.255.0
[NETWORK] GATEWAY=192.168.0.1
[NETWORK] DNS=192.168.15.5
[NETWORK] NODATA_TIMEOUT=0
[WEB] USE_PROXY=0
[WEB] PROXY_ADDR=192.168.1.1
[WEB] PROXY_PORT=3128
[WEB] SERVER=hw.guardsaas.com
[WEB] PORT=80
[WEB] PATH=/data.php
[WEB] CONNECT_PERIOD=10
[WEB] PASSWORD=ab*********3
[WEB] RESCAN_PERIOD=30
[WEB] MAX_EVENTS=10
[TCP_SERVER] LINE1_PORT=1000
[TCP_SERVER] LINE1_ALLOWED_IP=255.255.255.255
[TCP_SERVER] LINE2_PORT=10
[TCP_SERVER] LINE2_ALLOWED_IP=255.255.255.255
[TCP_CLIENT] LINE1_REMOTE_ADDR=192.168.15.241
[TCP_CLIENT] LINE1_REMOTE_PORT=1000
[TCP_CLIENT] LINE2_REMOTE_ADDR=192.168.15.241
[TCP_CLIENT] LINE2_REMOTE_PORT=10
[RS485] LINE1_BAUD=19200
[RS485] LINE1_PARITY=NONE
[RS485] LINE2_BAUD=19200
[RS485] LINE2_PARITY=NONE
[RS485] RING_MODE=0
>

Помогите, пожалуйста, подключиться к устройству программно. Мой код ниже выполняется с ошибкой:
ZG_CVT_INFO rInfo = new ZG_CVT_INFO();
rInfo.nType = ZG_CVT_TYPE.ZG_CVT_Z397_WEB;
rInfo.nMode = ZG_GUARD_MODE.ZG_GUARD_ADVANCED;

ZG_CVT_OPEN_PARAMS rOp = new ZG_CVT_OPEN_PARAMS();
rOp.nCvtType = ZG_CVT_TYPE.ZG_CVT_Z397_WEB;
rOp.nPortType = ZP_PORT_TYPE.ZP_PORT_IP;
rOp.pszName = @"1000\192.168.15.186\3***9";

hr = ZGIntf.ZG_Cvt_Open(ref m_hCvt, ref rOp, rInfo);
if (hr < 0)
{
    Console.WriteLine("Ошибка ZG_Cvt_Open ({0}).", hr);
    Console.ReadLine();
    return;
}

С уважением, спасибо
Название: Re: Вопрос по SDK
Отправлено: gsa от 27 Сентября 2017, 15:59
Добрый день
Т.к. конвертер в режиме "Сервер", то имя порта должно быть в таком формате rOp.pszName = @"192.168.15.186:1000";
Название: Re: Вопрос по SDK
Отправлено: Alexander Vasilyev от 29 Сентября 2017, 16:46
Будьте любезны, объясните ситуацию.

Пусть, имеем оборудование Z-397 Web с конфигурацией:
Z397-WEB command shell.
Version 3.0.53[Nov 14 2016 12:13:33]
AVS LLC. +7(812)703-77-65, +7(495)787-70-66
Copyright 2012 RF Enabled
http://www.ironlogic.ru
For help, try the "help" command.
> cfg
CONFIG.CFG:
[INFO] SERIAL_NUMBER=34449
[INFO] FW_VERSION=3.0.53(Nov 14 2016 12:13:20)
[COMMON] MODE=WEB
[COMMON] AUTH_KEY=C******1
[NETWORK] USE_DHCP=0
[NETWORK] LOCAL_IP=192.168.15.245
[NETWORK] NETMASK=255.255.255.0
[NETWORK] GATEWAY=192.168.0.1
[NETWORK] DNS=192.168.15.5
[NETWORK] NODATA_TIMEOUT=0
[WEB] USE_PROXY=0
[WEB] PROXY_ADDR=192.168.1.1
[WEB] PROXY_PORT=3128
[WEB] SERVER=192.168.15.241
[WEB] PORT=80
[WEB] PATH=/Home/Interop
[WEB] CONNECT_PERIOD=10
[WEB] PASSWORD=ab974088d09d4dc3
[WEB] RESCAN_PERIOD=10
[WEB] MAX_EVENTS=10
[TCP_SERVER] LINE1_PORT=1000
[TCP_SERVER] LINE1_ALLOWED_IP=255.255.255.255
[TCP_SERVER] LINE2_PORT=10
[TCP_SERVER] LINE2_ALLOWED_IP=255.255.255.255
[TCP_CLIENT] LINE1_REMOTE_ADDR=192.168.15.241
[TCP_CLIENT] LINE1_REMOTE_PORT=1000
[TCP_CLIENT] LINE2_REMOTE_ADDR=192.168.15.241
[TCP_CLIENT] LINE2_REMOTE_PORT=10
[RS485] LINE1_BAUD=19200
[RS485] LINE1_PARITY=NONE
[RS485] LINE2_BAUD=19200
[RS485] LINE2_PARITY=NONE
[RS485] RING_MODE=0

На бэкенде по адресу http://192.168.15.241:80/Home/Interop я получаю:
HEADERS
Cache-Control: max-age=0
Content-Length: 181
Content-Type: multipart/form-data; boundary=18113960011
Host: 192.168.15.241
User-Agent: Z397WEB
Conection: close
x-ser-n: 034449
x-auth-key: C******1
x-fw-ver: 3.0.53
x-next-srv: 0

PARAMS
ALL_HTTP: HTTP_CACHE_CONTROL:max-age=0
HTTP_CONTENT_LENGTH:181
HTTP_CONTENT_TYPE:multipart/form-data; boundary=18113960011
HTTP_HOST:192.168.15.241
HTTP_USER_AGENT:Z397WEB
HTTP_CONECTION:close
HTTP_X_SER_N:034449
HTTP_X_AUTH_KEY:C*****1
HTTP_X_FW_VER:3.0.53
HTTP_X_NEXT_SRV:0

ALL_RAW: Cache-Control: max-age=0
Content-Length: 181
Content-Type: multipart/form-data; boundary=18113960011
Host: 192.168.15.241
User-Agent: Z397WEB
Conection: close
x-ser-n: 034449
x-auth-key: C*****1
x-fw-ver: 3.0.53
x-next-srv: 0

APPL_MD_PATH: /LM/W3SVC/1/ROOT
APPL_PHYSICAL_PATH: C:\SDK Guard\CSharp\Examples\SdkWebServer\
AUTH_TYPE:
AUTH_USER:
AUTH_PASSWORD:
LOGON_USER:
REMOTE_USER:
CERT_COOKIE:
CERT_FLAGS:
CERT_ISSUER:
CERT_KEYSIZE:
CERT_SECRETKEYSIZE:
CERT_SERIALNUMBER:
CERT_SERVER_ISSUER:
CERT_SERVER_SUBJECT:
CERT_SUBJECT:
CONTENT_LENGTH: 181
CONTENT_TYPE: multipart/form-data; boundary=18113960011
GATEWAY_INTERFACE: CGI/1.1
HTTPS: off
HTTPS_KEYSIZE:
HTTPS_SECRETKEYSIZE:
HTTPS_SERVER_ISSUER:
HTTPS_SERVER_SUBJECT:
INSTANCE_ID: 1
INSTANCE_META_PATH: /LM/W3SVC/1
LOCAL_ADDR: 192.168.15.241
PATH_INFO: /Home/Interop
PATH_TRANSLATED: C:\SDK Guard\CSharp\Examples\SdkWebServer\Home\Interop
QUERY_STRING:
REMOTE_ADDR: 192.168.15.245
REMOTE_HOST: 192.168.15.245
REMOTE_PORT: 49268
REQUEST_METHOD: POST
SCRIPT_NAME: /Home/Interop
SERVER_NAME: 192.168.15.241
SERVER_PORT: 80
SERVER_PORT_SECURE: 0
SERVER_PROTOCOL: HTTP/1.1
SERVER_SOFTWARE: Microsoft-IIS/10.0
URL: /Home/Interop
HTTP_CACHE_CONTROL: max-age=0
HTTP_CONTENT_LENGTH: 181
HTTP_CONTENT_TYPE: multipart/form-data; boundary=18113960011
HTTP_HOST: 192.168.15.241
HTTP_USER_AGENT: Z397WEB
HTTP_CONECTION: close
HTTP_X_SER_N: 034449
HTTP_X_AUTH_KEY: C*****1
HTTP_X_FW_VER: 3.0.53
HTTP_X_NEXT_SRV: 0

И массив данных (см. вложение).

(https://forum.ironlogic.ru/index.php?action=dlattach;topic=450.0;attach=152;image)
Хочется знать, как он расшифровывается/десериализуется. Какое он имеет отношение к структурам
ZG_CTR_EVENT
ZG_EC_SUB_EV
ZG_FIRE_SUB_EV
ZG_SECUR_SUB_EV
...

Спасибо
С уважением
Название: Re: Вопрос по SDK
Отправлено: gsa от 29 Сентября 2017, 17:03
Цитировать
На бэкенде по адресу http://192.168.15.241/Home/Interop я получаю бинарный пакет (см. вложение).

Как разработчик Sdk Guard, не могу пояснить. Дождитесь ответа от техподдержки или от разработчика web интерфейса. Sdk Guard не работает с web интерфейсом.
"ZG_CTR_EVENT" - это структура с информацией о 1 событии контроллера: первый параметр - тип события, второй (8байт) - данные события из памяти контроллера.
"ZG_EC_SUB_EV", "ZG_FIRE_SUB_EV", "ZG_SECUR_SUB_EV" - это подтипы событий "ZG_EV_ELECTRO_ON, ZG_EV_ELECTRO_OFF", "ZG_EV_FIRE_STATE", "ZG_EV_SECUR_STATE".
Название: Re: Вопрос по SDK
Отправлено: Alexander Vasilyev от 29 Сентября 2017, 17:14
Пакет получен он вашего устройства Z397 Web, которое сконфигурировано в режиме WEB.

Режим WEB-клиент. Цитата из документации
https://ironlogic.ru/il.nsf/htm/ru_z397web:

Цитировать
В режиме WEB-клиента конвертер обеспечивают управление и чтение событий контроллеров,
подключённых к нему по каналам RS485.Конвертер периодически соединяется по протоколу HTTP с
WEB сервером, при этом на сервер отправляются данные о состоянии контроллеров и события, а сервер
отправляет конвертеру команды для изменения параметров контроллеров. Данные передаются по
протоколу HTTP, что гарантирует их доставку к WEB серверу практически из любой локальной сети,
подключённой к интернет.

Как мне следует обрабатывать эти  данные?
Другими словами, как мне интегрироваться с собственным облаком?
С уважением
Название: Re: Вопрос по SDK
Отправлено: ПавелК от 11 Октября 2017, 18:31
Здравствуйте. Присоединюсь к вопросу ... нужно работать с контроллерами из собственного софта web based *nix, sdk только под винду  ? ...  На прошлом MIPS обещали в каком то виде web режим обнародовать  ...  или уже начинать изобретать велосипед ... самим низкоуровневый обмен реализовывать  ...
Название: Re: Вопрос по SDK
Отправлено: VassiL от 24 Января 2019, 16:43
Поддерживаю вопрос. Имеется несколько контроллеров Z-5R + Z-397 WEB.
Стоит задача интегрировать эту связку в наш локальный сервер на базе Raspberry Pi под Linux (делаем на нем облако), пишем на C++.
Программист попытался разобраться с описанием протокола. Говорит, в описании команд в документации имеются ошибки, запустить взаимодействие с контроллерами пока не получилось.
Вопрос, разобрался ли кто с работой этой связки под Linux? Что скажет производитель/разработчик? Нужен исходник под Linux.

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

Заранее спасибо откликнувшимся.

--
Василий
Название: Re: Вопрос по SDK
Отправлено: gsa от 24 Января 2019, 17:49
Здравствуйте. Sdk только под Windows. Для Linux можете использовать протокол http://posix.con.ru/wiki/Z397_IP и http://posix.con.ru/wiki/Z397_IP_Advanced_Mode
Про ошибки хотелось бы узнать подробнее.
С Z-5R Web и Matrix-II Wi-Fi можно работать по протоколу Web-JSON
https://ironlogic.ru/il_new.nsf/htm/ru_integration3
Название: Re: Вопрос по SDK
Отправлено: Aven от 28 Января 2019, 12:20
Не могу понять, а режима Web-JSON нет????
Название: Re: Вопрос по SDK
Отправлено: kill9fan от 06 Августа 2019, 19:48
Про ошибки хотелось бы узнать подробнее.

http://posix.ironlogic.ru/wiki/Z397_IP_Advanced_Mode#.D0.A0.D0.B0.D0.B1.D0.BE.D1.82.D0.B0_.D1.81_.D0.BA.D0.BE.D0.BD.D0.B2.D0.B5.D1.80.D1.82.D0.B5.D1.80.D0.BE.D0.BC
раздел "запрос списка контроллеров"

получить и декодировать список контроллеров на шине с конвертера в режиме advanced удаётся. Хотя ответ содержит 16 байт битовых полей, вместо ожидаемых 13 (как указано в документации)
Цитировать
12 байт отправлено
дамп отправки
[0->0x20]
[1->0xCA]
[2->0xCA]
[3->0xC2]
[4->0xCF]
[5->0xCC]
[6->0xCA]
[7->0xCA]
[8->0xCA]
[9->0xCA]
[10->0xCA]
[11->0xD]
Дамп сырого ответного пакета о контроллерах шины
[0->0x20]
[1->0x5E]
[2->0xDF]
[3->0xCF]
[4->0xCC]
[5->0xCB]
[6->0xCA]
[7->0xCA]
[8->0xCA]
[9->0xCA]
[10->0xCA]
[11->0xCB]
[12->0xCA]
[13->0xCA]
[14->0xCA]
[15->0xCA]
[16->0xCA]
[17->0xCA]
[18->0xCA]
[19->0xCA]
[20->0xCA]
[21->0xCA]
[22->0xCA]
[23->0xCA]
[24->0xCA]
[25->0xCA]
[26->0xCA]
[27->0xCA]
[28->0xCA]
[29->0xCA]
[30->0xCA]
[31->0xD]
unpacked packet`s body dump
[0x0->0xDE]
[0x1->0x15]
[0x2->0x5]
[0x3->0x6]
[0x4->0x0]
[0x5->0x0]
[0x6->0x0]
[0x7->0x0]
[0x8->0x1]     ---   на шине RS485 найден контроллер по адресу 0x2
[0x9->0x0]
[0xA->0x0]
[0xB->0x0]
[0xC->0x0]
[0xD->0x0]
[0xE->0x0]
[0xF->0x0]
[0x10->0x0]
[0x11->0x0]
[0x12->0x0]
[0x13->0x0]
[0x14->0x0]     == по докам это должен быть последний байт битовой карты адресов rs485
[0x15->0x0]
[0x16->0x0]
[0x17->0x0]

но вот например описание запроса инфо о конкретном контроллере не работает: присылается нечто, не содержащее полезной информации - копия моего запроса + нули

Дамп сырого ответного пакета о контроллере по адресу 0x2
[0->0x20]
[1->0x60]
[2->0xDF]
[3->0xCF]
[4->0xCB]
[5->0xCB]
[6->0xCB]
[7->0xC8]
[8->0xCA]
[9->0xCA]
[10->0xCA]
[11->0xCB]
[12->0xCA]
[13->0xCA]
[14->0xCA]
[15->0xCA]
[16->0xCA]
[17->0xCA]
[18->0xCA]
[19->0xCA]
[20->0xCA]
[21->0xCA]
[22->0xCA]
[23->0xCA]
[24->0xCA]
[25->0xCA]
[26->0xCA]
[27->0xCA]
[28->0xCA]
[29->0xCA]
[30->0xCA]
[31->0xD]
unpacked body dump
[0x0->0xE0]
[0x1->0x15]
[0x2->0x5]
[0x3->0x1]
[0x4->0x1]
[0x5->0x2]
[0x6->0x0]
[0x7->0x0]
[0x8->0x1]
[0x9->0x0]
[0xA->0x0]
[0xB->0x0]
[0xC->0x0]
[0xD->0x0]
[0xE->0x0]
[0xF->0x0]
[0x10->0x0]
[0x11->0x0]
[0x12->0x0]
[0x13->0x0]
[0x14->0x0]
[0x15->0x0]
[0x16->0x0]
[0x17->0x0]

тогда я сдампил то, что Demo.exe из СДК отправляет и получает с конвертора z-397 при попытке получения инфо по контроллеру с адресом 0x2
{ 0x20,0xc2,0x6c,0xc2,0xcf,0xcf,0xca,0xca,0xca,0xC8,0xCA,0x0d }

Полученный ответ (декодированное тело), похоже интерпретируется так:

[0x0->0x2D]  контр сумма ?
[0x1->0x14] длина тела  20 байт - да сходится.
[0x2->0x5]   лицензия
[0x3->0x5]  ид пакета
[0x4->0x49]  серийный номер
[0x5->0x5]     серийный номер   0x4905 = 18693 (как раз мой z5r-net)
[0x6->0x2]        адрес на шине rs485
[0x7->0x0]     
[0x8->0x25]      тип контроллера z5r-net
[0x9->0x6]        флаги?? непонятно - у меня должно быть наверное   touchMemory, 8k судя по демо.ехе
[0xA->0x2]      v.2.9  прошивка контроллера
[0xB->0x9]     v.2.9 прошивка контроллера
[0xC->0x0]
[0xD->0x6]
[0xE->0x8]
[0xF->0x19]          ... дальше наверное "адреса событий" но где - непонятно,
[0x10->0x1]
[0x11->0x0]      .... и что за лишние поля в ответе?
[0x12->0x4]
[0x13->0x2]       

но ведь оригинальная табличка из описания протокола рассказывает о чуть-чуть другом:
0x00 1 байт Контрольная сумма
0x01 1 байт 0x08 Длина пакета
0x02 1 байт 0x08 Номер лицензии
0x03 1 байт 0x01 Идентификатор пакета
0x04 1 байт 0x00 Код операции (0 - среди найденных, 1 - перепроверить этот сетевой адрес)
0x05 1 байт Сетевой адрес контроллера
0x06 2 байта 0x0000 Зарезервировано
0x08 1 байт Тип контроллера      0x24 - Matrix-II-Net      0x25 - Z5R-Net
0x09 1 байт араметры контроллера
    биты 0-1 - размер памяти (0x00 - 2Kb, 0x01 - 4Kb, 0x02 - 8Kb)
    бит 3 - карты кодируются по стандарту Wiegand
    бит 7 - есть новые события
    остальные биты зарезервированы
0x0A 2 байта  Версия ПО контроллера
0x0C 1 байт зарезервировано
0x0D 2 байта Адрес последнего записанного события
0x0F 2 байта Адрес последнего считанного события

посмотрел на это, ...ребутнул весь стенд, снова отправляю {0x20,0xc2,0x6c,0xc2,0xcf,0xcf,0xca,0xca,0xca,0xC8,0xCA,0x0d } и ничего :) видимо, demo.exe еще что-то предварительно инициализирует. Запускаю demo, закрываю, запускаю свою "размотку" , отправляю {0x20,0xc2,0x6c,0xc2,0xcf,0xcf,0xca,0xca,0xca,0xC8,0xCA,0x0d } и снова вижу ответ из 20 байт в теле (см. в начале).

не могу понять, то ли неполное/устаревшее описание протокола, то ли не вчитался и пропустил какой-то важный шаг - то ли то и другое вместе взятое..




Название: Re: Вопрос по SDK
Отправлено: gsa от 06 Августа 2019, 21:01
Протокол, описанный на http://posix.ironlogic.ru/ работает с лицензией №8, Sdk Guard по умолчанию работает с лицензией №5. Протоколы (точнее алгоритм упаковки/распаковки пакета) отличаются для разных лицензий. Попробуйте в Sdk в функцию ZG_Cvt_Open передать структуру ZG_CVT_OPEN_PARAMS с установленным параметром nLicN = 8.
Название: Re: Вопрос по SDK
Отправлено: kill9fan от 07 Августа 2019, 11:31
Цитировать
Попробуйте в Sdk в функцию ZG_Cvt_Open передать структуру ZG_CVT_OPEN_PARAMS с установленным параметром nLicN = 8.
а я не через sdk, надо на юниксе делать обмен с конвертерами по tcp в режиме advanced. Из SDK просто использовал демку, чтобы продампить трафик
...

перепроверил, кажется помогло, ответ по контроллеру 0х2 пришел более осмысленный. сейчас буду проверять
Название: Re: Вопрос по SDK
Отправлено: gsa от 07 Августа 2019, 11:56
а я не через sdk, надо на юниксе делать обмен с конвертерами по tcp в режиме advanced. Из SDK просто использовал демку, чтобы продампить трафик
Как я уже писал протоколы лицензии 8 (posix) и 5 (sdk) отличаются, поэтому дампить трафик Demo вряд ли полезно.

по дате непонятно: навряд ли 0xffff раскрывается в что-то осмысленное, но я так понимаю это что-то не очень нужное.
0xFFFF - без ограничений

сразу скажу что не помогло, битовое поле адресов на rs485 по прежнему 16 байт, а не 13.
Используйте первые 13 байт битового поля. Вроде бы нет проблемы.

Формат ответа детального инфо по контроллеру также недокументированный.
Каких данных не хватает?

может еще что-то надо для включения лицензии 8?
Нет, достаточно проверить/установить лицензию и запросить список контроллеров.
Название: Re: Вопрос по SDK
Отправлено: kill9fan от 07 Августа 2019, 12:13
выше я поправил свой ответ в момент когда вы уже отвечали на вопросы, sorry.
Итак да , установка и указание 8ой лицензии похоже помогла. Теперь ответ по пакетному запросу на детали о контроллере очень осмысленный и по документации

Цитировать
[0x0->0x2D]   Контрольная сумма
[0x1->0x14]   Длина пакета
[0x2->0x8]    Номер лицензии
[0x3->0x1]     Идентификатор пакета
[0x4->0x0]    Код операции (0 - среди найденных
[0x5->0x2]   Сетевой адрес контроллера
[0x6->0x5]             по смещению 0x06 будет возвращен двухбайтовый заводской номер контроллера 
[0x7->0x49]          по смещению 0x06 будет возвращен двухбайтовый заводской номер контроллера 
[0x8->0x25]  0x25 - Z5R-Net
[0x9->0x6]      флаги контроллера
[0xA->0x2]     версия прошивки 2.
[0xB->0x9]        версия прошивки .9
[0xC->0x0]         зарезервировано
[0xD->0x7]      Адрес последнего записанного события
[0xE->0x8]     Адрес последнего записанного события
[0xF->0x19]      Адрес последнего считанного события
[0x10->0x1]       Адрес последнего считанного события
[0x11->0x0]
[0x12->0x4]
[0x13->0x2]
единственный вопрос по последним трём смещениям - что это? сначала решил что это глюк  у меня в коде добавляет лишние 3 байта мусора, но судя по полю "длина пакета" = 0x14 все сходится, это часть ответа от конвертера


upd.:
и по флагам контроллера (смещение 0x09) - у меня там 0x6 = 110 (b) . В описании - биты 0..1 - размер памяти. ок, тут сходится 8к.
но что насчет бита №2 ? нечто о чем знать не обязательно (ведь зарезервировано..) или тоже какая-то полезная инфа?
Название: Re: Вопрос по SDK
Отправлено: gsa от 07 Августа 2019, 12:26
Цитировать
...
[0x11->0x0]
[0x12->0x4]
[0x13->0x2]
единственный вопрос по последним трём смещениям - что это?
Спрошу у разработчика и сообщу ответ.

и по флагам контроллера (смещение 0x09) - у меня там 0x6 = 110 (b) . В описании - биты 0..1 - размер памяти. ок, тут сходится 8к.
но что насчет бита №2 ? нечто о чем знать не обязательно (ведь зарезервировано..) или тоже какая-то полезная инфа?
0,1    Размер памяти (0x00 - 2Kb, 0x01 - 4Kb, 0x02 - 8Kb
2    Не активен режим x2 (0 -> активен)
3    Карты кодируются по стандарту Wiegand
4    Активен режим Join
5    Резерв
6    Устройство имеет два банка ключей
7    Есть новые события
Название: Re: Вопрос по SDK
Отправлено: gsa от 07 Августа 2019, 12:42
Цитировать
[0x9->0x6]      флаги контроллера
[0xA->0x2]     версия прошивки 2.
[0xB->0x9]        версия прошивки .9
[0xC->0x0]         зарезервировано
[0xD->0x7]      Адрес последнего записанного события
[0xE->0x8]     Адрес последнего записанного события
[0xF->0x19]      Адрес последнего считанного события
[0x10->0x1]       Адрес последнего считанного события
[0x11->0x0]
[0x12->0x4]
[0x13->0x2]
единственный вопрос по последним трём смещениям - что это? сначала решил что это глюк  у меня в коде добавляет лишние 3 байта мусора, но судя по полю "длина пакета" = 0x14 все сходится, это часть ответа от конвертера
0x0C    1    Резерв
0x0D    2    Адрес последнего записанного события
0x0F    2    Адрес последнего считанного события
0x11    1    Резерв
0x12    1    Флаги
Бит    Описание
0    Активен режим Join
1    Активен режим x2
2    Поддержка режимов блокировки
3    Две временные зоны при одном банке DualZone
4    Поддержка сдвоенных карт
5    Поддержка нового запроса (команда 0x01 Универсальный запрос состояния Ext Ask)
6    Антипассбак
7    bigTime - длинное время. Для задания времён более 25.5 сек, тем контроллерам, которые это поддерживают
0x13   1    Резерв
0x14    1    Подтип контроллера:
Подтип    Описание
0    Неизвестно
1    Дверь
2    Турникет
3    Шлюз
4    Шлакбаум
Название: Re: Вопрос по SDK
Отправлено: kill9fan от 07 Августа 2019, 15:16
0x14   Подтип контроллера:  -  оно обязательное или только в некоторых моделях/случаях? Может оно таки по 0x13-ому смещению?

Просто у меня в декодированном пакете в ответе от конвертера оно отсутствует.
Опять же, навряд ли мой глюк. Пруф: поле "длина пакета" мне конвертер возвращает 0x14 байт, при счете от нуля последнее смещение 0x13 и столько же принято по факту.

декодированный дамп ответа инфо о контроллере 0x2
[0x0->0x2D]
[0x1->0x14]
[0x2->0x8]
[0x3->0x1]
[0x4->0x0]
[0x5->0x2]
[0x6->0x5]
[0x7->0x49]
[0x8->0x25]
[0x9->0x6]
[0xA->0x2]
[0xB->0x9]
[0xC->0x0]
[0xD->0x7]
[0xE->0x8]
[0xF->0x19]
[0x10->0x1]
[0x11->0x0]
[0x12->0x4]
[0x13->0x2]
контрольная сумма 0x2D Длина пакета 0x14
Номер лицензии 0x8 id пакета 0x1
Код операции 0x0 Адрес на шине 0x2
Заводской номер 18693 Модель 0x25
Флаги 0x6: Размер памяти: 0x2 / Режим X2 неактивен 1 / Карты декодируются по стандарту Wiegand 0 / Активен режим Join 0 / Устройство имеет 2 банка ключей 0 / Есть новые события 0
Прошивка v.2.9
Адрес последнего записанного события 0x807
Адрес последнего считанного события 0x119
Флаги-2 0x4: Активен режим join 0 / активен режим x2 0 / поддержка режимов блокировки 1 / Две временные зоны при одном банке DualZone 0 / Поддержка сдвоенных карт 0 / Поддержка нового запроса(команда 0x01 Универсальный запрос состояния Ext Ask) 0 / Антипассбэк 0 / bigTime длинное время. Для задания времён более 25.5 сек, тем контроллерам, которые это поддерживают 0
Название: Re: Вопрос по SDK
Отправлено: gsa от 07 Августа 2019, 15:49
0x14   Подтип контроллера:  -  оно обязательное или только в некоторых моделях/случаях? Может оно таки по 0x13-ому смещению?
С 0x11 необязательные параметры. Проверил: 0x14  - подтип контроллера (1 байт), 0x0F - указатель чтения событий (2 байта).
Название: Re: Вопрос по SDK
Отправлено: kill9fan от 08 Августа 2019, 19:27
добрался до считывания памяти контроллера.
задался вопросом как девайс с 8Кб памяти (а у меня пишет будто бы 8Кб) может хранить 8192 события, с учетом что одно событие это 8 байтов?
в документации , для случаев с 2Кб девайсами, пишут "

Цитировать
Блок событий (тип 0xA0, номер 2)   
Смещение    Размер    Описание
0x0000    N * 8 байт    N записей о событиях по 8 байт. Максимальное число записей зависит от количества памяти, для 2Kb N не может превышать 2048

не могу понять эту формулировку. По идее для 2048 событий каждое по 8 байт необходимо 16Кб памяти, а не 2Кб.

Цитировать
Параметры контроллера
    биты 0-1 - размер памяти (0x00 - 2Kb, 0x01 - 4Kb, 0x02 - 8Kb)
 

может показатель "размер памяти" в "параметрах контроллера" имеет размерность не килобайты, а неких "КиБи-событий"?  типа 2 КиБи-события. 4 КиБи-события, 8 КиБи-событий?
или всё таки действительно общий объем перезаписываемой памяти (хранение) в килобайтах? Но тогда как же 2048*8 байт влезает в 2 Кб..
 :(
Название: Re: Вопрос по SDK
Отправлено: gsa от 08 Августа 2019, 20:07
задался вопросом как девайс с 8Кб памяти (а у меня пишет будто бы 8Кб) может хранить 8192 события, с учетом что одно событие это 8 байтов?
в документации , для случаев с 2Кб девайсами, пишут "

Мне кажется в документации опечатка, имелось ввиду 8K = ~8000 ключей. У Z-5R Net 8000 - размер всех банков (кроме RTC, тип 0xD0) = 8192 * 8 * 2 = 131072 б = 128 Кб.
Название: Re: Вопрос по SDK
Отправлено: vesago от 08 Августа 2019, 20:08
Применительно к продукции IL, 8к - это не абсолютный объем памяти микросхем. Это 8к событий или ключей.
Название: Re: Вопрос по SDK
Отправлено: kill9fan от 09 Августа 2019, 01:08
Спасибо, понятно.

Еще есть вопросы по событиям.
1) как понимать описание двух указателей событий с блока управления, а именно:
Цитировать
0x0008   2 байта   Адрес, указывающий на ячейку в Блоке событий в которую будет произведена запись нового события. Старший байт первый.
0x000A   2 байта   Адрес, указывающий на ячейку в Блоке событий из которой нужно будет читать новое событие. Старший байт первый.
вот допустим событию контроллер велит записаться по адресу 0x0B40. Вот состоялось событие, вот оно записалось по адресу 0x0B40. Но указатель "читай новое событие из" содержит 0x0B20. Почему? Разве не из 0x0B38 должно быть? Но даже если почему-то 0x0B20 - то там уже есть какое-то событие, неизвестное, и судя по метке времени это не мусор.

2) попадаются коды событий 0x55 и 0x15 - что это?
Цитировать
...
0x0AF0|#350     15 00 00 08 06 20 10 27  |код 0x15 вых|(null)|адрес карты 0x00 0x00| 06/08 20:10:27
0x0AF8|#351     15 01 00 08 07 10 19 51  |код 0x15 вых|(null)|адрес карты 0x01 0x00| 07/08 10:19:51
0x0B00|#352     04 00 D0 08 07 15 42 11  |код 0x04 вх|Ключ найден, дверь разблокирована|адрес карты 0x00 0xD0| 07/08 15:42:11
0x0B08|#353     10 00 D0 08 07 15 42 11  |код 0x10 вх|Проход состоялся|адрес карты 0x00 0xD0| 07/08 15:42:11
0x0B10|#354     55 00 9D 5C 62 00 3B 00  |код 0x55 вых|(null)|адрес карты 0x00 0x9D| 62/5C 00:3B:00
0x0B18|#355     02 00 00 08 08 13 07 59  |код 0x02 вх|Ключ не найден в банке ключей|адрес карты 0x00 0x00| 08/08 13:07:59
0x0B20|#356     15 00 00 08 08 18 48 18  |код 0x15 вых|(null)|адрес карты 0x00 0x00| 08/08 18:48:18
0x0B28|#357     15 01 00 08 08 18 48 29  |код 0x15 вых|(null)|адрес карты 0x01 0x00| 08/08 18:48:29
0x0B30|#358     04 00 C8 08 08 18 53 22  |код 0x04 вх|Ключ найден, дверь разблокирована|адрес карты 0x00 0xC8| 08/08 18:53:22
0x0B38|#359     10 00 C8 08 08 18 53 22  |код 0x10 вх|Проход состоялся|адрес карты 0x00 0xC8| 08/08 18:53:22
0x0B40|#360     FF FF FF FF FF FF FF FF  |код 0xFF вых|(null)|адрес карты 0xFF 0xFF| FF/FF FF:FF:FF
0x0B48|#361     FF FF FF FF FF FF FF FF  |код 0xFF вых|(null)|адрес карты 0xFF 0xFF| FF/FF FF:FF:FF
...
Название: Re: Вопрос по SDK
Отправлено: gsa от 09 Августа 2019, 07:56
Спасибо, понятно.

Еще есть вопросы по событиям.
1) как понимать описание двух указателей событий с блока управления, а именно:
вот допустим событию контроллер велит записаться по адресу 0x0B40. Вот состоялось событие, вот оно записалось по адресу 0x0B40. Но указатель "читай новое событие из" содержит 0x0B20. Почему? Разве не из 0x0B38 должно быть?
Память банка событий циклически перезаписывается новыми событиями после её заполнения, новое событие запишется на место самого старого.
Указатель чтения указывает на начало инициализированных данных, указатель записи - на конец.
При инициализации контроллера оба указателя устанавливаются в 0. При очередном событии информация о событии заносится в ячейку по указателю записи, затем указатель увеличивается на 1 ячейку (на 8 байт), а указатель чтения не изменяется до тех пор, пока буфер не заполняется до конца и указатель записи перемещается в 0 - в этом случае указатель чтения также увеличивается на 1 ячейку. Далее при записи нового события будут увеличиваться на 1 ячейку оба указателя одновременно. Таким образом в буфере всегда останутся MaxEvents-1 событий.

Количество новых событий NewCount можно вычислить по формуле: если EventReadIdx <= EventWriteIdx, то NewCount = (EventWriteIdx - EventReadIdx), иначе NewCount = (MaxEvents - EventReadIdx + EventWriteIdx).
где MaxEvents - ёмкость банка событий = 8192 у Z-5R Net 8K, EventReadIdx = (адрес указателя чтения/8), EventWriteIdx = (адрес указателя записи/8)

p.s. Мне кажется лучше не изменять указатель чтения контроллера, а хранить свой указатель чтения (в своём ПО) чтобы отслеживать изменения.

0x14 Перезагрузка контроллера
0x15 Питание, параметр (смещение 0x01) =0 пропало, =1 появилось
0x55 Содержит номер карты, последние 6 байт содержат копию буфера кода последнего поднесенного ключа (блок управления 0xD0). Не является событием, это дополнение к следующему событию, обычно это события 0x02 0x03 "Ключ не найден в банке ключей".
Название: Re: Вопрос по SDK
Отправлено: kill9fan от 09 Августа 2019, 16:01
почти понял.   :-\ А как (для общего развития) провести инициализацию контроллера? сейчас по формуле я имею 8 событий,  видимо счетчик чтения обновился после пропадания питания 08/08 18:48:18
Цитировать
0x0B20|#0356  15 00 00 08 08 18 48 18    Питание пропало   08/08 18:48:18
Но сейчас простое обесточивание контроллера или всего стенда с конвертором не скидывает указатель чтения, как был 0x0B20 так и остался.
Название: Re: Вопрос по SDK
Отправлено: gsa от 09 Августа 2019, 16:22
почти понял.   :-\ А как (для общего развития) провести инициализацию контроллера? сейчас по формуле я имею 8 событий,  видимо счетчик чтения обновился после пропадания питания 08/08 18:48:18
Цитировать
0x0B20|#0356  15 00 00 08 08 18 48 18    Питание пропало   08/08 18:48:18
Но сейчас простое обесточивание контроллера или всего стенда с конвертором не скидывает указатель чтения, как был 0x0B20 так и остался.
Можете записать значения указателей чтения/записи событий =0 (Блок управления (тип 0xD0, номер 0, смещение 0x0008).
Обесточивание не должно сбрасывать указатели, т.к. они хранятся в ПЗУ.

Вот отрывок из описания протокола (для контроллера с 4096 событиями):
Цитировать
Считывание буфера событий из контроллера
Буфер событий размещен в FLASH (адрес на шине 02h, тип устройства A0h) и занимает 32К байт (4096 события max), адреса 0-7FFFh. Он организован циклически, верхняя граница  и нижняя граница буфера (указатели записи и считывания) хранятся в RAM RTC (адрес на шине 00h, тип устройства D0h).
При инициализации контроллера оба указателя устанавливаются в 0. При очередном событии верхняя граница увеличивается на 8 (по модулю 8К) и блок информации о событии заносится в буфер, а нижняя не изменяется до тех пор, пока буфер не заполняется до конца и верхняя граница перемещается в 0 - в этом случае нижняя граница также увеличивается на 8; далее при записи нового события будут увеличиваться на 8 и верхняя, и нижняя границы (по модулю 8К); таким образом в буфере всегда останутся 4095 последних события.
При считывании из контроллера в PC рекомендуется начинать с нижней границы и сдвигать ее после каждого считанного события или блока событий командой «записать в контроллер» (03h) новое положение нижней границы; таким образом, первыми считываются наиболее ранние события. Считывание завершается, когда значения верхней и нижней границы становятся равны (буфер пуст).
Название: Re: Вопрос по SDK
Отправлено: kill9fan от 09 Августа 2019, 19:01
Благодарю за столь подробный ответ.

тут, подключил на шину matrix-II net (контроллеросчитыватель) . Прицепился своей прогой к нему и принялся считывать события.
Что заметил
1) не фиксирует события пропадания питания
2) при считывании событий, иногда (кажется только после включения питания и переставления перемычек на горячую), так вот, иногда показывает мусор
Цитировать
0x0000|#0000  55 55 55 55 55 55 55 55    Неизвестный ключ [55 55 55 55 55 55]|(без даты)
вплоть до смещения 0x50  (далее идут нормальные 0xFFFFFF-ы
стоит только перечитать 1-2 раза, и тут, в событиях появляется нечто осмысленное и далее уже запись событий работает нормально.

Не подскажите, такое поведение для этого "контроллеросчитывателя" норма? Или всё-таки стоит копать в сторону глюков в моей тестовой проге?

Название: Re: Вопрос по SDK
Отправлено: gsa от 09 Августа 2019, 19:40
1) не фиксирует события пропадания питания
Возможно в установленной прошивке контроллера не реализовано это событие.

2) при считывании событий, иногда (кажется только после включения питания и переставления перемычек на горячую), так вот, иногда показывает мусор
Цитировать
0x0000|#0000  55 55 55 55 55 55 55 55    Неизвестный ключ [55 55 55 55 55 55]|(без даты)
Значениями "55 55 55 55 55 55 55 55" заполняется память контроллера на производстве, означает, что запись пустая. Это не событие неизвестный ключ. Кстати, я исправлял предыдущее сообщение #24: событие с кодом 0x55 это не самостоятельное событие, оно дополняет некоторые другие события.

стоит только перечитать 1-2 раза, и тут, в событиях появляется нечто осмысленное и далее уже запись событий работает нормально.
Не подскажите, такое поведение для этого "контроллеросчитывателя" норма? Или всё-таки стоит копать в сторону глюков в моей тестовой проге?
Не встречался с такой проблемой.
Можете проверить, что записано в памяти контроллера с помощью GuardCommander или Demo из Sdk Guard.
Название: Re: Вопрос по SDK
Отправлено: kill9fan от 12 Августа 2019, 19:38
Не встречался с такой проблемой.
Можете проверить, что записано в памяти контроллера с помощью GuardCommander или Demo из Sdk Guard.
Отдебажил таки. Да,  это был мой косяк, который приводил к дальнейшей дестабилизации. Когда адрес первого свободного слота в сегменте "записанных карт" == 0x00C0, т.е. нету записанных карт на борту контроллера, я не делал проверку и запрашивал у контроллера 0 байт данных начиная с 0x00C0. После чего контроллер упорно отдавал холдтайм,клозопер,вайтопэн равными 0x55, и на попытку первого чтение блока событий выдавал   0x55 "в периоде"..
   len=((mem_cards[a]->freecard_addr[0]<<8)+mem_cards[a]->freecard_addr[1]) - 0x00C0;
   if (len<=0) {puts("~~ справочник карт пуст"); continue; }         // <--- достаточно было это
   // теперь загрузим данные до адреса первого свободного слота карт
Название: Re: Вопрос по SDK
Отправлено: kill9fan от 14 Августа 2019, 13:07
продолжаю размотки, подскажите пожалуйста по вопросам записи в память контроллера (matrix-II-net), в область памяти карт, через advanced-овскую команду записи.
 
Сразу по 8 байт получается нормально записывать, а побайтово (допустим, если флаги только надо поменять) - результат странный.

скажем есть запись
Цитировать
~~ карты/ключи
№слота   ключ         флаги   зоны   Блок   Мастер   Трёхбайт
6   00 00 00 00 00 00    0x0   0x0            выч.смещение: 0xF0
на месте этого 6-го слота до этого был записан некий код карты, затем затёрт нулями.

по смещению 0xF6 будет храниться 1 байт флагов. Пишем туда 0x18.
приходит ответ от контроллера
Цитировать
0x00 [0xe0]
0x01 [0x9]
0x02 [0x8]
0x03 [0x14]
0x04 [0x3]
0x05 [0x2]
0x06 [0x0]
0x07 [0xa0]
0x08 [0x55]
в спецификации протокола такого нету, там 8 байт ответа дубликат, потом код результата.

смотрим как записалось
Цитировать
~~ карты/ключи
№слота   ключ         флаги   зоны   Блок   Мастер   Трёхбайт
 6   62 5C 9D 03 4C 18    0x0   0x3B            выч.смещение: 0xF0
0x18 записалось, но на 1 ячейку-байт ниже, плюс виден некий мусор (точнее тройка второй половины старого затертого нулями ключа и затем 2 байта непонятного)

я к чему:
1) в область карт надо писать восьмёрками байт? или всё-таки можно и побайтово?
2) ответный пакет на операцию записи не подходит под описание в вики, как интерпретировать?
Название: Re: Вопрос по SDK
Отправлено: gsa от 14 Августа 2019, 13:28
1) в область карт надо писать восьмёрками байт? или всё-таки можно и побайтово?
2) ответный пакет на операцию записи не подходит под описание в вики, как интерпретировать?
Не могу подсказать. Пробовал писать ключи только по 4 и по 8 байт, проблем не было. Если писать по 8 байт не устраивает и уверены, что это баг прошивки, то напишите в техподдержку по email, чтобы разработчик исправил. По-моему, разработчик прошивки не читает форум.
Название: Re: Вопрос по SDK
Отправлено: gsa от 14 Августа 2019, 13:42
приходит ответ от контроллера
Цитировать
0x00 [0xe0]
0x01 [0x9]
0x02 [0x8]
0x03 [0x14]
0x04 [0x3]
0x05 [0x2]
0x06 [0x0]
0x07 [0xa0]
0x08 [0x55]
в спецификации протокола такого нету, там 8 байт ответа дубликат, потом код результата.
0x55 - код успешно выполнено
Наверное, на сайте ошибка. Получается на этой странице написано не правильно http://posix.con.ru/wiki/Z397_IP_Advanced_Mode (http://posix.con.ru/wiki/Z397_IP_Advanced_Mode), а здесь правильно http://posix.con.ru/wiki/Z397_Guard (http://posix.con.ru/wiki/Z397_Guard) Хотя протокол один и тот же, теоретически не должен отличается для USB и IP конвертеров.
p.s. Кстати, я сообщаю об обнаруженных ошибках wiki ответственному, но пока сотрудник, который правит, очень занят.
Название: Re: Вопрос по SDK
Отправлено: kill9fan от 14 Августа 2019, 18:24
Хотя протокол один и тот же, теоретически не должен отличается для USB и IP конвертеров.
Спасибо, я как-то даже упустил из виду сей документ  ??? Если оба документика смержить воедино многое проясняется :)
Название: Re: Вопрос по SDK
Отправлено: kill9fan от 28 Августа 2019, 17:02
Цитировать
Переключение возможно тремя способами:
1) Временной зоной (высший приоритет).
2) Блокирующей картой (удержание более 3 сек).
3) Командой оператора по RS-485.
По поводу advanced-команды 0x1F с кодом операции 0x16 . Описана тут http://posix.ironlogic.ru/wiki/Z397_Guard#.D0.9A.D0.BE.D0.BC.D0.B0.D0.BD.D0.B4.D0.B0_.280x07.29_.D0.B4.D0.B8.D1.81.D1.82.D0.B0.D0.BD.D1.86.D0.B8.D0.BE.D0.BD.D0.BD.D0.BE.D0.B3.D0.BE_.D0.BE.D1.82.D0.BA.D1.80.D1.8B.D1.82.D0.B8.D1.8F_.D0.B4.D0.B2.D0.B5.D1.80.D0.B8 (http://posix.ironlogic.ru/wiki/Z397_Guard#.D0.9A.D0.BE.D0.BC.D0.B0.D0.BD.D0.B4.D0.B0_.280x07.29_.D0.B4.D0.B8.D1.81.D1.82.D0.B0.D0.BD.D1.86.D0.B8.D0.BE.D0.BD.D0.BD.D0.BE.D0.B3.D0.BE_.D0.BE.D1.82.D0.BA.D1.80.D1.8B.D1.82.D0.B8.D1.8F_.D0.B4.D0.B2.D0.B5.D1.80.D0.B8)

Понимаю что это для Гварда, но мы установили что оба руководства друг друга тесно дополняют

забиваю в 0x8 код от 0 до 3 , вообще так


 byte    unpacked[]={0x00,0x09,  ...........
 .....
  unpacked[0x02]=LicenseNo;       unpacked[0x03]=Current_Transaction;
  unpacked[0x04]=0x16;                  unpacked[0x05]=ca;
  unpacked[0x08]=0x1;

но в ответной распаковке постоянно такое (опускаю хедер 0x1F и финальный 0xD0)
0x0->[0xE]
0x1->[0xA]
0x2->[0x8]     // лицензия
0x3->[0x7]
0x4->[0x16]   // оп-код смена режимов
0x5->[0x2]    //  адрес на шине
0x6->[0x0]
0x7->[0x0]
0x8->[0xAA]    // тут по описанию должно быть 0..3, а вне зависимости от уст. режима всегда 0xAA
0x9->[0x16]    - непонятное
0xA->[0xD]     - непонятное
0xB->[0xC7]   - непонятное

z397-Web конвертор, контроллеры Matrix-II-Net и Z5R-Net поведение одинаковое.

Вопрос есть ли в z397-web вообще такая команда 0x1F / 0x16 и как растолковать ответный пакет в моем случае?
Название: Re: Вопрос по SDK
Отправлено: gsa от 28 Августа 2019, 17:26
0x0->[0xE]
0x1->[0xA]
0x2->[0x8]     // лицензия
0x3->[0x7]
0x4->[0x16]   // оп-код смена режимов
0x5->[0x2]    //  адрес на шине
0x6->[0x0]
0x7->[0x0]
0x8->[0xAA]    // тут по описанию должно быть 0..3, а вне зависимости от уст. режима всегда 0xAA
0x9->[0x16]    - непонятное
0xA->[0xD]     - непонятное
0xB->[0xC7]   - непонятное

Вопрос есть ли в z397-web вообще такая команда 0x1F / 0x16 и как растолковать ответный пакет в моем случае?
Если 0xAA, то похоже, что контроллер не поддерживает эту команду. Проверьте флаг "Поддержка режимов блокировки" (бит 2 в байте 0x12 в ответе на запрос детальной информации о контроллере).
https://forum.ironlogic.ru/index.php?topic=450.msg3913#msg3913 (https://forum.ironlogic.ru/index.php?topic=450.msg3913#msg3913)
Название: Re: Вопрос по SDK
Отправлено: kill9fan от 28 Августа 2019, 17:32
Флаги-2 0x4: b100
поддержка режимов блокировки 1
плюс на разных контроллерах пробовал Z5R-Net и Matrix-II-Net
Наверное поддерживает, но не по сети (
А есть информация какие контроллеры заведомо поддерживают, а какие нет?
Название: Re: Вопрос по SDK
Отправлено: gsa от 28 Августа 2019, 17:45
Флаги-2 0x4: b100
поддержка режимов блокировки 1
плюс на разных контроллерах пробовал Z5R-Net и Matrix-II-Net
Наверное поддерживает, но не по сети (
Если поддерживает, тогда не знаю, напишите на email техподдержки.
P.S.Попробуйте послать 0x16 без кода режима, тогда в ответе должен быть текущий режим. Можно ещё проверить поддерживает или нет с помощью GuardCommander.
Название: Re: Вопрос по SDK
Отправлено: gsa от 28 Августа 2019, 17:46
А есть информация какие контроллеры заведомо поддерживают, а какие нет?
Это зависит от версии прошивки. На сайте ironlogic на странице контроллеров в описании прошивок должно быть написано.
Название: Re: Вопрос по SDK
Отправлено: kill9fan от 29 Августа 2019, 16:49
P.S.Попробуйте послать 0x16 без кода режима, тогда в ответе должен быть текущий режим. Можно ещё проверить поддерживает или нет с помощью GuardCommander.
Спасибо, да - работает и считывание и запись. мой косяк - пакет 9 байтный, забыл добавить 3 выравнивающих байта до 12, чтобы упаковался нормально..

А какими командами реализуется то что в GuardCommander-e назвается "Замки -> Блокировка замка и Аварийное открывание дверей?
причем я смотрю событие по этому поводу не создается. Далее при поднесении ключа пишет
"0x12E0|#0604  0A 00 C8 08 29 16 48 23    вх|Ключ найден, либо нажата кнопка, либо выдана команда, но дверь заблокирована|адрес карты 0x00 0xC8| 29/08 16:48:23"
Название: Re: Вопрос по SDK
Отправлено: gsa от 29 Августа 2019, 17:08
А какими командами реализуется то что в GuardCommander-e назвается "Замки -> Блокировка замка и Аварийное открывание дверей?
Блокировка замка реализуется установкой времени открывания замка =0.
Аварийное открывание дверей - установкой значение 0x73 по адресу 0x15 в блоке управления (тип 0xD0, номер 0), значение 0 выключено. Если поддерживается прошивкой.
Название: Re: Вопрос по SDK
Отправлено: kill9fan от 17 Сентября 2019, 14:03
gsa, Благодарю - да всё нормально.

Еще заметка по ходу, может быть что-то путаю, но в моём случае это оказалось справедливым:
Цитировать
Структура пакета данных для команд 0x1E-0x20
Смещение    Размер    Описание
0x00    1 байт    Контрольная сумма пакета
    исходящий пакет - контроль на 0x00 (сумма всех байт пакета =0x00)
    входящий пакет - контроль на 0xFF
0x01    1 байт    Длина пакета в байтах
0x02    1 байт    Номер лицензии
0x03    1 байт    Идентификатор пакета (ответ на пакет будет содержать тот же идентификатор)
0x04    1 байт    Код операции (зависит от типа команды)
0x05    1 байт    Сетевой адрес контроллера, к которому относится команда
0x06    2 байта    Параметры операции
0x08    0-92 байта    Дополнительные данные

чем еще плох blocksize 92 , при чтении из памяти контроллера, так это тем, что читая справочник записанных карт, нам требуется считывать порциями не менее 8 байт и кратно 8 (это справедливо, почему-то, только для одного из контроллеров IR которыми располагаю).

Блоксайз 104 пробовал уже не катит.
Поставил 88, но по приколу увеличил до 96 - сработало!
Так что предел длины запрошенного куска памяти, в команде чтения, если ничего не путаю конечно, у меня оказался 96, а не 0..92