Iskra JS и модуль часов DS3231

Тема в разделе "Iskra JS, Espruino, Йодо", создана пользователем Joshua, 7 окт 2016.

  1. Joshua

    Joshua Нерд

    подключаю в проекте модуль:
    http://www.espruino.com/DS3231

    столкнулся с проблемой. отдает время только в полном формате вместе с датой:
    Код (Text):
    10/07/16 19:37:03
    для этого используется метод .readDateTime());

    мне же дата не нужна, только время.
    как можно его получить?

    использовать библиотеку Амперки, думаю, что не смогу, т.к. в дальнейшем проект планирую перенести на плату на базе ESP8266.
     
  2. Joshua

    Joshua Нерд

    это для arduino. а мне для javaScript нуна
     
  3. petypen

    petypen Нерд

    Посмотрел код модуля, так вот дата-время этим методом возвращается как строка.
    У вас два решения:
    1. Разбирать строку, выделяя от туда часы минуты и секунды и перевод из строк в число.
    2. Изменить код модуля https://github.com/espruino/EspruinoDocs/blob/master/devices/DS3231.js
     
  4. sys

    sys Злобный Буратино Модератор

    .readDateTime().slice(9,17) не?
     
    Joshua нравится это.
  5. petypen

    petypen Нерд

    Да, должно так сработать.
    Или изменить метод модуля и возвращать
    Код (Javascript):
    var data = this.i2c.readFrom(C.i2c_address, 7/* bytes */); //read number of bytes from address
     
    Это массив чисел. Часы, минуты и секунды, судя по коду модуля, это 2, 1 и 0 элемент массива соответственно.
     
    Joshua нравится это.
  6. sys

    sys Злобный Буратино Модератор

    лучше не менять, а дописать новый без
    var dow = bcd2dec(data[3]);
    var date = bcd2dec(data[4]);
    var month = bcd2dec(data[5]);
    var year = bcd2dec(data[6]);
    и их обработки
    либо использовать .readDateTime().slice(9,17).split(':') - массив где [0] - часы, [1] - минуты, [2] - секунды
     
    Joshua и petypen нравится это.
  7. Joshua

    Joshua Нерд

    Благодарю за подсказку. в варианте

    .readDateTime().slice(9,17) - работает