Movesense,系统时间(以毫秒为单位)

时间:2019-04-10 13:03:09

标签: movesense

在Movesense平台上获取以毫秒为单位的当前时间的正确方法是什么?

在模拟器环境中,ftime可以正常工作,但是无法链接 到dfu二进制(未定义对ftime的引用):

struct time t_start;
ftime(& t_start)

我也尝试了这个,但是我没有得到适当的时间:

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

1 个答案:

答案 0 :(得分:1)

请记住,您在嵌入式设备上,并非所有功能都可以使用

gettimeofday()是CTIME的一部分,除非您或Movesense团队为此平台实现了该功能,否则它在moveense上可能不可用。

要获取设备时间,请使用Movesense团队提供的time API

启动模块时

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年以来的uSec数量,因此除以1000即可隐蔽到ms。

此外,请注意,如果在卸下电池或将芯片置于睡眠模式时未设置时钟,则时钟将设置为2015.01.01。

请注意,不同服务的时间戳是不同的,从纪元到毫秒,从纪元到秒,等等。

编辑: 如 user1987093 所述(我认为是为Movesense团队工作),您还可以通过对/ Time / Detailed进行GET请求来获取其他信息,这给出了当前UTC时间[us],即RelativeTime,即。时间戳[自重设以来的毫秒数](与传感器服务中的时间戳相同),分辨率[每秒的滴答声]以及精度[ppm]