AutoSar AP进程间通信方式Field和Triggers的总结

news2024/9/21 1:35:03

☞ 返回总目录

1. Filed的部分

一、Field 的概念特点

与 Event 不同,Field 在任何时候都有确定的值。它相比 Event 有额外的特性:若订阅 Field,会立即以类似事件通知模式将当前值发给订阅者;可以通过 Get () 方法查询当前值,通过 Set () 方法更新值。Field 的这些功能是可选的,可在配置中决定是否具有 “on-change-notification”、Get () 或 Set ()。

二、Field 在 Proxy Class 中的体现

对于远程服务提供的每个字段,Proxy Class 包含特定的包装类成员。其包装类在特定命名空间 fields 中生成,该命名空间包含在代理命名空间内。Field 的概念大致是包含相关 get ()/set () 方法的 Event 的聚合,所以 ara::com 字段的表示实现为 ara::com 事件和方法的组合。代理中的 Field 成员可用于以常规方法机制调用 Get () 或 Set () 方法,以及以事件形式接收 Field 更新通知。

三、示例 UpdateRate 字段包装类

class UpdateRate 
{ 
    /**
     * \brief 事件数据类型的快捷方式。
     */
    using FieldType = uint32_t;
 
    /**
     * \brief 有关详细信息,请参阅 Events,因为字段包含通知的可能性,其中包含在那里描述的接口的详细信息。
     */
    ara::core::Result<void> Subscribe(size_t maxSampleCount);
    size_t GetFreeSampleCount() const noexcept;
    ara::com::SubscriptionState GetSubscriptionState() const;
    void Unsubscribe();
    ara::core::Result<void> SetReceiveHandler(ara::com::EventReceiveHandler handler);
    ara::core::Result<void> UnsetReceiveHandler();
    ara::core::Result<void> SetSubscriptionStateChangeHandler(ara::com::SubscriptionStateChangeHandler handler);
    void UnsetSubscriptionStateChangeHandler();
    template <typename F>
    ara::core::Result<size_t> GetNewSamples(
        F&& f,
        size_t maxNumberOfSamples = std::numeric_limits<size_t>::max());
 
    /**
     * 该 getter 允许请求服务提供者的实际值。
     * 
     * 有关 future 的描述,请参阅该方法。
     * 它应该表现得像一个方法。
     */
    ara::core::Future<FieldType> Get();
 
    /**
     * 该 setter 允许请求设置一个新值。
     * 由服务提供者决定是否接受请求或修改它。
     * 新值应作为响应发送回请求者。
     * 
     * 有关 future 的描述,请参阅该方法。
     * 它应该表现得像一个方法。
     */
    ara::core::Future<FieldType> Set(const FieldType& value);
};

以示例 UpdateRate 字段的包装类展示了其具体的方法,包括订阅相关方法、获取样本计数、获取订阅状态、设置接收和订阅状态变化处理器、获取新样本以及 Get () 和 Set () 方法用于获取服务提供者的实际值和设置新值。

最后提到关于该字段中类似 Event 的部分机制参考 5.3.5 小节,类似方法的部分参考 5.3.6 小节。

2. Triggers的部分

一、触发器的性质

触发器是一类无数据的事件,5.3.5 小节中的大部分文档适用于触发器,但数据相关部分在本节描述。

二、从代理角度看触发器订阅

从代理角度,订阅触发器与 5.3.5.1 小节描述相似,但没有本地缓存部分。调用Subscribe()函数可通知通信管理接收触发器更新,其他订阅功能(如SubscribeChangeSetSubscriptionHandler()Unsubscribe())与事件的相同。

三、触发器与事件的区别及GetNewTriggers()方法

与事件的主要区别在于对更新的关注点不同。事件中关注接收的数据,而对于触发器,只关注自上次检查以来接收到的触发器数量。GetNewTriggers()方法用于获取自上次调用该方法以来接收到的触发器数量,比用于事件的GetNewSamples()方法更简单。

四、访问方式

如 5.3.5.5 小节提到的基于轮询和事件驱动的访问方式也适用于触发器。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2150750.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

外国药品位置检测系统源码分享

外国药品位置检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer…

C语言中值传递

C语言中&#xff0c;值传递的问题 #include <stdio.h> void modifyValue(int x) { x 10; // 修改的是x的副本&#xff0c;对原始数据无影响 printf("在函数中修改的结果是:%d\n",x); }int main() { int a 5; printf("Before: %d\n", a); modifyV…

【资料分析】刷题日记3

第一套 √ 考点&#xff1a;基期比重差很温柔的题 普通专科女生 占比 52.5% - 1.7% 50.8% 成人本专科女生 占比 57.8% - 4.6% 53.2% 相比降低了2.4% 知比重和部分量&#xff0c;求整体在花生老师的解法中体会啥叫适当约分 0.1899 / 47.8% / 87.5% 》0.19 / &#xff08;4…

碎纸片的自动拼接复原技术

摘要&#xff1a;破碎文件的拼接在司法物证复原、历史文献修复以及军事情报获取等领域都有着重要的应用。目前发现对碎纸片的拼接大部分由人工完成&#xff0c;准确率较高&#xff0c;但耗费大量人力财力及时间&#xff0c;效率很低。随着计算机技术的发展&#xff0c;人们试图…

机器人上的DPDK使用思考

引言 项目背景 人形机器人作为智能技术的集大成者&#xff0c;正逐步从科幻电影走进现实生活&#xff0c;广泛应用于工业制造、医疗健康、家庭服务等多个领域。在这一发展过程中&#xff0c;传感器技术的飞速发展和物联网技术的广泛应用&#xff0c;极大地提升了人形机器人对…

微服务实战:规则引擎Drools

1. 概述 * 规则引擎核心思想&#xff1a;将应用程序中的业务决策部分分离出来 * 使得业务规则的变更不需要修改项目代码、重启服务器就可以在线上环境立即生效 2. 执行流程 drools规则引擎由以下三部分构成&#xff1a; Working Memory&#xff08;工作内存&#xff09; Ru…

360手机黑科技“位置穿越”功能修复 360位置穿越使用

​ 360手机刷机 360手机黑科技 360手机位置穿越 360手机位置修复 360手机站&#xff1a;360os.top 资源免费下载: os.360os.top 备用资源站&#xff1a;360手机-360手机刷机RootTwrp 360手机位置穿越 360手机位置穿越‌&#xff0c;是一款虚拟定位软件&#xff0c;无需进行r…

做谷歌外链有什么基础的要求?

做谷歌外链建设时有几个基本的要求需要注意。首先&#xff0c;收录率很关键&#xff0c;只有被谷歌成功收录的外链才会对网站产生正面影响。如果一个外链没有被收录&#xff0c;那它基本上对提升排名没有任何帮助 外链的多样性也是至关重要的。获取来自不同网站和平台的链接能为…

双token无感刷新

文章目录 &#x1f7e2;双token无感刷新1、token过期续期的五种方案对比2、双token的基本概念3、双token无感刷新的原理4、双token无感刷新的实现方式5.前端实现 ✒️总结 &#x1f7e2;双token无感刷新 对于token无感刷新这个东西有复杂度的话&#xff0c;它主要在后端&#x…

网站建设的服务器该如何选择?

服务器的选择对于网站的稳定运行、性能表现以及成本控制至关重要。以下是一些关键的考虑因素&#xff0c;帮助你选择适合的服务器&#xff1a; 明确需求&#xff1a;你需要先明确网站的需求和目标。这包括确定服务器将用于托管什么样的应用&#xff08;如Web前端、应用服务器、…

C/C++:优选算法(持续更新~~)

一、双指针 1.1移动零 链接&#xff1a;283. 移动零 - 力扣&#xff08;LeetCode&#xff09; 给定一个数组 nums&#xff0c;编写一个函数将所有 0 移动到数组的末尾&#xff0c;同时保持非零元素的相对顺序。请注意 &#xff0c;必须在不复制数组的情况下原地对数组进行操…

【算法】BFS 系列之 多源 BFS

【ps】本篇有 4 道 leetcode OJ。 目录 一、算法简介 二、相关例题 1&#xff09;01 矩阵 .1- 题目解析 .2- 代码编写 2&#xff09;飞地的数量 .1- 题目解析 .2- 代码编写 3&#xff09;地图中的最高点 .1- 题目解析 .2- 代码编写 4&#xff09;地图分析 .1- 题…

103.运行tomcat的Tomcatstartup.bat时,终端打印的中文显示为乱码

目录 原因 解决方法 原因 当运行Tomcat的Tomcatstartup.bat时&#xff0c;如果终端中文显示为乱码&#xff0c;这通常是因为Tomcat使用的日志输出编码与Windows命令行默认的编码不匹配。 解决方法 针对这一问题&#xff0c;你可以尝试以下步骤来解决&#…

【Spring】IocDI详解(6)

本系列共涉及4个框架&#xff1a;Sping,SpringBoot,Spring MVC,Mybatis。 博客涉及框架的重要知识点&#xff0c;根据序号学习即可。 有什么不懂的都可以问我&#xff0c;看到消息会回复的&#xff0c;可能会不及时&#xff0c;请见谅&#xff01;&#xff01; 目录 本系列共…

深度图可视化显示(kitti)

文章目录 前言一、读取深度值与图像1、深度值读取2、图像读取 二、深度图可视化1、深度图可视化代码2、深度图可视化结果展示 三、深度图在图像上可视化1、可视化代码2、可视化坐标显示 四、完整代码 前言 kitti数据是一个通用数据&#xff0c;有关kitti的深度图像内容我已有博…

扣子智能体实战:一键生成公众号图文,AI时代文盲也能写公众号,赚钱秘籍

文章目录 一&#xff0c;需求简述二&#xff0c;智能体制作1&#xff0c;智能体人设和技能2&#xff0c;流程开发2.1 设置开始节点2.2 增加一个生成标题的大模型节点2.3 增加一个代码节点 2.4 增加一个插件节点用以生成文章配图2.4 增加一个大模型节点-根据标题和思路生成文章大…

Excel--WPS 函数与公式技巧(轻松搞定各类排名)

一、直接按成绩或数值的排序&#xff08;rank函数轻松搞定&#xff09; 以上函数非常简单&#xff0c;记住两点&#xff1a; 1.rank排名同分作为同一名次&#xff0c;后面的名次需要占位&#xff0c;如&#xff0c;以上两个70分&#xff0c;同为第8名&#xff0c;那么第9名将被…

Shader 中的光源

1、Shader 开发中常用的光源属性 Unity当中一共支持四种光源类型&#xff1a; 平行光&#xff08;Directional&#xff09;点光源&#xff08;Point&#xff09;聚光灯&#xff08;Spot&#xff09;面光源&#xff08;Area&#xff09;— 面光源仅在烘焙时有用 不管光源类型到…

可视化工具箱-Visualization Toolkit(VTK)

一、Visualization Toolkit&#xff08;VTK&#xff09;简概 可视化工具箱&#xff08;VTK&#xff09;&#xff0c;是一个用于3D计算机图形、图像处理和科学可视化的开源软件系统&#xff0c;其包含C类库和Tcl/Tk、Java与python的解释型接口层。VTK支持各种可视化算法&#xf…

软设9.20

1 已知一个文件中出现的各字符及其对应的频率如下表所示。若采用定长编码&#xff0c;则该文件中字符的码长应为()。若采用Hufman编码&#xff0c;则字符序列“face”的编码应为()。 1.&#xff08;&#xff09; A.2 B.3 C.4 D.5 2.&#xff08;&#xff09; A.110001001101…