Стартовая страница › Форумы › Разработка и интеграция › Добавление входных каналов в архивный срез
- В этой теме 6 ответов, 2 участника, последнее обновление 5 лет, 9 месяцев назад сделано
Romiros.
-
АвторЗаписи
-
25.11.2020 в 08:59 #17607
Romiros
УчастникДобрый день. Есть ли возможность, используя существующее API добавить в архивный срез канал, если он ранее в этом срезе не существовал? Или для этого нужно лезть в закрытые методы скады?
Имеется ввиду написать соответствующее приложение, утилиту или драйвер своими силами. Если да, то куда посмотреь?
Данная операция не частая, но уже несколько раз возникала такая необходимость.25.11.2020 в 15:57 #17608
MikhailМодераторДобрый день!
Вы правильно написали, что для этого нужно написать утилиту. Она будет создавать новые таблицы архива, а затем копировать в них данные из старых таблиц. Все методы, которые нужны для утилиты, находятся в ScadaData.dllНаверное, нужно начать с того, что научиться открывать существующие таблицы *.dat. Потом научиться создавать новые таблицы. А затем скопировать данные.
Если напишите такую утилиту, она будет очень полезна.
26.11.2020 в 14:10 #17611Romiros
УчастникСпасибо за ответ, принцип вроде понял. Т.е. алгоритм примерно следующий:
1. Создаем временную папку(папки) под новые файлы архивов
2. Берем архивный файл, перебираем срезы. Получаем из них время каждого среза и данные каналов, ну и также имя файла.
3. На основе текущего среза(из current.dat) создаём новые архивные срезы. Присваиваем им время и данные от старых архивных срезов.
4. Сохраняем новый архивный во временной папке.
5. Повторяем 1-4 для всех файлов.
6. Заменяем файлы архивов на новые из временной паки.Поправьте, если я не прав.
26.11.2020 в 17:35 #17616
MikhailМодераторВ целом, всё верно.
27.11.2020 в 15:07 #17621Romiros
УчастникКое-что получилось. По крайней мере делает то что мне нужно. Конечно для большого кол-ва данных нужно сделать какой-нибудь асинхронный прогресс или лог, чтобы форма не подвисала. Ну и может нужно дать возможность задавать глубину обновления в днях.
https://cloud.mail.ru/public/swag/2hpLeHyhw
Приложение обновляет архивные файлы (часовые и минутные) в соответствии с кол-вом каналов в текущем срезе.
Данные существовавших каналов сохраняются, добавленные вставляются со значением 0 и статусом 0.ВАЖНО!!!
Архивы тех каналов, которых нет в текущем срезе — исчезнут (по идее так правильно, что-то вроде чистки)
ВАЖНО!!!
Пробовать или на ArchiveDATCopy или скопировать ArchiveDAT в отдельную папку и там эксперементировать.27.11.2020 в 16:08 #17622
MikhailМодераторЗамечательно, что появилась такая утилита!
Только проверьте ссылку, пожалуйста, у меня не открылась.29.11.2020 в 12:43 #17641Romiros
УчастникПоправил ссылку
https://cloud.mail.ru/public/2psj/4ucc9SFrx -
АвторЗаписи
- Для ответа в этой теме необходимо авторизоваться.