Добавление входных каналов в архивный срез

Стартовая страница Форумы Разработка и интеграция Добавление входных каналов в архивный срез

Просмотр 7 сообщений - с 1 по 7 (из 7 всего)
  • Автор
    Сообщения
  • #17607
    Romiros
    Участник

    Добрый день. Есть ли возможность, используя существующее API добавить в архивный срез канал, если он ранее в этом срезе не существовал? Или для этого нужно лезть в закрытые методы скады?
    Имеется ввиду написать соответствующее приложение, утилиту или драйвер своими силами. Если да, то куда посмотреь?
    Данная операция не частая, но уже несколько раз возникала такая необходимость.

    #17608
    Mikhail
    Модератор

    Добрый день!
    Вы правильно написали, что для этого нужно написать утилиту. Она будет создавать новые таблицы архива, а затем копировать в них данные из старых таблиц. Все методы, которые нужны для утилиты, находятся в ScadaData.dll

    Наверное, нужно начать с того, что научиться открывать существующие таблицы *.dat. Потом научиться создавать новые таблицы. А затем скопировать данные.

    Если напишите такую утилиту, она будет очень полезна.

    #17611
    Romiros
    Участник

    Спасибо за ответ, принцип вроде понял. Т.е. алгоритм примерно следующий:
    1. Создаем временную папку(папки) под новые файлы архивов
    2. Берем архивный файл, перебираем срезы. Получаем из них время каждого среза и данные каналов, ну и также имя файла.
    3. На основе текущего среза(из current.dat) создаём новые архивные срезы. Присваиваем им время и данные от старых архивных срезов.
    4. Сохраняем новый архивный во временной папке.
    5. Повторяем 1-4 для всех файлов.
    6. Заменяем файлы архивов на новые из временной паки.

    Поправьте, если я не прав.

    #17616
    Mikhail
    Модератор

    В целом, всё верно.

    #17621
    Romiros
    Участник

    Кое-что получилось. По крайней мере делает то что мне нужно. Конечно для большого кол-ва данных нужно сделать какой-нибудь асинхронный прогресс или лог, чтобы форма не подвисала. Ну и может нужно дать возможность задавать глубину обновления в днях.

    https://cloud.mail.ru/public/swag/2hpLeHyhw

    Приложение обновляет архивные файлы (часовые и минутные) в соответствии с кол-вом каналов в текущем срезе.
    Данные существовавших каналов сохраняются, добавленные вставляются со значением 0 и статусом 0.

    ВАЖНО!!!
    Архивы тех каналов, которых нет в текущем срезе — исчезнут (по идее так правильно, что-то вроде чистки)
    ВАЖНО!!!
    Пробовать или на ArchiveDATCopy или скопировать ArchiveDAT в отдельную папку и там эксперементировать.

    #17622
    Mikhail
    Модератор

    Замечательно, что появилась такая утилита!
    Только проверьте ссылку, пожалуйста, у меня не открылась.

    #17641
    Romiros
    Участник

    Поправил ссылку
    https://cloud.mail.ru/public/2psj/4ucc9SFrx

Просмотр 7 сообщений - с 1 по 7 (из 7 всего)
  • Вы должны авторизироваться для ответа в этой теме.