Вопрос по скриптам

Просмотр 8 сообщений - с 1 по 8 (из 8 всего)
  • Автор
    Сообщения
  • #41704
    ddm
    Участник

    Здравствуйте, был написан скрипт на C#
    public string StatTest(double val)
    {
    string state = «»;
    ulong ulVal = (ulong)val;
    switch (ulVal)
    {
    case 0:
    state = «Останов»;
    break;
    case 1:
    state = «Работа»;
    break;
    case 2:
    state = «Авария»;
    break;
    default:
    state = «Неизвестно»;
    break;
    }
    return state;
    }
    скрипт во вспомогательную таблицу добавлен
    Как можно использовать этот скрипт для вывода текущего статуса на экран в примитив текст. Статус приходит в канал 101 в виде числа
    Создавала канал типа «Расчетный» во «Входной формуле» прописывала StatTest(101) — выдало «Неиз» (по какой-то причине в текст выводится не все), хотя текущее значение канала 101 — 1

    #41705
    manjey73
    Участник

    у вас слова длиннее 4-х символов Unicode.
    Нужно сделать массив — Указать длину 3 (должно хватать).
    И воспользоваться штатным скриптом SpliteUnicode(()=> Ваш_Скрипт)

    кажется так, если не ошибся. Ну и выбрать формат String

    зачем вы приводите к ulong? лишние телодвижения

    • Ответ изменён 3 месяца, 2 недели назад пользователем manjey73.
    #41707
    manjey73
    Участник

    и правильно SplitUnicode(() => StatTest(Val(101))) наверное, поищите в таблице скриптов формулу деления строк

    з.ы. и тут достаточно Перечисления, а case больше к приведению к последовательности 0,1,2 и т.д если значения канала 10, 35, 50 и так далее)

    • Ответ изменён 3 месяца, 2 недели назад пользователем manjey73.
    • Ответ изменён 3 месяца, 2 недели назад пользователем manjey73.
    #41710
    manjey73
    Участник

    Ну и вместо double val можно делать int NumCnl и внутри вашего сркипта уже доставать значение канала по номеру. Меньше писать во входной формуле 🙂

    #41711
    GreatAlex
    Участник

    у вас слова длиннее 4-х символов Unicode

    Поясните пожалуйста, при чем тут 4 символа?
    В скрипте идет возврат типа String, а он явно длиннее 4 символов Unicode.

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

    Добрый день!
    Для этой конкретной задачи скрипты не нужны. Создайте новый формат в таблице Форматы (по аналогии с Откл-Вкл) и используйте его для канала.

    #41715
    manjey73
    Участник

    Поясните пожалуйста, при чем тут 4 символа?

    Когда нужно сохранять строки без использования формата Перечисления, то в канал сохраняется только 8 байт (так как данные канала это double).
    Соответственно будет сохранено либо первые 4 символа Unicode, либо 8 символов ASCII.

    Для этого и предусмотрена возможность создать массив каналов и соответствующие скрипты, чтобы раскидать по этим каналам буквы 🙂

    #41716
    GreatAlex
    Участник

    в канал сохраняется только 8 байт

    ясно, спасибо

Просмотр 8 сообщений - с 1 по 8 (из 8 всего)
  • Для ответа в этой теме необходимо авторизоваться.