变速器组件
本节介绍 AutoCode 变速器组件。
创建变速器组件
在组件编辑器视图工具中选择:Constructor-> SubRegulMCom。
在组件编辑器视图中绘制变速器组件。
注意:
变速器组件第一个事件输入端口必须是 PubPort, 新建事件输入端口自动设置为 BindComPort (绑定第一个事件,由第一个事件输入端口调用)。
变速器组件介绍
功能描述
当一个服务从其它服务订阅资源,该资源发布频率非常快或不能满足当前服务处理频率时,可以使用变速器组件,配制该资源输出频率。变速器组件接收一个订阅资源,可以创建多个事件,每个事件可单独配制事件回调周期。
接口原型如下,详细信息请参考 vsoa_regulator_t:
vsoa_regulator_t *vsoa_regulator_create(const struct timespec *period);
bool vsoa_regulator_slot(vsoa_regulator_t *regulator, const vsoa_url_t *url, vsoa_regulator_func_t ondelay, void *arg, size_t buf_size);
组件模型
变速器组件是多通道管道组件,只有第一个事件输入端口允许外部连接。组件中其它事件为 COM_BIND 事件,第一个事件触发组件其它事件执行。 变速器组件第一个事件输入端口都是 VSOA-PUB 类型,输出端口没有限制。
变速器组件一般建模模型示例:
组件属性
变速器组件事件属性配置如下:
表 1 事件属性详细说明
名称 | 值 | 选项 | 缺省值 | 是否可配置 | 说明 |
---|---|---|---|---|---|
ID | event1 | / | 自动配置 | no | 事件 ID |
Period | 1000 | / | 1000 | yes | 变速器周期 (ms) |
BufSize | 4096 | / | 4096 | yes | 变速器缓存 (Byte) |
事件接口
变速器组件为输入事件(第一个事件)及 COM_BIND 事件创建正常用户接口。例如:
ac_result_t serc2_com1_event1_vsub_i(ac_t *acs, serc1_pub_t *param, void *data, size_t len);
ac_result_t serc2_com1_event2_cbind_i(ac_t *acs, serc1_pub_t *param, void *data, size_t len);
示例
- 服务模型
- serc1 组件模型
- serc2 组件模型