Стартовая страница › Форумы › Разработка и интеграция › CustomParams считать до обнуления ?
- В этой теме 23 ответа, 3 участника, последнее обновление 6 лет, 3 месяца назад сделано
Mikhail.
-
АвторЗаписи
-
27.05.2020 в 17:30 #16268
manjey73УчастникТогда второй вопрос остался, как получить список всех КП на линии ? без сортировки желательно.
этот вопрос актуальный
27.05.2020 в 17:46 #16270
MikhailМодераторВсе варианты не очень хорошие:
1. Каждый КП добавляет себя в общедоступный список.
2. Считать конфигурацию Коммуникатора из файла в драйвере.Согласен, что надо развивать возможности драйверов. Это будет делаться в рамках версии 6, что не быстро, к сожалению.
27.05.2020 в 21:48 #16272
manjey73УчастникНу пока вижу самый быстрый способ это каждый КП со своим файлом настроек. Это вроде легко, прикрутил запись в XML через тот же код сериализации, который использовал в ScadaCommFunc для проверки. Работает.
Если делать файл на линию есть нюансы. Если по остановке линии все просто, последовательная запись от 1-ого КП до последнего то каждый добавит свое, но тут нарвался на то, что все КП будут записывать свое новое, а чужое старое, что могло поменяться в них. Если каждый драйвер сперва прочитает из файла, изменить свои данные и запишет, то это несколько раз прочитать — записать… В принципе то же самое можно сделать и при изменении данных в процессе время от времени.
Использовать общую переменную «Флаг записи», если кто-то записал, остальные должны перечитать файл. Тогда будет такая конструкция реже.
Проблема собственно в сериализации, она несколько иначе работает, данные попадают в каждый КП в виде копий получается…
Вопросы.
1) CommonProps тоже ведь общий ? я их разделяю только за счет адресов устройств (а не по КП). Можно ведь сделать общий CommonProps для всех, где будет храниться слепок однажды прочитанного файла, изменяться данные на каждый КП и тогда не важно какой КП сохранит файл..
2) если по аналогии с AppDirs сделать доступ к KPList что в нем окажется ? список абсолютно всех КП или только тех КП, которые на данной линии ? что поменять в CommLine, чтобы можно было прочесть KPList только для чтения, если конечно он будет именно на линию связи и без сортировки.27.05.2020 в 22:57 #16273Romiros
УчастникА зачем вообще это все? Какая практическая задача?
27.05.2020 в 23:05 #16274
manjey73Участникодин раз считать файл первым КП на линии, выполнять всякие манипуляции внутри кода без лишней записи и один раз записать последним КП на линии при ее необходимости.
по 1-2 переменных на КП и возможно большом количестве однотипных устройств писаь кучу файлов как-то не очень разумно.
з.ы. объект тут все никак не разродится, не знаю сколько там линий связи получится, но общее количество счетчиков больше 300…
Если файл на каждое КП то 300 файлов…-
Ответ изменён 6 лет, 3 месяца назад пользователем
manjey73.
28.05.2020 в 10:17 #16284
manjey73УчастникДа, если организовывать доступ с списку КП на линии связи без сортировки, то предусмотреть возможность прочитать имя DLL из него, так как на линии могут быть устройства с разными DLL в принципе…
28.05.2020 в 18:11 #16289
MikhailМодераторCommonProps общий в пределах линии связи.
28.05.2020 в 19:49 #16291
manjey73УчастникОн общий, если имя без идентификатора, если же мы делаем идентификатор по адресу устройства то можно обмениваться данными между КП одного устройства. Если делаем идентификатор по КП то КП может хранить собственные данные. Так что можно разделить места хранения. вполне удобно, как оказалось.
Ну и в принципе можно обратиться и к чужой копии, если уж очень надо.
29.05.2020 в 18:41 #16296
MikhailМодераторВерно.
В этом репозитории можно следить за разработкой версии 6 и обсуждать возможности драйверов и модулей. Но пока что ещё мало что готово.Файлы настройки Сервера и Коммуникатора дают некоторое представление.
-
Ответ изменён 6 лет, 3 месяца назад пользователем
Mikhail.
-
Ответ изменён 6 лет, 3 месяца назад пользователем
-
АвторЗаписи
- Для ответа в этой теме необходимо авторизоваться.