Стартовая страница › Форумы › Разработка и интеграция › Чтение из нескольких архивных файлов
- В этой теме 11 ответов, 3 участника, последнее обновление 3 года, 5 месяцев назад сделано vg.
-
АвторСообщения
-
28.09.2020 в 20:14 #17302vgУчастник
Здравствуйте!
В примере на сайте rapidscada.ru показана следующая возможность:
using Scada.Data; ... SrezTableLight snapshotTable = new SrezTableLight(); SrezAdapter adapter = new SrezAdapter(); adapter.FileName = @"C:\SCADA\ArchiveDAT\Cur\current.dat"; adapter.Fill(snapshotTable);
Но, наверняка должен быть способ как считать за один заход данные по нескольким дням (то есть несколько файлов) и поместить это всё в одну таблицу SrezTableLight? То есть, например старт от 23.09.2020 15:28:00, а финиш 28.09.2020 13:47:00.
Пока что я вижу только следующий вариант:
Определить по диапазону нужные архивные файлы, считать каждый файл в новый экземпляр SrezTableLight и добавить методом AddSrez() к первому экземпляру SrezTableLight циклами остальные данные из других экземпляров.Возможно существует более простой способ, который я не вижу.
28.09.2020 в 20:20 #17303vgУчастникP.S.
А если можно сразу считать срезы по конкретным входным каналам, то это будет просто фантастика.
29.09.2020 в 17:22 #17308MikhailМодераторДобрый день!
Опишите, пожалуйста, задачу в целом.
Внутри серверного модуля доступна переменная ServerData, которая содержит методы для считывания данных из архива по конкретным каналам.> за один заход данные по нескольким дням
В текущей версии — пробежаться в цикле по датам. В 6-й версии будет одна команда для выбора конкретных каналов за произвольный период.29.09.2020 в 17:24 #1730930.09.2020 в 14:50 #17323vgУчастникВ целом задача выглядит следующим образом:
По нажатию на графический элемент в веб-интерфейсе SCADA-системы сформировать отчёт в файле Word, в котором будут отображаться архивные данные в виде таблиц и графиков.
По сути я уже все данные достал, но реализация кривая(на мой взгляд), как моя жизнь, из-за большого количества костылей. Костыли эти у меня получились в виду того, что я не понял как считать только то, что мне нужно в приложении и соответственно считываю в данный момент весь архив за нужный период. Затем с помощью метода AddSrez() «соединяю» все экземпляры SrezTableLight и получаю «общую» таблицу. После этого перебираю всю эту большую таблицу для извлечения нужных мне данных и сохраняю только данные по необходимым каналам.
Основная сложность для меня представляется в определении данных по номеру канала, так как весь итоговый SrezTableLight я оставлять не хочу, так как он слишком громоздкий, а в новой структуре (я записываю в List<List<List<object>>> :)) номер канала записываю в нижнем List`е и в итоге получается много ненужных операций при извлечении данных. Я понимаю, что алгоритм плохой, но по другому не придумал.
Мы с Вами уже обсуждали ранее некоторые моменты и Вы рекомендовали делать это отдельным приложением, а не модулем (из-за требований к безопасности модуля, если не ошибаюсь).
30.09.2020 в 15:40 #17325vgУчастникЗабыл написать, что период отчёта может быть как фиксированный (час, сутки, неделя и т.д.) так и произвольный, а следовательно нужно обеспечить выбор этого периода. Значит модуль, по всей видимости, не подходит.
30.09.2020 в 15:56 #17327MikhailМодераторПриложение для формирование отчётов — это скорее должен быть клиент, который подключается к SCADA-Серверу и получает от него данные по протоколу TCP. Модуль здесь не подходит по смыслу. Прямой доступ к файлам базы и архивов технически возможен, но архитектурно не красив.
30.09.2020 в 16:12 #17329vgУчастникБлагодарю за ответ. Подскажите пожалуйста что почитать, куда посмотреть для разработки такого клиента?
01.10.2020 в 08:57 #17332a80808УчастникА вариант экспорта во внешнюю БД + какой то штатный генератор отчетов типа BI или Crystal?
01.10.2020 в 13:22 #17335MikhailМодераторПодскажите пожалуйста что почитать, куда посмотреть для разработки такого клиента?
Существующие клиенты — это Вебстанция и Коммуникатор. Найдите в их коде использование класса ServerComm.
А вариант экспорта во внешнюю БД + какой то штатный генератор отчетов типа BI или Crystal?
Тоже вариант, достойный рассмотрения. Наверное, потребуется экспортировать не только архив, но и базу конфигурации.
01.10.2020 в 13:24 #17336MikhailМодератор02.10.2020 в 13:39 #17344vgУчастникБольшое спасибо за ответы.
-
АвторСообщения
- Вы должны авторизироваться для ответа в этой теме.