Работа с границами в версии 6

Стартовая страница Форумы Понять, как работает ПО Работа с границами в версии 6

Помечено: ,

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

    так как у вас выбор из 3-х, то нужно создать скрипт, в котором вы все это и пропишите. Потом ВашСкрипт(Cnl) во входной формуле.

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

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

    То есть, чтобы удобно воспользоваться перечислением, нужно в таблицу Скрипты добавить функцию, которая на основе входящего значения (или по номеру канала-источника данных) возвращает, 0, 1, 2…

    #42018
    mr_serg
    Участник

    Что-то не получается, написал скрипт вроде должен работать

    public string GetValueWithIfElse(int input)
    {
    if (input == 35)
    return «Норма»;
    else if (input == 36)
    return «Протечка»;
    else
    return «Потеря связи»;
    }

    Как данный скрипт првязать к каналу?

    #42019
    manjey73
    Участник

    данные каналов — double
    Номера каналов — int

    И учитывая, что вы пишите на русском, то получите «Прот» вместо Протечка в одном канале.

    Сделайте формулу с case и приведение ваших значений к 0, 1, 2 и т.д. (были примеры) + перечисление
    А потерю связи контролируйте через служебный тег устройства Status

    #42020
    mr_serg
    Участник

    Так получается?

    public double GetValueDZ(double val)
    {
    switch ((int)val)
    {
    case 35: return 1; // Норма
    case 36: return 0; // Протечка
    case -68: return 2; // Потеря связи
    }
    }

    #42021
    manjey73
    Участник

    типа того, непонятно зачем приводить к int только (на счет синтаксиса не подскажу, смотреть надо)

    #42022
    manjey73
    Участник

    А в перечислении просто добавить своё от нуля

    Протечка; Норма; Потеря связи

    и выбрать это перечисление в канале

    #42023
    manjey73
    Участник

    Пример case

    ну только не слова возвращать а число. Ну и в справке по C# на счет case проверьте

    • Ответ изменён 6 месяцев, 2 недели назад пользователем manjey73.
    #42025
    Mikhail
    Модератор

    В новом синтаксисе C# появились switch expressions, с помощью которых можно получить более короткую запись.

    #42029
    manjey73
    Участник

    Не понял, как это поможет преобразовать число 56 в 0 например?

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

    Примерно так:

    return (int)Cnl switch {
      56 => 0,
      57 => 1,
      _ => 2
    };
Просмотр 11 сообщений - с 31 по 41 (из 41 всего)
  • Для ответа в этой теме необходимо авторизоваться.