AUTOSAR_EXP_ARAComAPI的5章笔记(8)

☞ 返回总目录

5.3.7 Fields

从概念上讲,与 Event 不同,Field 在任何时候都具有一定的值。这与 Event 相比,带来了以下附加内容:

  • 如果对 Field 进行了订阅,“立即” 会以类似事件通知的模式将当前值发送回订阅者。
  • 当前 Field 的值可以通过调用 Get () 方法进行查询,或者通过 Set () 方法进行更新。

请注意,Field 提供的所有功能都是可选的:在 Field 的配置(IDL)中,您可以决定它是否具有 “on-change-notification”、Get () 或 Set ()。在我们的示例 Field(见下文)中,我们配置了所有这三种机制。

对于远程服务提供的每个字段,Proxy Class 都包含一个特定于该字段的包装类的成员。在我们的示例中,该成员的名称为 UpdateRate(类型为 fields::UpdateRate)。

与 Event 和 Method 的包装类一样,Proxy Class 所需的 Field 包装类在特定的命名空间 fields 中生成,该命名空间包含在代理命名空间内。

故意把 Field 的解释放在 Event 和 Method 的解释之后,因为 Field 的概念大致是一个包含相关 get ()/set () 方法的 Event 的聚合。因此,从技术上讲,我们也将 ara::com 字段的表示实现为 ara::com 事件和方法的组合。

因此,代理中的 Field 成员用于:

  • 使用与常规方法完全相同的机制调用 Field 的 Get () 或 Set () 方法。
  • 以事件 / 事件数据的形式访问 Field 更新通知,这些通知由我们的代理连接的服务实例发送,其机制与常规事件完全相同。

让我们看一下为我们的示例 UpdateRate 字段生成的 Field 包装类:

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);
};

这里没有更多要描述的内容了。关于该字段中类似 Event 的部分的机制文档,请查看 5.3.5 小节;关于该 Field 中类似方法的部分的文档,请查看 5.3.6 小节。

5.3.8 触发器(Triggers)

触发器只是一类无数据的事件。这意味着 5.3.5 小节中的所有文档也适用于触发器,除了与数据相关的部分在本节中进行描述。从代理的角度来看,订阅触发器与 5.3.5.1 小节中描述的相同,但没有本地缓存部分。

/*** 应用程序期望通信管理(CM)订阅该事件。*/
ara::core::Result<void> Subscribe();

一个Subscribe()调用将通知通信管理接收触发器更新。其他订阅功能(例如SubscribeChangeSetSubscriptionHandler()、Unsubscribe())与事件相同。

与事件的一个很大区别是接收触发器更新。与事件不同,在事件中我们对接收的数据感兴趣,而对于触发器,我们只对自上次检查以来接收到的触发器数量感兴趣。因此,GetNewTriggers()GetNewSamples()更简单:

/*** 获取如果有接收到的触发器的数量。* * 返回结果,表示新触发器的数量(零意味着没有新的触发器已被接收)。*/
size_t GetNewTriggers();

返回值表示自上次调用GetNewTriggers()以来发生的已接收触发器的数量。如 5.3.5.5 小节中提到的基于轮询和事件驱动的访问也适用于触发器。

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

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

相关文章

web基础—dvwa靶场(十一)CSP Bypass

CSP Bypass(CSP 绕过) 内容安全策略&#xff08;CSP&#xff09;用于定义脚本和其他资源可以从何处加载或执行&#xff0c;本模块将指导您根据开发人员犯下的常见错误来绕过该策略。 这些漏洞都不是 CSP 中的实际漏洞&#xff0c;它们都是实现 CSP 的方式中的漏洞。 绕过内容安…

JAVA——IO_缓冲流

目录 一、字节缓冲流 二、字符缓冲流 字符缓冲输入流( BufferedReader ) 字符缓冲输出流&#xff08; BufferedWriter ) 缓冲流作用&#xff1a;对原始流进行包装&#xff0c;以提高原始流读写数据的性能 一、字节缓冲流 1. 作用&#xff1a;提高字节流读写数据的性能 2…

使用scp命令从本地往服务器传输文件失败

解决办法&#xff1a; 找到这个文件&#xff0c;打开&#xff0c;将里面的服务器ip对应的一行数据删掉即可。

【Python报错已解决】To update, run: python.exe -m pip install --upgrade pip

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 专栏介绍 在软件开发和日常使用中&#xff0c;BUG是不可避免的。本专栏致力于为广大开发者和技术爱好者提供一个关于BUG解决的经…

麒麟操作系统快捷键设置

这些是银河麒麟操作系统常用的快捷键&#xff0c;和Windows系统有点儿相似。 但也有一些快捷键为未列出来&#xff0c;如CtrlALTT打开终端&#xff0c;Ctrld关闭终端&#xff0c;F2&#xff1a;重命名&#xff1b; CtrlshiftN&#xff1a;新建文件夹。

虚拟机ens33网卡不显示inet地址(已设置NOBOOT为yes)

在虚拟机中输入ifconfig或ip addr时&#xff0c;出现如下情况&#xff1a; sudo dhclient ens33sudo ifconfig ens33依次执行上面两行&#xff0c;之后发现ens33中可以显示inet了 本虚拟机的地址就是192.168.244.131

ABAP 一步一步教你添加ALV界面菜单功能按钮

ABAP 一步一步教你添加菜单功能按钮。 程序里面找到这个组件小按钮 就可以看到GUI状态了。 在修改GUI STATUS 是如果要添加一个功能按钮&#xff0c;必须先创建一个功能键&#xff08;具体参照下方&#xff09;&#xff0c;之后再在应用程序工具栏输入该功能键的功能码否则报…

Windows上创建批处理.bat文件并且注册为开机自启(Python-web微服务)

1. winodws桌面点击创建文本文件 &#xff08;文件名称.txt&#xff09; 2. 将如下代码写入txt文件中 echo off if "%1""h" goto begin start mshta vbscript:createobject("wscript.shell").run("""%~nx0"" h"…

百元学生党头戴式耳机选哪个?四款热门天花板机型推荐

当前市场上&#xff0c;耳机产品的竞争愈发激烈&#xff0c;降噪技术也日益精进。回想过去&#xff0c;要想享受到优质的降噪体验&#xff0c;动辄需要花费数千元&#xff0c;但现在&#xff0c;高品质的降噪耳机已经降至百元级别。在众多降噪耳机中&#xff0c;头戴式耳机尤为…

网站SEO,该如何规范目标网站URL配置!

随着互联网技术的飞速发展&#xff0c;搜索引擎优化&#xff08;SEO&#xff09;在网站建设和运营中的重要性日益凸显。优化目标网站的URL配置&#xff0c;作为SEO策略中的关键环节&#xff0c;对于提升网站在搜索引擎中的排名和曝光度具有至关重要的作用。大连蝙蝠侠科技将从U…

掌握IT资产发现的三个步骤

IT 资产生态系统非常复杂&#xff0c;因为资产不断变化&#xff0c;包括新增资产、移除过时资产或修改现有资产。在这种动态环境中&#xff0c;IT 资产管理者很难全面查看所有拥有的资产。 根据Gartner的预测&#xff0c;到 2025 年&#xff0c;大约 30% 的关键基础设施组织将…

Hutool树结构工具-TreeUtil构建树形结构

1 pom.xml <dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.8.26</version> </dependency> 2 核心代码 import cn.beijing.satoken.domain.ZhiweiCityArea; import cn.beijing.sa…

机器人上的DPDK使用思考

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

【AI视频】Runway:Gen-2 运镜详解

博客主页&#xff1a; [小ᶻZ࿆] 本文专栏: AI视频 | Runway 文章目录 &#x1f4af;前言&#x1f4af;Camera Control&#xff08;运镜&#xff09;&#x1f4af;Camera Control功能测试Horizonta&#xff08;左右平移&#xff09;Vertical&#xff08;上下平移&#xff0…

双token无感刷新

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

【使用Hey对vllm接口压测】模型并发能力

使用Hey对vllm进行模型并发压测 docker run --rm --networkknowledge_network \registry.cn-shanghai.aliyuncs.com/zhph-server/hey:latest \-n 200 -c 200 -m POST -H "Content-Type: application/json" \-H "Authorization: xxx" \-d {"model"…

如何查询论文的SCI检索号?

一、登录Web of Science 不要自己登录&#xff0c;需要选择机构为CHINA CERNET Federation&#xff0c;否则无法查询文章。 然后转到机构&#xff0c;选择对应的大学。 更具对应文章名查询文献。 二、查询文献名

CUDA并行架构

一、CUDA简介 CUDA(Compute Unified Device Architecture)是一种由NVIDIA推出的通用并行计算架构&#xff0c;该架构使GPU(Graphics Processing Unit)能够对复杂的计算问题做性能速度优化。 二、串并行模式 高性能计算的关键是利用多核处理器进行并行计算。 串行模式&#…

使用Anaconda安装pyTorch

1.Anaconda简介 Anaconda 是一个流行的 Python 数据科学和机器学习平台&#xff0c;它简化了包管理和部署&#xff0c;使得安装、运行和升级包及其依赖变得非常容易。Anaconda 通过其内置的 Conda 包和环境管理器&#xff0c;提供了一个强大的环境&#xff0c;用于科学计算&…

鸿蒙手势交互(四:多层手势)

四、多层手势 指父子组件嵌套时&#xff0c;父子组件均绑定了手势或事件。有两种&#xff0c;一种默认多层级手势事件&#xff0c;一种自定义多层级手势事件。 默认多层级手势事件&#xff1a;需要分清两个概念&#xff0c;触摸事件&#xff0c;手势与事件 触摸事件&#xf…