Стартовая страница › Форумы › Разработка и интеграция › Изменение переменной в рамках линии связи
- В этой теме 23 ответа, 2 участника, последнее обновление 3 года, 10 месяцев назад сделано Mikhail.
-
АвторСообщения
-
25.09.2019 в 17:49 #13717manjey73Участник
Хотя в принципе не так уже важно, главное что разнесенные во времени опросы одного прибора имеют разные ID запросов и счетчики у приборов с разными адресами у каждого свой.
26.09.2019 в 17:29 #13726MikhailМодераторНужно брать из общих параметров объект целиком MyCounter
MyCounter myCounter = CommonProps["MyCounter"];
а затем использовать поле myCounter.Counter.
Метод ToString() используется при выводе текстового представления объекта на txt файл.
26.09.2019 в 17:50 #13727manjey73УчастникТак вроде сперва так и делал, использовал поле myCounter.Counter сперва, но в текстовом файле было это
88 = Scada.Comm.Devices.KpRAdf1Logic+MyCounter
Но счетчик вроде был сквозным для двух вызовов. Потом что-то поломалось 🙂 Или я где-то не так что-то сделал..
То есть нужно в принципе писать туда объект, а ToString() на работу счетчика не повлияет ?
27.09.2019 в 18:36 #13734MikhailМодераторToString() на работу счётчика не повлияет, а должен повлиять на вывод в текстовый файл.
06.05.2020 в 11:58 #15907manjey73УчастникВозвращаясь к теме. Как в CommonProps оперировать несколькими переменными ?
public class MyDevice // счетчик для линии связи { public bool mcast = true; public long tik = 0; } protected virtual string address { get { return "DevAddr_" + Convert.ToString(Address); } } private MyDevice GetMyDevice() { MyDevice devaddr = CommonProps.ContainsKey(address) ? CommonProps[address] as MyDevice : null; if (devaddr == null) { devaddr = new MyDevice(); if (!CommonProps.ContainsKey(address)) { CommonProps.Add(address, devaddr); } } return devaddr; }
Соответственно будет сохранен объект devaddr с полями mcast (булевая) и tik (long)
но не могу понять как их вытянуть в коде ?
Если использовать только одну, например CommonProps.Add(address, devaddr.tik);
То без проблем, а как несколько ?- Этот ответ был изменен 3 года, 10 месяцев назад от manjey73.
06.05.2020 в 12:28 #15911MikhailМодераторНасколько я понимаю вопрос, нужно придумать несколько имен, например, address + «_name».
Хотя я бы, вероятно, упаковал бы всё что нужно внутрь одного объекта. Вы получаете из CommonProps объект целиком, а затем обращаетесь к его свойствам.
06.05.2020 в 12:58 #15912manjey73УчастникВот я и хочу несколько разных переменных добавить к одному объекту, но не получается обратиться к свойствам, почему то они не доступны.
Может надо было еще где-то что-то сделать ? но не пойму как ?
- Этот ответ был изменен 3 года, 10 месяцев назад от manjey73.
06.05.2020 в 15:15 #15915manjey73УчастникВсе, вроде разобрался, но вот предложенный вариант когда-то выше не прокатывает.
Работает только такMyDevice property = (MyDevice)CommonProps[address];
А если просто то ругается на приведение типов…
MyDevice property = CommonProps[address];
address соответственно выглядит как «DevAddress_20″например
06.05.2020 в 17:18 #15919 -
АвторСообщения
- Вы должны авторизироваться для ответа в этой теме.