Cyber-时间相关API
/* 时间相关API Time是一个用来管理时间的类;可用于当前时间的获取、耗时计算、时间转换等 Duration相关接口,用于表示时间间隔,可以按照指定的纳秒或者秒进行初始化 Rate接口一般用于休眠操作(会自动将频率换算成休眠时间) Timer可用于创建定时任务以周期性的运行,或者只运行一次 */ #include "cyber/cyber.h" // #include "cyber/time/time.h" 因为cyber中已经include了time.h,所以直接写cyber.h也是可以 using apollo::cyber::Time; using apollo::cyber::Duration; using apollo::cyber::Rate; using apollo::cyber::Timer; int main(int argv, char* argv[]) { /////////////////////////////////////Time///////////////////////////////////////// // 创建时间对象(构造函数) Time t1; // 1970-01-01 08:00:00 原点时间 Time t2 = Time(100); // 以纳秒为单位(可以查看Time中封装的函数重载,参数为整数时,为纳秒) Time t3 = Time(100.0); // 以秒为单位 Time right_now = Time::Now(); //获取当前时刻 Time mono_time = Time::MonoTime(); //获取系统启动到当前的时间 // 操作时间 AINFO << "t1 = " << t1; AINFO << "t2 = " << t2; AINFO << "t3 = " << t3; AINFO << "right_now = " << right_now; AINFO << "mono_time = " << mono_time; // 时间转换 AINFO << "t3(s): " << t3.ToSecond(); AINFO << "t3(ms): " << t3.ToMicrosecond(); AINFO << "t3(ns): " << t3.ToNanosecond(); AINFO << "t3(str): " << t3.ToString(); AINFO << "t3 is zero: " << t3.IsZero(); // 是否是原点时间 AINFO << "t1 is zero: " << t1.IsZero(); // 静态字段 静态函数 AINFO << "时间可用最小值:" << Time::MIN.toNanosecond(); AINFO << "时间可用最大值:" << Time::MAX.toNanosecond(); // 通过SleepUntil休眠10s // 先获取当前时间 Time rn = Time::Now(); // 再创建10s之后的时间对象 Time fu = Time(rn.ToSecond() + 10); // 再调用休眠函数 AINFO << "休眠前:" << rn; Time::SleepUntil(fu); AINFO << "休眠后:" << Time::Now(); ////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////Duration//////////////////////////////////// Duration du1(100); // 100ns Duration du2(5.0); // 5s Duration du3(3, 1000000); // 3.0001s Duration d4; AINFO << "du2(s): " << du2.ToSecond(); AINFO << "du2(ns): " << du2.ToNanosecond(); AINFO << "is zero: " << du2.IsZero(); // 休眠5s du2.Sleep(); ///////////////////////////运算符重载/////////////////////////////////////////// /* 重载了- + += -= == != > < >= <=等运算符 //具体请实际查看类中的定义 - + += -= 用于Time与Duration的运算 == != > < >= <= 用于Time之间的比较 */ ////////////////////////////////Rate休眠////////////////////////////////////////////// Rate r1(0.5); // 浮点:设置频率 Rate r2(100); // 整型:设置休眠时间,单位是ns Duration du(2.0); Rate r3(du); // 也可以以持续时间为单位 // 调用函数,休眠 r1.Sleep(); ////////////////////////////////Timer定时器/////////////////////////////////////////////////// /* Timer(param1, param2, param3); param1:设置时间间隔(循环频率),单位ns param2:回调函数,无参数 无返回值 param3:是否只运行一次 true->一次 flase->循环执行 */ // 定义定时器 Timer timer(100, cb, false); // 启动定时器 time.Start(); // 关闭定时器 time.Stop(); return 0; }
自己选择的路,跪着也要走完。朋友们,虽然这个世界日益浮躁起来,只要能够为了当时纯粹的梦想和感动坚持努力下去,不管其它人怎么样,我们也能够保持自己的本色走下去。