Дата время (BCD)

Просмотр 15 сообщений - с 16 по 30 (из 59 всего)
  • Автор
    Сообщения
  • #23130
    Mikhail
    Модератор

    Пришлите ссылки на скриншоты настроек и ошибку.

    #23143
    a80808
    Участник

    Вот не поленился 🙂
    По ссылке измененный проект Hello World! (для версии 6 — ну нету у меня установленной пятерки 🙂 .
    Там добавлено два канала с пересчетом по формулам Михаила канала 105 (аналоговый ввод — сюда нужно вводить дату в BCD). В таблице они в самом низу

    Ссылка на проект

    Ну и картинки 🙂 :
    Это сразу после передачи проекта

    Вводим 5636
    А вот тут 5638

    В общем все работает. Просто должен быть канал с данными BCD (тут он 105), ну и еще два канала с днем и месяцем. В канале дня пишем формулу GetDay(Val(105)), месяца соответственно GetMonth (Val(105)).

    Разумеется формулы добавлены в таблицу Скрипты.

    #23145
    VylegzhaninD
    Участник

    Ииии! Круто!
    Спасибище, Михаил и а80808, за формулы, за разъяснения и тесты!!!
    Получаю то как оно и должно быть! Всё работает!

    #23146
    a80808
    Участник

    Обращайтесь 🙂

    #23147
    manjey73
    Участник

    По уму сделать как в описании и привести к DateTime и всего одним расчетным каналом собрать все регистры до кучи.

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

    Добавлю: чтобы при отсутствии данных в исходном канале, данные не показывались в дорасчётном канале, нужно добавить в формулу канала
    НАЧАЛО_ФОРМУЛЫ; Stat(101)
    где 101 — исходный канал

    По уму сделать как в описании и привести к DateTime и всего одним расчетным каналом собрать все регистры до кучи.

    Да, лучше всего в итоге собрать дату и время в один канал.

    #23177
    a80808
    Участник

    Да, лучше всего в итоге собрать дату и время в один канал
    А как лучше — текст или UTC()?

    #23178
    a80808
    Участник

    Хотя для UTC() не хватает года…разве что текущий подставлять

    #23182
    VylegzhaninD
    Участник

    А как сделать чтобы в канале осталось последнее возвращенное значение? т.е. чтобы не «0», но и не «—» а последнее полученное значение, пока не будет получено следующее?

    #23183
    VylegzhaninD
    Участник
      Хотя для UTC() не хватает года…разве что текущий подставлять

    год есть в таком же виде другим каналом если по аналогии то разбирается на начало и конец «20» и «22»

    • Этот ответ был изменен 1 год, 12 месяцев назад от VylegzhaninD.
    #23185
    VylegzhaninD
    Участник

    Да, было бы замечательно собрать всё в один канал и придать формат даты и времени. В текущем положении некорректно выглядят значения 0-9, так например время 1:2 (один час две минуты) дата ещё куда ни шло например 21.4.2022 но с ноликом выглядело бы лучше. ведь в базе нет формата чисел DD или DDDD

    #23186
    a80808
    Участник

    последнее полученное значение, пока не будет получено следующее

    Ну разве что писать еще в один канал (к сожалению пока нет глобальных переменных в памяти, приходится обходиться каналами — ничего, в шестой версии их много 🙂 ) с проверкой на достоверность — т.е если 0 или «-«…или еще чего не так — не пишется

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

    А как сделать чтобы в канале осталось последнее возвращенное значение?

    Было здесь на форуме, поищите. Используется функция Val().
    Данная тема про время BCD.

    Чтобы собрать дату и время воедино, нужно завести отдельный дорасчётный канал. В его формуле создать объект типа DateTime на основе других каналов и закодировать в дату с помощью EncodeDate. Настроить формат вывода канала

    #23229
    a80808
    Участник

    Михаил, а в шестой версии нет EncodeDate()…. Во всяком пишет что нет такого в пространстве имен…

    #23230
    manjey73
    Участник

    public double EncodeDate(DateTime dateTime)
    {
    return dateTime.ToOADate();
    }

    В скриптах есть — идентификатор 4 Date and Time

Просмотр 15 сообщений - с 16 по 30 (из 59 всего)
  • Вы должны авторизироваться для ответа в этой теме.