【ARA com API】ara::core::Optional

2023-05-16

文章目录

  • ara::core::Optional 是什么
  • 标准中的代码示例

ara::core::Optional 是什么

实际上就是std::optional。但是当前的AP标准没有支持到那么新版本的C++标准(我没有具体研究是C++14 还是 17引入的,反正C++11是没有)

AP要求供应商来实现类似功能,放在ARA里叫做ara::core::Optional。

这个类型是实际作用就是可以方便的判断这个值是否存在。对 你没有看错,是否存在。

背后代码的实现方式有些类似与联合(union)。把一个bool 和 你要使用的数据类型联合。如果不存在直接读bool值就是false。

在代码中可以判断这个bool来实现兼容。

标准中的代码示例

类型定义

定义了current 和 health作为可选成员

 /** 
 * \brief Data structure with optional contained values. 
 */ 
 struct BatteryState {
 Voltage_t voltage;
 Temperature_t temperature;
 ara::core::Optional<Current_t> current;
 ara::core::Optional<Health> health;
 };

服务定义

本服务的版本只关心current

 using namespace ara::com;

 class BatteryStateImpl : public BatteryStateSkeleton {
 public: 
 Future<BatteryState> GetBatteryState() {
 // no asynchronous call for simplicity
 ara::core::Promise<BatteryState> promise;

 // fill the data structure
 BatteryState state;
 state.voltage = 14;
 state.temperature = 35;
 state.current = 0;
 // state.health is not set and therefore it is not transmitted

 promise.set_value(state);
 auto future = promise.get_future();
 return future;
 }
 }

客户端

客户端不知道服务里面支持什么可选数据

使用bool操作或者has_value()方法来先判断值是否存在再进行处理。

 using namespace ara::com;

 int main() {
 // some code to acquire handle
 // ...
 BatteryStateProxy bms_service(handle);
 Future<BatteryState> stateFuture = bms_service.GetBatteryState();
 // Receive BatteryState
 BatteryState state = stateFuture.get();

 // Check the optional contained elements for presence
 if(state.current) {
 //Access the value of the optional element with the optional::operator*
 if(*state.current >= MAX_CURRENT) {
 // do something with this information
 }
 }

 // Check with optional::has_value() method
 if(state.health.has_value()){
 // Access the value of the optional element with the optional::value() method
 if(state.health.value() >= BAD_HEALTH) {
 // do something with this information
 }
 }
 }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【ARA com API】ara::core::Optional 的相关文章

  • 在没有 ResetEvent 的情况下调用 setEvent

    如果使用 setEvent 设置手动重置事件但未使用 ResetEvent 重置 会发生什么情况 并且该事件被触发多次 即当事件被处理时 事件再次被设置 以下是示例任务 void foo SetEvent hEvent1 void foo1
  • 将特定 JSON 字段从 .responseText 提取到单个 Excel 单元格

    我正在尝试从 JSON 中检索特定字段 resolve 我不确定如何才能获得这一领域 我添加了 Msgbox Exists Fail 以查看代码是否能够读取单元格内的单词 resolve 但是我返回失败 有什么办法可以让我只获得现场解析吗
  • 如何使用 .NET XML API 删除 xmlns 属性

    XmlElement Attributes Remove 方法对于任意属性都可以正常工作 导致已删除的属性从 XmlDocument OuterXml 属性中删除 然而 Xmlns 属性是不同的 这是一个例子 XmlDocument doc
  • RESTful 设计:分页集合

    我正在设计一个 REST api 需要从服务器端强制执行分页 每个 x 翻阅任何资源集合的正确方法是什么 选项1 GET resource page
  • Angular2 - 多个依赖的顺序 http api 调用

    我正在构建一个 Angular2 应用程序 其中一个组件需要进行多个 API 调用 这些调用依赖于之前的调用 我目前有一项服务可以调用 API 来获取电视节目列表 对于每个节目 我需要多次调用不同的 API 来逐步检查该结构 以确定该节目是
  • AxInterop 和 Interop 有什么区别?

    我已将 ocx 添加到 VS 的工具箱中 创建了两个 dll Interop NNN dll AxInterop NNN dll 每一个是什么 两者都需要吗 Interop xxx dll 和 AxInterop xxx dll 分别是引用
  • 如何使用 API 创建 GitHub Gist?

    通过查看 GitHub Gist API 我了解到可以为匿名用户创建 Gist 而无需任何 API 密钥 身份验证 是这样吗 我找不到以下问题的答案 创建时是否有任何限制 要点数量 等 有没有任何示例可以让我从表单文本输入字段发布代码来创建
  • 多个异步 AJAX 调用最佳实践

    我有一个关于在单个页面上进行多个 AJAX 调用的 最佳实践 的问题 我需要异步进行 5 个独立的调用 我知道 ajax 本质上是异步的 但我很好奇是否有一种 更干净 或 更好 的方法来执行多个 AJAX 调用 下面是包含多个 AJAX 调
  • 如何从 Internet Explorer 嵌入对象访问完整的 Adob​​e Acrobat AcroExch COM API?

    我有以下情况 Windows 7 SP1 32 位上的 Internet Explorer 9 Adobe Acrobat 专业版 10 一个网页 代码如下 鉴于 系统默认的PDF阅读器是Adobe Acrobat Adobe Reader
  • 使用 oAuth 或其他方式实施访问

    我正在尝试想办法向其他第三方网站开放网站及其部分数据库 类似于 Twitter 让网络应用程序连接到其数据库以检索数据并可能存储数据的方式 我最初的研究让我想到了 oAuth 或者是 openID 我需要做的是让第三方网站登录网站上的用户帐
  • 如何获取 gmail api 的消费者密钥和消费者秘密?

    我正在尝试使用 Gmail php xoath php 示例 但是它需要输入消费者密钥和消费者秘密 我在 Gmail api 文档中找不到如何获取这些密钥和秘密 有谁知道如何获取它们或知道任何相关文档吗 Use anonymous anon
  • 具有多个参数的 COM“获取属性”

    我正在尝试打电话WindowsInstaller Installer ProductsEx http msdn microsoft com en us library aa369461 28v vs 85 29 aspx来自 python
  • 在非托管主机下的托管组件中获取一部分空闲处理

    我有一个用 C 编写的托管组件 它由旧版 Win32 应用程序作为 ActiveX 控件托管 在我的组件内部 我需要能够获得通常情况下的内容Application Idle http msdn microsoft com en us lib
  • 允许连接到完整性级别不匹配的 .NET COM 服务器

    我在基于 COM 的客户端 服务器设置方面遇到问题 COM 服务器是用 C NET 4 0 编写的 并作为 注册的 本地服务器运行 根据连接到服务器的应用程序 其他客户端将收到服务器执行失败 HRESULT 异常 0x80080005 CO
  • 适用于任何支付网关的购物车 API? (至少需要支付宝)

    我正在尝试找到一个基于 java 的 API 它至少包含处理信用卡交易或通过 PayPal 购买的详细信息 以及其他网关以 IPN 方式作为附加功能 即不需要产品 只需发票金额 作为一点简化 我认为我应该能够执行类似以下伪代码的操作 sho
  • 在 TWS API 中请求 nextOrderID 不起作用

    我正在尝试使用 python 通过 TWS API 下订单 我的问题是获取下一个有效的订单 ID 这是我正在使用的 from ibapi client import EClient from ibapi wrapper import EWr
  • 在 Windows Vista / 7 中从 C# 访问网络摄像头的“首选”方法

    我发现了很多讨论 WIA Windows 便携式设备 API 和 DirectShow 并给出示例代码 用于从 C 访问网络摄像头的帖子 但是当您研究每种方法时 您似乎会遇到这些都是 旧 方法的参考资料 因此 问题是 当运行 Windows
  • 无法通过 WSO2 API Manager 中的自定义中介流中的呼叫中介器

    在 WSO2 AM 1 10 中创建自定义中介流以实现 API 链接 作为第一步 我创建了此流程作为测试 它调用 REST 服务以生成令牌并将响应返回给客户端
  • 新的 Basecamp api 告诉我该地址没有 Basecamp 帐户

    我是 Basecamp api 的新手 在尝试最简单的示例时 curl u user pass H User Agent MyApp email protected cdn cgi l email protection https base
  • 适用于 Hotmail、Gmail 和 Yahoo 的 PHP API? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi

随机推荐

  • vxWorks6.9及workBench3.3常见配置

    1 双斜杠注释 在workBench集成开发环境当中 xff0c 默认的注释方式为 xxxxxx 如果想要使用 注释的方法必须修改workBench 的编译选项 xff0c 为编译选项添加c99支持或者gnu89 在编译选项中添加 std
  • 可能是最全的FreeRTOS源码分析及应用开发系列

    可能是最全的FreeRTOS源码分析及应用开发系列 FreeRTOS 是一个可裁剪的小型且免费的 RTOS 系统 xff0c 尺寸非常小 xff0c 可运行于微控制器上 其特点包括 xff1a 内核支持抢占式 xff0c 合作式和时间片调度
  • FreeRTOS系列|FreeRTOS简介

    1 RTOS简介 RTOS全称为 Real Time Operation System xff0c 即实时操作系统 RTOS强调的是实时性 xff0c 又分为硬实时和软实时 硬实时要求在规定的时间内必须完成操作 xff0c 不允许超时 xf
  • FreeRTOS系列|任务创建和删除

    1 任务创建和删除API函数 xTaskCreate 函数 xff1a 动态创建一个新的任务 xff0c 每个任务都需要RAM来保存任务状态 任务控制块 43 任务栈 xff0c 此接口采用动态分配内存资源 BaseType t span
  • FreeRTOS系列|多任务调度

    1 多任务启动流程 多任务启动流程如下表所示 启动后以下各函数由上至下依次执行含义osKernelStart 启动内核vTaskStartScheduler 启动任务调度器xPortStartScheduler 启动调度器prvStartF
  • PTP 报文格式

    HeaderBodySuffix34 字节Variable lengthOptional 所有的 PTP 帧都包含一个公共报头 xff0c 它决定了协议版本和消息类型 xff0c 还定义了消息的剩余内容 所有多字节字段以大端顺序发送 xff
  • makefile:make -C M=参数的使用

    Makefile为 xff0c PWD span class token operator 61 span span class token punctuation span shell pwd span class token punct
  • BW笔记(2011-10-24更新至No.237)

    1 同一个变量名的UID可能有多个 xff0c 记得注意 2 在查找时要注意技术名称还是名称 xff0c 因为查询时会在两个中进行 xff0c 模糊查询时要细心 xff0c FV与V都可以查到 3 复制的时候注意长度 xff0c 过长的会不
  • rpmsg 内核开发 用户层接口

    地址 xff1a https blog csdn net thisway diy article details 129195479 韦东山 Tina Linux E907开发指南 AMP 环境搭建 7 1 rpmsg 内核开发 7 2 r
  • __raw_writel, writel_relaxed 和 writel的区别

    因为对别的平台不了解 xff0c 下面仅谈它们在ARM上的区别 raw writel xff1a 因为有volatile关键字 xff0c 所以编译器不会打乱多个 raw writel的执行顺序 对于ARM而言 xff0c 当多个写以代码的
  • WFE和WFI的区别

    1 概念 xff1a WFI Wait for interrupt 和WFE Wait for event 是两个让ARM核进入low power standby模式的指令 xff0c 由ARM architecture定义 xff0c 由
  • Ubuntu16.04安装中文输入法

    转载地址 xff1a http blog csdn net suxiang198 article details 52040283 Ubuntu16 04安装完后 xff0c 和12 04以及14 04都不一样 xff0c 并没有中文输入功
  • QT linux安装

    转载地址 xff1a http www cnblogs com tangkaixuan p 6504102 html 文章来自https lug ustc edu cn sites qtguide 1 4 Qt在Linux下安装 Qt在Li
  • Linux CAN编程详解

    转载地址 xff1a http velep com archives 1181 html Linux CAN编程详解 是一篇百度文库上的文档 xff0c 主要描述了以下内容 xff1a can总线介绍及其帧类型 xff1b Linux 系统
  • buildroot学习(十)——at91sam9g45软件平台更新

    转载地址 xff1a https blog csdn net srf1986 article details 52474697 xff08 xff11 xff13 xff16 xff09 spice protocol In computin
  • killall 、kill 、pkill 命令详解

    转载地址 xff1a https www cnblogs com rsky p 4886043 html killall 命令 Linux系统中的killall命令用于杀死指定名字的进程 xff08 kill processes by na
  • PCIe扫盲——PCIe简介

    转载地址 xff1a http blog chinaaet com justlxy p 5100053066 PCI Express是继ISA和PCI总线之后的第三代I O总线 xff0c 即3GIO 由Intel在2001年的IDF上提出
  • Adaptive Autosar通讯层:ARA::COM中的Instance Identifiers

    一般概念 实例标识符 在收发两端都是要用的 是很核心的概念 proxy端用来搜索服务 xff0c skeleton端用来创建服务实例 站在API的角度来看 xff0c 这样的识别符是和特定的技术绑定的 所以 xff0c 标识符的结构和内容都
  • BW:数据源抽取机制(这篇是以前的笔记,写得很差,有不少错的地方,留着给自己看)

    题记 xff1a 忽然想到这么个问题 xff0c 后勤数据源和非后勤数据初始化有何区别 xff0c 然后进行周边的拓展 xff0c 所以就形成了下文 大部分知识源于 TBW350 和 SAP SDN 对数据源抽取机制的深入探讨 一 什么数据
  • 【ARA com API】ara::core::Optional

    文章目录 ara core Optional 是什么标准中的代码示例 ara core Optional 是什么 实际上就是std optional 但是当前的AP标准没有支持到那么新版本的C 43 43 标准 xff08 我没有具体研究是