Перевести секунды, в часы и минуты

Стартовая страница Форумы Понять, как работает ПО Формулы Перевести секунды, в часы и минуты

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

    Например входная формула Val(), чтобы мы увидели введенное собой.
    Выходная в теме ввод даты

    Чтобы записать в канал SetVal(CnlNum, GetDT(CmdDataStr))

    Например в моем случае надо используя Расчетный/Выходной
    1. ввести время
    2. Отобразить в web
    3. Отправить в модуль

    Например для Сервера я преобразую в UTC, как об этом узнает Модуль, привязанный к этому каналу в какой часовой пояс надо преобразовать?

    Простой пример, оператор на +4, или к этому же серверу подключился другой оператор с +6 (это пример если web не выставлены на одну зону конечно, но даже если выставлены, то на какую? )

    #34417
    manjey73
    Участник

    Проблемка заключается в том, что для модуля входная переменная это curData.Val то есть та, что берется из канала.
    При этом в канал надо записать в UTC, а в модуль должна попасть чистая переменная, то есть время, которое введем.

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

    В модуль отправится значение команды после его возможного преобразования по формуле.
    В канал запишется то, что будет задано в SetVal(). Есть полная свобода действий по преобразования исходного значения, которое ввёл оператор. Если развёрнуто 2 экземпляра вебстанции в разных часовых поясах, то мы не узнаем, с какого экземпляра отправлена команда.

    #34454
    manjey73
    Участник

    Не понял по части 1 — каким образом Модуль получит данные, которые возвращает команда?

    CnlData curData = ServerContext.GetCurrentData(cnl.Value.CnlNum);
    if (curData.IsDefined)
    {

    GetCurrentData — надо заменить на что-то другое? я не вижу там получения именно команды от сервера. Или есть иной путь?

    • Ответ изменён 1 год, 9 месяцев назад пользователем manjey73.
    #34463
    manjey73
    Участник

    Лажа.

    Значение curData.Val 30.08.2024 13:00:00 — вводил время 16:00:00

    Формула

    public double GetStrDT1(string dt)
    {
    SetVal(CnlNum, EncodeDate(DateTime.Parse(dt).ToUniversalTime()));
    return EncodeDate(DateTime.Parse(dt));
    }
    

    В WEB показывает теперь правильно, так как привел к UTC, а в модуль передалось именно UTC время, а не то, что в return

    Еще решения будут или на этом можно поставить крест?

    • Ответ изменён 1 год, 9 месяцев назад пользователем manjey73.
    #34489
    manjey73
    Участник

    По 1 вроде проверил, в OnCommand модуля идет значение, которое даю в return.
    А при помощи SetVal записываю с преобразованием в Utc в канал.

    Пока не знаю, позволит мне код записать данные из OnCommand в то, что крутится в OnIteration, учитывая параллельное исполнение этих механизмов…

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

    Пока не знаю, позволит мне код записать данные из OnCommand в то, что крутится в OnIteration, учитывая параллельное исполнение этих механизмов…

    Из метода обработки команды OnCommand можно записать текущие данные в какой-нибудь канал. Их должно быть видно из других методов модуля.

    • Ответ изменён 1 год, 9 месяцев назад пользователем Mikhail.
    #34494
    manjey73
    Участник

    Проблема в том, что в OnIteration крутятся потоки, и запись, чтение идет через потоки через привязанный к ним словарь.

    Было бы просто чтение каких-то каналов и их запись, то и проблем бы не было.

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