Movesense, системное время в миллисекундах

Как правильно узнать текущее время в миллисекундах на платформе Movesense?

В env симулятора ftime работает нормально, но не ссылается на двоичный файл dfu (неопределенная ссылка на ftime):

struct time t_start;
ftime(& t_start)

Я попробовал и этот, но не успел:

struct timeval te; 
gettimeofday(&te, NULL); // get current time

person user7439696    schedule 10.04.2019    source источник
comment
Получили ли вы ответ на свой вопрос в моем ответе или это все еще неясно? Если он отвечает на ваш вопрос, отметьте его как принятый ответ, если нет, пожалуйста, поясните, чего еще не хватает, и, возможно, я смогу помочь.   -  person Morten    schedule 15.04.2019


Ответы (1)


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

gettimeofday () является частью CTIME и, вероятно, недоступен в movesense, если вы или команда Movesense не реализовали его для этой платформы.

Чтобы узнать время устройства, используйте API времени, предоставленный командой Movesense.

При запуске модуля

whiteboard::ResourceId mTimeResourceId;
getResource("Time",mTimeResourceId); // this returns a status HTTP status code

Затем, когда вам понадобится время, возьмите его с:

asyncGet(mTimeResourceId);

Тогда можно будет получить ответ таким образом.

void OverskuddService::onGetResult(whiteboard::RequestId requestID,
                               whiteboard::ResourceId resourceId,
                               whiteboard::Result resultCode,
                               const whiteboard::Value& rResultData)
{
    switch(resourceId.localResourceId)
    {
        case WB_RES::LOCAL::TIME::LID:
        {
          if(resultCode == wb::HTTP_CODE_OK)
          {
             int64_t currentTime = rResultData.convertTo<int64_t>();
          }
        }
    }
}

Это возвращает количество микросекунд с 1970, так что скрыто до мс путем деления на 1000.

Кроме того, имейте в виду, что часы установлены на 2015.01.01, если не установлены, когда аккумулятор извлечен или чип переведен в спящий режим.

Имейте в виду, что отметки времени различаются для разных сервисов: мс от эпохи, нас от эпохи, секунды от эпохи и т. Д.

РЕДАКТИРОВАТЬ: как упомянул user1987093 (я думаю, работая в команде Movesense), вы также можете получить дополнительную информацию, выполнив запрос GET в / Time / Detail, это дает текущее время UTC [нас], RelativeTime т.е. Отметка времени [мс с момента сброса] (такая же, как отметка времени в сервисах датчиков), разрешение [тиков в секунду], а также точность [ppm]

person Morten    schedule 11.04.2019
comment
Хороший ответ Мортен. Также / Time / Detail дает текущее время в формате UTC [us], RelativeTime т.е. Отметка времени [мс с момента сброса] (такая же, как отметка времени в сервисах датчиков), Разрешение [тиков в секунду], а также Точность [ppm ]. - person PetriL; 12.04.2019