在Movesense平台上以毫秒为单位获取当前时间的正确方法是什么?
在模拟器env中,ftime工作正常,但它没有链接到dfu二进制文件(未定义的ftime引用):
struct time t_start;
ftime(& t_start)我也试过这个,但我没有得到一个合适的时间:
struct timeval te;
gettimeofday(&te, NULL); // get current time发布于 2019-04-11 09:55:04
请记住,您是在嵌入式设备上,并不是所有的功能都可用。
gettimeofday()是CTIME的一部分,在movesense上可能不可用,除非您或Movesense团队已经为这个平台实现了它。
要获得设备时间,请使用Movesense团队提供的时间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数,因此可以通过除以1,000来隐藏到ms中。
此外,请注意,时钟被设置为2015.01.01,如果没有设置时,电池被删除或芯片被放入睡眠模式。
请注意,对于不同的服务,不同服务的时间戳是不同的,从时代的ms,从时代的秒到时代的我们,等等。
编辑:正如user1987093 (我认为为Movesense团队工作)所提到的,您也可以通过对/ time /Detailed执行get请求来获得更多信息,这将给出当前的UTC time us,RelativeTime。时间戳ms自复位,每秒分辨率滴答,以及精确度ppm
https://stackoverflow.com/questions/55613283
复制相似问题