在Movesense平台上获取以毫秒为单位的当前时间的正确方法是什么?
在模拟器环境中,ftime
可以正常工作,但是无法链接
到dfu
二进制(未定义对ftime
的引用):
struct time t_start;
ftime(& t_start)
我也尝试了这个,但是我没有得到适当的时间:
struct timeval te;
gettimeofday(&te, NULL); // get current time
答案 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]