Стартовая страница › Форумы › Вопросы без категории › Оправка команды перед командой
- В этой теме 10 ответов, 4 участника, последнее обновление 1 год, 3 месяца назад сделано
Mikhail.
-
АвторСообщения
-
06.03.2025 в 12:52 #37049
ivan3012020
УчастникДобрый день!
Подскажите пожалуйста можно ли написать модуль который будет позволять отправить команду перед отправкой команды.
То есть мы в таблице выбираем канал с настройкой температуры. Пишем значение новой температуры.
и у нас сначала отправляется первая команда (разрешение на запись)
после отправляется вторая команда (то что мы хотим поменять температур)
какие функции нужно для этого использовать ?06.03.2025 в 12:56 #37052
manjey73УчастникМодуль автоуправления должен справиться с задачей. Надо только понять что за чем отправлять. Или скажем так видя, что вы меняете Т, сперва отправить команду разрешения, а уже потом Т.
06.03.2025 в 13:25 #37055
JurasskParkУчастникА можно сделать плагин(exe), который будет делать запись данных.
+ всякие плюшки.
Но только на Windows.)06.03.2025 в 13:58 #37065
MikhailМодераторДобрый день!
Используйте для этой цели Модуль автоматического управления06.03.2025 в 16:32 #37071
manjey73УчастникВопрос как это сделать?
Чтобы меняя уставку перехватить Модулем и сперва отправить некую команду, а уже потом эту уставку ?
И в догонку — а если после предварительной команды надо дождаться подтверждения, что она принята ?07.03.2025 в 12:33 #37110
MikhailМодераторНапример, отменить исходную команду и отправить две команды в нужной последовательности с задержкой.
Модуль только отправляет команды в Коммуникатор, поэтому состояние связи не проверяется.07.03.2025 в 12:36 #37112
manjey73УчастникОк, мы отменили первичную команду задания значения, как Модуль узнает, какое значение отправлять во второй команде?
Можно пример для понимания процесса?
09.03.2025 в 16:07 #37140ivan3012020
УчастникДобрый день!
Я все еще пробую. написать свой плагин..
Вот какой у меня код получается
public override void OnIteration()
{
CnlData curData = ServerContext.GetCurrentData(InputChannel);
CnlData curData2 = ServerContext.GetCurrentData(OutputChannel);if (curData.IsDefined)
{
if (curData.Val != curData2.Val)
{
ServerContext.SendCommand(new TeleCommand(PassworChanel, password, UserID));
Thread.Sleep(1000);
ServerContext.SendCommand(new TeleCommand(OutputChannel, curData.Val , UserID));}
}
}Идея в чем у меня есть канал 101 (это пароль) и канал 102 (значение которое надо поменять) и канал 103.
Мы делаем запись в канал 103, если эта запись не равно 102 каналу. То сначала отправляем значение на 101 канал а потом на 102.09.03.2025 в 16:08 #37141ivan3012020
УчастникНо это все не работает, пишет в ответ что ошибка в команде на отправку (статистики линии)
09.03.2025 в 16:42 #37142
manjey73УчастникИ какая ошибка?
Если вы делаете модуль, то там можно в лог модуля выводить что вам нужно.
з.ы. когда уже допишу свой модуль? Там можно будет дописывать код на C# самой логики, а модуль уже выполняет связи.
Подобный модуль это Модуль управления Фермой (ModFarm) но он более специфичен и узкозаточен будет. Но можете его посмотреть и попробовать написать логику, как там описано.10.03.2025 в 14:20 #37164
MikhailМодератормы отменили первичную команду задания значения, как Модуль узнает, какое значение отправлять во второй команде?
Есть такой параметр в настройках команды, чтобы использовать исходные данные.
Вопросы по разработке модулей пишите, пожалуйста, в разделе разработки.
-
АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.