Номер линии связи V6

Просмотр 11 сообщений - с 1 по 11 (из 11 всего)
  • Автор
    Записи
  • #25628
    manjey73
    Участник

    Как получить номер линии связи из драйвера? что-то найти не могу…

    #25629
    manjey73
    Участник

    LineContext.CommLineNum — это оно?

    #25631
    manjey73
    Участник

    Все равно не понимаю, как создать переменную (объявить), чтобы она была общей между двумя и более устройствами на линии.

    В драйвере счетчика Меркурий я иначе делал, для каждого устройства был свой набор переменных.

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

    • Ответ изменён 3 года, 10 месяцев назад пользователем manjey73.
    #25633
    JurasskPark
    Участник

    Могу предложить сделать файл LinConfig.dat, котрый будет создаваться из xml файла и записывать туда настройку через BaseTableAdapter.

    P.S. у меня такая мысль пришла, когда захотел чтобы driver.logic писал туда данные опроса, а driver.view отображал оттуда данные. Заколебался я логи открывать и читать.. ?

    #25639
    manjey73
    Участник

    ? не, мне проще надо, одну переменную всего.
    Вроде решил через тот же способ, что и в Меркурий. Там есть в Logic MyDevice()
    Только мне надо было в старт линии перенести и соответственно не номер устройства в словарь заносить а номер линии.

    #25646
    Romiros
    Участник

    А почему не добавить в те же пользовательские свойства линии связи, после старта первого устройства?

    #25647
    manjey73
    Участник

    Чтобы не было видно 🙂 зачем в пользовательских свойствах служебные переменные типа bool, int и так далее ?

    #25652
    Romiros
    Участник

    По идее их и не будет видно. Просто в памяти будут висеть. Или нужно чтобы при перезапуске линии переменная бралась из файла или хранилища?

    #25653
    manjey73
    Участник

    Нет, формируется на лету первым экземпляром драйвера. Именно Логикой драйвера а не View частью.

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

    Нужно создать свой класс, экземпляр которого поместить в общие свойства линии связи. Внутри своего класса можно завести любые переменные. В качестве примера подойдёт DrvOpcUa

    #25667
    manjey73
    Участник

    Собственно так и сделал, а использование в зависимости от задачи, можно при старте линии, можно в сессии, как использовал в драйвере Меркурий.

     private class OptionLine
            {
                public bool log = false;
            }
    
            private OptionLine opLine = new OptionLine();
            private OptionLine GetOptionLine()
            {
                if (!LineContext.SharedData.ContainsKey(LineContext.CommLineNum.ToString()))
                {
                    LineContext.SharedData.Add(LineContext.CommLineNum.ToString(), opLine);
                }
                else
                {
                    opLine = LineContext.SharedData[LineContext.CommLineNum.ToString()] as OptionLine;
                }
                return opLine;
            }

    Далее использовал в старте линии
    GetOptionLine();

    Ну и обращение к переменной(ым, если их несколько) opLine.переменная

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