Термотроник АДИ-0-0 [23/24] Приложение 6 оптимизация алгоритма считывания архивов

Термотроник АДИ-0-0 [23/24] Приложение 6 оптимизация алгоритма считывания архивов
АДИ Описание протокола обмена с.23
Приложение 6. Оптимизация алгоритма считывания архивов
Доступ к архивам прибора реализован через считывание файлов по записям без
возможности указания желаемой даты архивной записи. Это предполагает считывание
всего файла архива целиком в каждом сеансе связи. При регулярном считывании
архива это приводит к дополнительным временным затратам на получение архивных
записей, которые были прочитаны во время предыдущих сеансов связи. Для экономии
времени считывания алгоритм может быть оптимизирован на стороне программного
обеспечения верхнего уровня, если оно имеет возможность сохранять прочитанные
данные в каком-нибудь хранилище, например, базе данных.
Алгоритм основан на том, что база данных (БД) хранит как содержимое архивных
записей, так и служебную информацию о записях (номер файла и индекс записи, из
которых запись была прочитана).
Если для данного файла в БД нет информации, то производится считывание всех
имеющихся в приборе записей (количество записей может быть определено из
дескриптора файла).
Если БД содержит информацию о предыдущем считывании, то необходимо
произвести считывание из прибора, указав номер файла и индекс записи такие же, как
в последней записи БД (т.о. выполняется контрольное считывание последней
известной записи).
Несовпадение инкрементного номера записи (тип unsigned __int64) или контрольной
суммы прочитанной из прибора записи с аналогичными полями записи из БД говорит о
том, что архивная запись была переписана с момента последнего считывания (архив
«закольцевался»). В этом случае следует произвести считывание данных так, как
будто БД не содержала информации об архиве.
В противном случае считывание данных выполняется, начиная со следующей
записи. Считывание продолжается до возникновения одного из событий:
Прочитаны все записи файла;
Прочитана запись, имеющая значение инкрементного номер меньше
максимального известного значения инкрементного номера записи
(хранящегося в БД или прочитанного во время текущего сеанса связи).
Данная ситуация говорит о том, что прочитана запись, которая уже должна
находиться в БД.

Содержание

Похожие устройства