Создание каналов КП в Администарторе

Стартовая страница Форумы Разработка и интеграция Создание каналов КП в Администарторе

Просмотр 15 сообщений - с 46 по 60 (из 64 всего)
  • Автор
    Записи
  • #11916
    manjey73
    Участник

    Урра!, действительно просто надо библиотеку положить в папку ScadaAdmin и все заработало… Теперь причесать все и будет гут…
    Вот уж не ожидал, что Студия никак себя не проявит, если Администратор не находит библиотеку..

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

    Да, поведение VS совсем не помогает найти причину.
    В общем, если драйвер или модуль использует другие библиотеки, то Администратор их ищет в своей папке. Так устроен .NET Framework. Конечно можно ещё разместить библиотеку в GAC, но не стоит слишком заморачиваться.

    #11946
    manjey73
    Участник

    Да, спасибо за определение причины. сам бы я точно не догадался. Хотя раньше немного удивлялся повтором библиотек в папках Администратора, Коммуникатора, Сервера но даже не ойкнуло нигде, что причина будет в этом…

    Что-то я писал, писал драйвер под теплосчетчик, а в результате это вылилось в драйвер Пульсаровского протокола…
    Уже зацепил им и свой Компактный теплосчетчик и счетчик воды и Регистратор импульсов на 10 каналов 🙂

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

    Выложим информацию о драйвере в репозиторий, если он уже оттестирован?

    #11966
    manjey73
    Участник

    Пока запись прикручиваю.
    Вопрос опять родился, а как Администратор видит количество сигналов управления ?

    Что там надо переопределять ?

    А блин, что-то было в ссылках про CtrlCnlProps

    • Ответ изменён 7 лет, 2 месяца назад пользователем manjey73.
    • Ответ изменён 7 лет, 2 месяца назад пользователем manjey73.
    #11983
    manjey73
    Участник

    Михаил, подскажите, как выполнить поиск индекса KPTags с нужным мне значением сигнала ?
    KPTags — это вроде как раз список сквозной для сигналов с 0 индекса, когда номера сигналов сквозные то signal-1 это и есть номер индекса, но если номера не сквозные то туши свет… леплю кучу счетчиков и проверок.
    например
    var test = KPTags[10].Signal мне выдает мой номер сигнала (в моем случае номер сигнала 21)

    А вот как найти индекс (10) ну или другой зная номер сигнала у меня не получается..
    В своих списках ищу, но тот же способ не прокатывает с KPTag…

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

    как Администратор видит количество сигналов управления ?

    В KpView.DefaultCnls возвращает в том числе прототипы каналов управления.

    подскажите, как выполнить поиск индекса KPTags с нужным мне значением сигнала ?

    Пока нужно использовать свои вспомогательные массивы с индексами. Но в ветке develop уже добавлено свойство KPTag.Index.

    #12020
    manjey73
    Участник

    Михаил, а как внутри этой комбинации недопустить создание канала управления, если его для входного канала нет ?

                                foreach (KeyValuePair<int, string> signame in ActiveTagName)
                                {
                                    inCnls.Add(new InCnlPrototype(signame.Value, BaseValues.CnlTypes.TI)
                                    {
                                        Signal = signame.Key
                                        CtrlCnlProps = ctrlCnls[0]
                                    });
                                }
    

    CtrlCnlProps = ctrlCnls[0]

    То есть если канал управления есть, туда я найду и размещу индекс, А если нет канала управления, как в этом перечислении в цикле исключить эту команду ?

    • Ответ изменён 7 лет, 2 месяца назад пользователем manjey73.
    #12032
    manjey73
    Участник

    Фигня какая то….
    Ошибка

    Видно, что значение ключа = 21

    и на следующем шаге
    ` ctrlCnls.Add(new CtrlCnlPrototype(«Установить — » + ActiveTagName[cmdnum.Key], BaseValues.CmdTypes.Standard)
    {
    CmdNum = ckey
    });
    `
    Получаю ошибку — Данный ключ отсутствует в словаре ?
    Это как ?… чего может не хватать ?

    А блин, походу его нет в ActiveTagName а не то, что я подумал….
    Зараза, он там будет, но позже :)….

    • Ответ изменён 7 лет, 2 месяца назад пользователем manjey73.
    • Ответ изменён 7 лет, 2 месяца назад пользователем manjey73.
    • Ответ изменён 7 лет, 2 месяца назад пользователем manjey73.
    #12043
    Mikhail
    Модератор

    Цикл по ActiveCmd, а извлекаете данные из ActiveTagName

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

    как внутри этой комбинации недопустить создание канала управления, если его для входного канала нет ?

    Как-то так можно:
    CtrlCnlProps = Ваше условие ? ctrlCnls[0] : null

    Либо разбить этот код на составные части, отделив new InCnlPrototype(…) от присвоения значения свойству CtrlCnlProps.

    #12049
    manjey73
    Участник

    Уже разобрался. А Цикл правильный, в смысле по ActiveCmd, а данные берет из ActiveTagName, просто по простыне кода последний оказался ниже, а должен быть выше и уже сформированным.
    На счет «Как-то так можно» проверю завтра, спасибо.

    #12058
    manjey73
    Участник

    А формат числа из драйвера задается или это лишнее ?

    Если задается, сразу задать Дату и Время например что нужно указать ?

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

    Можете задать формат. Пример

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

    Но дату и время наверное не получится задать из драйвера.

Просмотр 15 сообщений - с 46 по 60 (из 64 всего)
  • Для ответа в этой теме необходимо авторизоваться.