Автор Тема: Вопрос по SDK  (Прочитано 2973 раз)

kill9fan

  • Пользователь
  • *****
  • Сообщений: 18
Re: Вопрос по SDK
« Ответ #30 : 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) ответный пакет на операцию записи не подходит под описание в вики, как интерпретировать?
« Последнее редактирование: 14 Августа 2019, 13:16 от kill9fan »

gsa

  • Пользователь
  • *****
  • Сообщений: 145
Re: Вопрос по SDK
« Ответ #31 : 14 Августа 2019, 13:28 »
1) в область карт надо писать восьмёрками байт? или всё-таки можно и побайтово?
2) ответный пакет на операцию записи не подходит под описание в вики, как интерпретировать?
Не могу подсказать. Пробовал писать ключи только по 4 и по 8 байт, проблем не было. Если писать по 8 байт не устраивает и уверены, что это баг прошивки, то напишите в техподдержку по email, чтобы разработчик исправил. По-моему, разработчик прошивки не читает форум.

gsa

  • Пользователь
  • *****
  • Сообщений: 145
Re: Вопрос по SDK
« Ответ #32 : 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_Guard Хотя протокол один и тот же, теоретически не должен отличается для USB и IP конвертеров.
p.s. Кстати, я сообщаю об обнаруженных ошибках wiki ответственному, но пока сотрудник, который правит, очень занят.
« Последнее редактирование: 14 Августа 2019, 13:48 от gsa »

kill9fan

  • Пользователь
  • *****
  • Сообщений: 18
Re: Вопрос по SDK
« Ответ #33 : 14 Августа 2019, 18:24 »
Хотя протокол один и тот же, теоретически не должен отличается для USB и IP конвертеров.
Спасибо, я как-то даже упустил из виду сей документ  ??? Если оба документика смержить воедино многое проясняется :)

kill9fan

  • Пользователь
  • *****
  • Сообщений: 18
Re: Вопрос по SDK
« Ответ #34 : 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

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

забиваю в 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 и как растолковать ответный пакет в моем случае?
« Последнее редактирование: 28 Августа 2019, 17:05 от kill9fan »

gsa

  • Пользователь
  • *****
  • Сообщений: 145
Re: Вопрос по SDK
« Ответ #35 : 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
« Последнее редактирование: 28 Августа 2019, 17:28 от gsa »

kill9fan

  • Пользователь
  • *****
  • Сообщений: 18
Re: Вопрос по SDK
« Ответ #36 : 28 Августа 2019, 17:32 »
Флаги-2 0x4: b100
поддержка режимов блокировки 1
плюс на разных контроллерах пробовал Z5R-Net и Matrix-II-Net
Наверное поддерживает, но не по сети (
А есть информация какие контроллеры заведомо поддерживают, а какие нет?
« Последнее редактирование: 28 Августа 2019, 17:44 от kill9fan »

gsa

  • Пользователь
  • *****
  • Сообщений: 145
Re: Вопрос по SDK
« Ответ #37 : 28 Августа 2019, 17:45 »
Флаги-2 0x4: b100
поддержка режимов блокировки 1
плюс на разных контроллерах пробовал Z5R-Net и Matrix-II-Net
Наверное поддерживает, но не по сети (
Если поддерживает, тогда не знаю, напишите на email техподдержки.
P.S.Попробуйте послать 0x16 без кода режима, тогда в ответе должен быть текущий режим. Можно ещё проверить поддерживает или нет с помощью GuardCommander.

gsa

  • Пользователь
  • *****
  • Сообщений: 145
Re: Вопрос по SDK
« Ответ #38 : 28 Августа 2019, 17:46 »
А есть информация какие контроллеры заведомо поддерживают, а какие нет?
Это зависит от версии прошивки. На сайте ironlogic на странице контроллеров в описании прошивок должно быть написано.

kill9fan

  • Пользователь
  • *****
  • Сообщений: 18
Re: Вопрос по SDK
« Ответ #39 : 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"

gsa

  • Пользователь
  • *****
  • Сообщений: 145
Re: Вопрос по SDK
« Ответ #40 : 29 Августа 2019, 17:08 »
А какими командами реализуется то что в GuardCommander-e назвается "Замки -> Блокировка замка и Аварийное открывание дверей?
Блокировка замка реализуется установкой времени открывания замка =0.
Аварийное открывание дверей - установкой значение 0x73 по адресу 0x15 в блоке управления (тип 0xD0, номер 0), значение 0 выключено. Если поддерживается прошивкой.

kill9fan

  • Пользователь
  • *****
  • Сообщений: 18
Re: Вопрос по SDK
« Ответ #41 : 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
 
« Последнее редактирование: 17 Сентября 2019, 14:05 от kill9fan »