Стартовая страница › Форумы › Разработка и интеграция › Номер линии связи V6
- В этой теме 10 ответов, 4 участника, последнее обновление 3 года, 10 месяцев назад сделано
manjey73.
-
АвторЗаписи
-
22.10.2022 в 09:44 #25628
manjey73УчастникКак получить номер линии связи из драйвера? что-то найти не могу…
22.10.2022 в 09:46 #25629
manjey73УчастникLineContext.CommLineNum — это оно?
22.10.2022 в 10:29 #25631
manjey73УчастникВсе равно не понимаю, как создать переменную (объявить), чтобы она была общей между двумя и более устройствами на линии.
В драйвере счетчика Меркурий я иначе делал, для каждого устройства был свой набор переменных.
И главное, чтобы первый запущенный экземпляр изменил эту переменную для остальных.
-
Ответ изменён 3 года, 10 месяцев назад пользователем
manjey73.
22.10.2022 в 14:21 #25633
JurasskParkУчастникМогу предложить сделать файл LinConfig.dat, котрый будет создаваться из xml файла и записывать туда настройку через BaseTableAdapter.
P.S. у меня такая мысль пришла, когда захотел чтобы driver.logic писал туда данные опроса, а driver.view отображал оттуда данные. Заколебался я логи открывать и читать.. ?
23.10.2022 в 08:59 #25639
manjey73Участник? не, мне проще надо, одну переменную всего.
Вроде решил через тот же способ, что и в Меркурий. Там есть в Logic MyDevice()
Только мне надо было в старт линии перенести и соответственно не номер устройства в словарь заносить а номер линии.23.10.2022 в 18:49 #25646Romiros
УчастникА почему не добавить в те же пользовательские свойства линии связи, после старта первого устройства?
23.10.2022 в 19:26 #25647
manjey73УчастникЧтобы не было видно 🙂 зачем в пользовательских свойствах служебные переменные типа bool, int и так далее ?
23.10.2022 в 19:53 #25652Romiros
УчастникПо идее их и не будет видно. Просто в памяти будут висеть. Или нужно чтобы при перезапуске линии переменная бралась из файла или хранилища?
23.10.2022 в 20:28 #25653
manjey73УчастникНет, формируется на лету первым экземпляром драйвера. Именно Логикой драйвера а не View частью.
24.10.2022 в 13:33 #25661
MikhailМодераторНужно создать свой класс, экземпляр которого поместить в общие свойства линии связи. Внутри своего класса можно завести любые переменные. В качестве примера подойдёт DrvOpcUa
24.10.2022 в 21:54 #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.переменная
-
Ответ изменён 3 года, 10 месяцев назад пользователем
-
АвторЗаписи
- Для ответа в этой теме необходимо авторизоваться.