1.1 时序框架
Etest实时脚本API提供了Frequency_T、Period_T、Ticker_T和 Timer_T等类,以便进行与时序有关的操作。
1.1.1 使用方法及范例
创建周期性触发的系统时钟使用Ticker_T类型。可以先创建一个Ticker_T对象,指定其触发周期,然后使用Start方法启动定时器,在启动的时候给出的参数为每次时钟周期到时被调用的函数。最后可以使用stop方法停止定时器。如以下范例:
创建一次性的系统延时可以使用Timer_T类型的delay方法。
使用方法为:
| Timer_T::delay(5.0); // Timer 结束时长(单位为秒) |
|---|
1.1.2 Frequency_T类与 Period_T 类
所在命名空间:Kiyun::LowerComputer::Rasl::Frame。
这两个类分别代表 频率 与 周期(时长)。其中 Period_T 有别名为 Timeout_T(时长)。
- 构造函数
函数原型:
Frequency_T(float);
Period_T(float);
函数功能:初始化一个Ticker_T对象
参数:step:频率(以赫兹为单位)或周期(以秒为单位)的浮点值。
返回值:Frequency_T / Peroid_T对象
- 自定义字面量
_hz 后缀可构造 Frequency_T 的对象;_s 后缀可构造 Period_T 的对象。如:
| Frequency_T 频率 = 0.5_hz; Period_T 周期 = 1e-3_s; // 1毫秒 |
|---|
- 算术运算
Frequency_T 和 Period_T 对象支持带量纲的算术运算。如下所示:
| auto f1 = 0.5_hz * 2; // => 1_hz f1 = f1 / 2.0; // => 0.5_hz auto t1 = 1.0 / 0.5_hz; // => 2_s float res = 2.0_hz * 4_s; // => 8.0 (无量纲) t1 = 10_s - 5_s; // => 5_s t1 = 5_s + 5_s; // => 10_s t1 = 1_s * 0.1; // => 0.1_s f1 = 1.0 / t1; // => 10_hz |
|---|
注意:Frequency_T 对象不支持加减运算,因为其物理意义不明确。
各算术运算对应的赋值操作是支持的。如:
| auto f1 = 0.5_hz * 2; // => 1_hz f1 /= 2; // => 0.5_hz |
|---|
1.1.3 Ticker_T类
所在命名空间:Kiyun::LowerComputer::Rasl::Frame。
4) get方法一
函数原型:static Ticker_T get(Step_t&& step)
函数功能:初始化一个Ticker_T对象
参数:step:用于计算“下一时刻”的函数对象。类型描述为
typedef std::function<unsigned(unsigned)> Step_T;
注意 Frequency_T 和 Timer_T 类的对象均符合这一定义。
返回值:Ticker_T对象
- get方法二
函数原型:static Ticker_T get(const Step_t& step)
函数功能:同上。
- get方法三
函数原型:static Ticker_T get(Frequency_T freq)
函数功能:初始化一个Ticker_T对象
参数:freq:频率对象。
返回值:Ticker_T对象
- start方法
函数原型:void start(Listener_T&& hdl)
函数功能:启动一个系统时钟
参数:hdl: 回调函数,类型描述为:
typedef std::function<bool()> Listener_T;
返回值:无
u 注:hdl返回值为false时,系统时钟对象会被析构
- stop方法
函数原型:void stop()
函数功能:停止系统时钟
参数:无
返回值: 无
1.1.4 Timer_T类
实现系统延时功能。
- delay方法
函数原型:static void delay(Timeout_T t);
参数:t:延时时间。
typedef Period_T Timeout_T;
返回值:无。
- make方法
函数原型:static Timer_T make(Timeout_T t, Listener_T&& lis);
此方法立即返回,并在指定的延时后调用指定的函数。
参数:t:延时时间。
typedef Period_T Timeout_T;
参数:lis:延时到达后调用的回调函数。其原型为:void(Timer_T)
返回值:Timer_T 对象,可供调用 cancel 方法。
- cancel方法
函数原型:void cancel();
此方法只能在 make 方法的返回值对象上调用,取消定时器。
- restart方法
函数原型:void restart();
此方法只能在 make 方法的返回值对象上调用,定时器将重新开始计时。