Спасибо, понятно.
Еще есть вопросы по событиям.
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 "Ключ не найден в банке ключей".