Как правильно получить текущее время в миллисекундах на платформе Movesense?
В симуляторе env ftime
работает нормально, но не связывается
в двоичный файл dfu
(неопределенная ссылка на ftime
):
struct time t_start;
ftime(& t_start)
Я попробовал также этот, но у меня не было нужного времени:
struct timeval te;
gettimeofday(&te, NULL); // get current time
Помните, что вы находитесь на встроенном устройстве, и не все функции доступны для использования
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, если они не установлены, когда батарея извлечена или чип переведен в спящий режим.
Имейте в виду, что временные метки различаются для разных сервисов, мс от эпохи, нас от эпохи, секунды от эпохи и т. д.
РЕДАКТИРОВАТЬ: Как упоминал пользователь1987093 (я думаю, работающий в команде Movesense), вы также можете получить дополнительную информацию, выполнив запрос GET к /Time/Detailed, это дает текущее время UTC [нас], RelativeTime, т.е. Временная метка [мс с момента сброса] (такая же, как временная метка в службах датчиков), разрешение [тиков в секунду], а также точность [ppm]
Хороший ответ Мортен. Также /Время/Подробно дает текущее время UTC [нас], относительное время, т.е. Отметка времени [мс с момента сброса] (то же, что и метка времени в службах датчиков), разрешение [количество тактов в секунду], а также Точность [ppm].
Вы получили ответ на свой вопрос в моем ответе или это что-то до сих пор не ясно? Если он отвечает на ваш вопрос, отметьте его как принятый ответ, если нет, уточните, чего еще не хватает, и, возможно, я смогу помочь.