Автор Тема: Ошибка чтения истории событий: key is empty (GuardCmd)  (Прочитано 5404 раз)

RedDiablo

  • Пользователь
  • *****
  • Сообщений: 2
Иногда, непонятно по каким причинам и как связано на некоторых контроллерах не отображаются дополнительные сведения в истории событий. Т.е. видно что событие было, виден его результат, но не видно каким ключом оно совершено.
Визуально это выглядит так:

67;20-фев 08:49:20;Вход;Ключ найден, дверь открыта;{#574};;
68;20-фев 08:49:20;Вход;Проход состоялся;{#574};;
69;20-фев 09:18:49;Вход;Ключ найден, дверь открыта;{#540};;
70;20-фев 09:18:49;Вход;Проход состоялся;{#540};;
71;20-фев 10:27:04;Вход;Ключ найден, дверь открыта;{#638};;
72;20-фев 10:27:04;Вход;Проход состоялся;{#638};;
73;20-фев 11:21:34;Вход;Ключ найден, дверь открыта;{#490};;
74;20-фев 11:21:34;Вход;Проход состоялся;{#490};;
75;20-фев 11:56:49;Выход;Ключ найден, дверь открыта;{#359};;
76;20-фев 11:56:49;Выход;Проход состоялся;{#359};;

В логе GuardCmd.log при этом:
16:38:42.218 [P] 01 08 02 00 A0 30 0F C8.
16:38:42.219 [>] FA 01 08 02 00 A0 30 0F C8 55 F5.
16:38:42.241 [<] FA 7F 00 01 08 02 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55.
16:38:42.263 [<] 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55.
16:38:42.285 [<] 55 55 0B.
16:38:42.286 [U] 7F 00 01 08 02 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55.
16:38:42.288 [W] Reading events: key is empty (event#=330, key#=481, bank#=0).
16:38:42.291 [W] Reading events: key is empty (event#=331, key#=481, bank#=0).
16:38:42.292 [W] Reading events: key is empty (event#=332, key#=481, bank#=0).
16:38:42.294 [W] Reading events: key is empty (event#=333, key#=481, bank#=0).
16:38:42.296 [W] Reading events: key is empty (event#=334, key#=481, bank#=0).
16:38:42.297 [W] Reading events: key is empty (event#=335, key#=481, bank#=0).
16:38:42.307 [W] Reading events: key is empty (event#=336, key#=481, bank#=0).

Иногда ошибка исчезает, если перезапустить программу, погонять таблицу на вкладке "Ключи", заново считать всю историю событий, а иногда никак не добиться чтоб нормальные данные пришли.

RS-485 Guard, линия длинная, эхоподавление включено.
Случается как на дальних контроллерах, так и на тех, которые совсем рядом (0,2-3 метра) с конвертером. Зависимости нет никакой.

Чтобы это могло быть и как вылечить?
« Последнее редактирование: 16 Марта 2020, 19:31 от RedDiablo »

gsa

  • Пользователь
  • *****
  • Сообщений: 265
Дело в том, что запись события типа "Ключ найден, дверь открыта" (есть и другие) хранит в себе адрес ключа в банке ключей (т.е. ссылку), а не явное значение ключа. Поэтому если ключ по этому адресу удален, то получить полную информацию о событии не удастся. А если перезаписан другим ключом, то информация события будет недостоверной. Чтобы этого избежать нужно перед записью ключей прочитать и сохранить все события, например, для этого можно использовать "Лог событий".
"{#574}" - здесь в фигурных скобках указана позиция ключа (=адрес ключа / размер ключа) в банке ключей, значит что ключ пустой (удалён).

RedDiablo

  • Пользователь
  • *****
  • Сообщений: 2
Да, это я прекрасно понимаю. Поэтому лог событий читаю до момента изменения базы ключей.
Те на момент чтения лога база не изменена и соответствует тому, что в контроллере.
И ключа с номером 574, 481 и т.п. - в ней действительно нет. И не было никогда.

gsa

  • Пользователь
  • *****
  • Сообщений: 265
Те на момент чтения лога база не изменена и соответствует тому, что в контроллере.
Пришлите лог файл, пожалуйста, на gsa@ironlogic.ru, записанный при чтении событий когда база не изменена и соответствует тому, что в контроллере, но при этом обнаруживаются пустые или неправильные ключи. Тогда смогу определить источник проблемы: либо GuardCommander неправильно читает, либо контроллер передаёт не то.
И ещё прочитайте, пожалуйста, все ключи из контроллера (лучше командой "Банк №0 (ключи) контроллера -> в файл..." в контекстном меню группы "Информация о контроллере" на странице "Контроллер"), чтобы эта информация также попала в лог файл.
« Последнее редактирование: 17 Марта 2020, 11:58 от gsa »