Стартовая страница › Форумы › Разработка и интеграция › ServerContext.SendCommand
- В этой теме 11 ответов, 4 участника, последнее обновление 2 года назад сделано
Mikhail.
-
АвторЗаписи
-
19.08.2024 в 17:21 #34122
manjey73УчастникВопрос, каким должен быть канал, чтобы записались в него данные из модуля при помощи
ServerContext.SendCommand(new TeleCommand(OutputChannel, 1, UserID));
???
Просто Calculated канал может быть? или обязательно должен быть ххх/Output ?
Так же вопрос, если в Calculated канале будет входная и выходная формула вида
Val() и SetVal(CnlNum, Cmd) можно записать значение ?Пытаюсь просто в Calculated записать из модуля и лыжи не едут.
20.08.2024 в 06:57 #34130
manjey73УчастникПохоже Telecommand для привязанных каналов в Коммуникаторе.
Как определить тип канала?
Calculated, Input и т.д. где в коде их енумерация, не могу найти.20.08.2024 в 08:15 #34132
a80808УчастникА таблица «Типы каналов» не поможет?
20.08.2024 в 08:45 #34134
manjey73УчастникТак вот CnlTypeId косячит, нужен оригинал кода, где?
Ро выпадающем списку у меня какое-то несоответствие.
+ Выбираю канал как Input, код в каком-то месте перестает работать, и не вызывает исключение при этом.20.08.2024 в 09:50 #34135
JurasskParkУчастник/// <summary> /// Performs actions on a new iteration of the main operating loop. /// Выполнение действия на новой итерации основного рабочего цикла. /// </summary> public override void OnIteration() { try { DebugerLog("======================================"); DebugerLog("Start"); DebugerLog("IsFileStorage = " + Storage.IsFileStorage + ""); DebugerLog("IsReady = " + Storage.IsReady + ""); DebugerLog("ViewAvailable = " + Storage.ViewAvailable + ""); configDatabase = new ConfigDatabase(); string tableTitle = CommonPhrases.UndefinedTable; foreach (IBaseTable baseTable in configDatabase.AllTables) { tableTitle = baseTable.Title; storage.ReadBaseTable(baseTable); DebugerLog(baseTable.Name + "[" + baseTable.ItemCount + "]"); } tableTitle = CommonPhrases.UndefinedTable; configDatabase.Init(); foreach (Cnl cnl in configDatabase.CnlTable.Where(c => c.Active)) { for (int i = 0, len = cnl.GetDataLength(); i < len; i++) { int test = cnl.CnlNum + i; DebugerLog("i=" + i.ToString() + " cnlNum=" + cnl.CnlNum + " test=" + test + ""); CnlData curCnlData = serverContext.GetCurrentData(cnl.CnlNum); DebugerLog("val=" + curCnlData.Val.ToString() + " stat=" + curCnlData.Stat.ToString() + ""); Random random = new Random(); curCnlData.Val = random.Next(0, 1000); curCnlData.Stat = 1; DebugerLog("val=" + curCnlData.Val.ToString() + " stat=" + curCnlData.Stat.ToString() + ""); serverContext.WriteCurrentData(cnl.CnlNum, curCnlData); CnlData curCnlDataWrite = serverContext.GetCurrentData(cnl.CnlNum); DebugerLog("Write val=" + curCnlDataWrite.Val.ToString() + " stat=" + curCnlDataWrite.Stat.ToString() + ""); } } Log.WriteAction(Locale.IsRussian ? "База конфигурации считана успешно" : "The configuration database has been read successfully"); //ReadConfigDatabase(); DebugerLog("Stop"); } catch (Exception ex) { moduleLog.WriteError(ex.ToString()); } }Пример записи значения в тег из модуля. Может поможет 🙂
20.08.2024 в 12:35 #34138
MikhailМодераторServerContext.SendCommand отправляет команду. Канал должен быть выходного типа.
Запись значения в канал — это другое и записывается другим методом.20.08.2024 в 17:36 #34141
manjey73УчастникЯ чуть о другом.
Вижу выпадающий список типов каналов, а он не бьёт с цифрами типов.
Список отсортирован? Как точно по цифре определить тип?
Где его енумерация, не могу найти20.08.2024 в 20:06 #34142
JurasskParkУчастникНумерация типа идёт по порядку как объявлен в коде. От 0.
Если нет принудительного присваивания.20.08.2024 в 20:13 #34143
manjey73УчастникТак вот в списке идёт
Calculated
Calculated/Output
Input
Input/Output
OutputА Input/Output вроде имеет номер 2 а не 3. В общем какая-то нестыковка.
20.08.2024 в 22:37 #34144
manjey73УчастникТак, задам вопрос иначе.
ServerContext.Cnls.CalcCnls — Это каналы Calculated
ServerContext.Cnls.OutCnls — Это каналы выходныеServerContext.Cnls.ArcCnls — Это архивные — в каком плане архивные ?
ServerContext.Cnls.MeasCnls — Это какие?Где каналы Input ? вот просто Input, без всяких Output, Архив и что там еще ?
20.08.2024 в 22:48 #34145
manjey73УчастникНашел. и Input в Meas оказался.
Что такое ArcCnls ? — архивным же может быть любой тип канала, нет?
21.08.2024 в 17:29 #34147
MikhailМодераторЕсли канал имеет тип Выходной (без слова Входной или Расчётный), то он не записывается в архив, потому что через него можно только команду отправить.
-
АвторЗаписи
- Для ответа в этой теме необходимо авторизоваться.