Стартовая страница › Форумы › Понять, как работает ПО › Формулы › Перевести секунды, в часы и минуты
- В этой теме 82 ответа, 6 участников, последнее обновление 1 год, 9 месяцев назад сделано
manjey73.
-
АвторСообщения
-
29.08.2024 в 15:55 #34414
manjey73УчастникНапример входная формула Val(), чтобы мы увидели введенное собой.
Выходная в теме ввод датыЧтобы записать в канал SetVal(CnlNum, GetDT(CmdDataStr))
Например в моем случае надо используя Расчетный/Выходной
1. ввести время
2. Отобразить в web
3. Отправить в модульНапример для Сервера я преобразую в UTC, как об этом узнает Модуль, привязанный к этому каналу в какой часовой пояс надо преобразовать?
Простой пример, оператор на +4, или к этому же серверу подключился другой оператор с +6 (это пример если web не выставлены на одну зону конечно, но даже если выставлены, то на какую? )
29.08.2024 в 19:45 #34417
manjey73УчастникПроблемка заключается в том, что для модуля входная переменная это curData.Val то есть та, что берется из канала.
При этом в канал надо записать в UTC, а в модуль должна попасть чистая переменная, то есть время, которое введем.30.08.2024 в 15:08 #34448
MikhailМодераторВ модуль отправится значение команды после его возможного преобразования по формуле.
В канал запишется то, что будет задано в SetVal(). Есть полная свобода действий по преобразования исходного значения, которое ввёл оператор. Если развёрнуто 2 экземпляра вебстанции в разных часовых поясах, то мы не узнаем, с какого экземпляра отправлена команда.30.08.2024 в 15:21 #34454
manjey73УчастникНе понял по части 1 — каким образом Модуль получит данные, которые возвращает команда?
CnlData curData = ServerContext.GetCurrentData(cnl.Value.CnlNum); if (curData.IsDefined) {GetCurrentData — надо заменить на что-то другое? я не вижу там получения именно команды от сервера. Или есть иной путь?
-
Ответ изменён 1 год, 9 месяцев назад пользователем
manjey73.
30.08.2024 в 15:51 #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.
02.09.2024 в 09:05 #34489
manjey73УчастникПо 1 вроде проверил, в OnCommand модуля идет значение, которое даю в return.
А при помощи SetVal записываю с преобразованием в Utc в канал.Пока не знаю, позволит мне код записать данные из OnCommand в то, что крутится в OnIteration, учитывая параллельное исполнение этих механизмов…
02.09.2024 в 12:31 #34490
MikhailМодераторПока не знаю, позволит мне код записать данные из OnCommand в то, что крутится в OnIteration, учитывая параллельное исполнение этих механизмов…
Из метода обработки команды OnCommand можно записать текущие данные в какой-нибудь канал. Их должно быть видно из других методов модуля.
-
Ответ изменён 1 год, 9 месяцев назад пользователем
Mikhail.
02.09.2024 в 12:37 #34494
manjey73УчастникПроблема в том, что в OnIteration крутятся потоки, и запись, чтение идет через потоки через привязанный к ним словарь.
Было бы просто чтение каких-то каналов и их запись, то и проблем бы не было.
-
Ответ изменён 1 год, 9 месяцев назад пользователем
-
АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.