AUTOSAR_EXP_ARAComAPI的6章笔记(4)

☞返回总目录

相关总结:《AUTOSAR 自适应应用中原始数据流传输的使用方法》总结

6.4 原始数据流传输的使用方法

本章描述了原始数据流(RawDataStreams)在 AUTOSAR 自适应应用程序中的使用方法。

目前,原始数据流传输在单播 / 多播以及 UDP/TCP 连接的配置方面支持四个用例。这些用例在 [1:AUTOSAR_SWS_CommunicationManagement] 中的 “Raw Data Streaming” 章节中进行了描述。最常见的用例是 “1:1 TCP 单播”,因此在本教程中以此为例。

6.4.1 序列图

图 6.10 展示了在客户端使用原始数据流传输 API 时的序列。

图 6.11 展示了在服务器端使用原始数据流传输 API 时的序列。

注意,客户端发送数据和服务器读取数据的序列也是有效的。

6.4.2 使用方法

由于原始数据流式传输提供了一个应用程序编程接口(API),所以必须要有原始数据流服务器(RawDataStreamServer)或者原始数据流客户端(RawDataStreamClient)的实例,并且要按照 6.4.1 中所描述的序列来调用这些方法。

6.4.2.1 作为服务器的使用示例

代码 6.12 展示了如何使用 RawDataStreamServer 进行发送和接收数据。

// 注意!为了简单起见,这个例子没有使用 ara::core::Result。
#include "ara/core/instance_specifier.h"
#include "raw_data_stream.h"

int main() 
{
    size_t rval;
    ara::com::raw::RawDataStream::ReadDataResult result;

    // 从模型中获取实例说明符
    ara::core::InstanceSpecifier instspec {...};

    // 创建 RawDataStream Server 实例
    ara::com::raw::RawDataStreamServer server{instspec};

    // 等待传入连接
    server.WaitForConnection();

    // 从原始数据流中以 10 字节为一块读取数据
    do
    {
        result = server.ReadData(10);
        rval = result.numberOfBytes;
        if (rval > 0) 
        {
            // 假设数据是可打印的
            std::cout << "-->" << result.data.get() << std::endl;
        }
    } while (rval > 0);

    // 向原始数据流中以 16 字节为一块写入数据
    int i=0;
    do
    {
        std::unique_ptr<uint8_t> write_buf (new uint8_t[1024] {...});
        rval = server.WriteData(std::move(write_buf), 16);
        ++i;
    }while (i<1000);

    // 关闭原始数据流连接
    server.Shutdown(); 
    return 0;
}

6.4.2.2 作为客户端的使用示例

代码 6.13 展示了如何使用 RawDataStreamClient 进行发送和接收数据。

// 注意!为了简单起见,这个例子没有使用 ara::core::Result。
#include "ara/core/instance_specifier.h"
#include "raw_data_stream.h"

int main() 
{
    size_t rval;
    ara::com::raw::RawDataStream::ReadDataResult result;

    // 从模型中获取实例说明符
    ara::core::InstanceSpecifier instspec {...};

    // 创建一个 RawDataStreamClient 实例
    ara::com::raw::RawDataStreamClient client {instspec};

    // 连接到 RawDataStream 服务器
    client.Connect();

    // 向原始数据流中以 40 字节为一块写入数据
    int i=0;
    do 
    {
        std::unique_ptr<uint8_t> write_buf (new uint8_t[1024]{.....});
        rval = client.WriteData(std::move(write_buf), 40);
        ++i;
    } while (i<1000);

    // 从原始数据流中以 4 字节为一块读取数据
    do 
    {
        result = client.ReadData(4);
        rval = result.numberOfBytes;
        if (rval > 0)
        {
            // 假设数据是可打印的
            std::cout << "-->" << result.data.get() << std::endl;
        }
    } while (rval > 0);

    // 关闭原始数据流连接
    client.Shutdown(); 
    return 0;
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

input子系统的框架和重要数据结构详解

#1024程序员节 | 征文# 往期内容 I2C子系统专栏&#xff1a; 专栏地址&#xff1a;IIC子系统_憧憬一下的博客-CSDN博客具体芯片的IIC控制器驱动程序分析&#xff1a;i2c-imx.c-CSDN博客 – 末篇&#xff0c;有往期内容观看顺序 总线和设备树专栏&#xff1a; 专栏地址&#…

【Linux:网络基础】

网络协议&#xff1a; 协议实际上可以称为一种“约定”&#xff0c;通过网络通信中的数据约定&#xff0c;不同主机必须遵循相同的网络协议才可以实现通信。 协议即为通信双方都认识的结构化的数据类型 协议分层 协议的本质也是软件&#xff0c;在设计上为了更好的进行模块…

C++刷怪笼(9)继承

目录 1.前言 2.正文 2.1继承的概念和定义 2.1.1继承的概念 2.1.2继承的定义 ​编辑 2.1.3继承类模板 2.2基类和派生类间的转换 2.3继承中的作用域 2.3.1隐藏规则 2.4派⽣类的默认成员函数 2.4.1个常⻅默认成员函数 2.4.2实现⼀个不能被继承的类 2.5继承与友元 2.…

QT中使用图表之QChart概述

在Qt中使用QChart类可以快速绘制一个图表出来&#xff0c;比如折线图、饼图、柱状图等 QChart类用来管理图表中的图形、图例、轴等 QChartView是专门用来显示图表的类&#xff0c;相当于一个QWidget或者窗口&#xff0c;用来显示QChart 即总的步骤就是 1、创建QChartView的…

codeforces _ 补题

C. Ball in Berland 传送门&#xff1a;Problem - C - Codeforces 题意&#xff1a; 思路&#xff1a;容斥原理 考虑 第 i 对情侣组合 &#xff0c;男生为 a &#xff0c;女生为 b &#xff0c;那么考虑与之匹配的情侣 必须没有 a | b &#xff0c;一共有 k 对情侣&#x…

零基础学西班牙语,柯桥专业小语种培训泓畅学校

No te comas el coco, seguro que te ha salido bien la entrevista. Ya te llamarn. 别瞎想了&#xff01;我保证你的面试很顺利。他们会给你打电话的。 这里的椰子是"头"的比喻。在西班牙的口语中&#xff0c;我们也可以听到其他同义表达&#xff0c;比如&#x…

一、开发环境的搭建

环境搭建步骤&#xff1a; 下载软件安装软件运行软件 其他&#xff1a; Visual studio 安装包文件&#xff1a;https://www.alipan.com/s/nd5RgzD4e3b 下载软件 在浏览器中搜索Visual studio&#xff0c;选择如图的选项 点击该区域&#xff0c;进入该页面&#xff0c;【或…

SSH免密钥登录

1: 用 ssh-key-gen 在本地主机上创建公钥和密钥 winr cmd 打开控制台 ssh-keygen -t rsa 一直按enter 2: 用 ssh-copy-id 把公钥复制到远程主机上 user 是用户名 remote_host是远程主机 ssh-copy-id -i ~/.ssh/id_rsa.pub userremote_host 3: 直接登录远程主机&#xf…

对外部供应商依赖带来的战略限制分析

当企业过分依赖单一或少数供应商时&#xff0c;一旦这些供应商出现问题&#xff0c;如生产延误、质量问题或财务困难&#xff0c;企业的运营将受到严重影响。例如&#xff0c;2020年的新冠疫情期间&#xff0c;许多企业因为供应商无法按时交货而面临生产停滞&#xff0c;导致巨…

Windows11家庭版安装Docker Desktop软件教程

下载Windows安装包 我们建议将源代码和其他数据绑定到 Linux 容器中时,将其存储在 Linux 文件系统中,而不是 Windows 文件系统中。 docker官网首页https://www.docker.com/ (需要科学上网)下载Windows版本的Docker Desktop。 或者使用已经下载好的Docker Desktop 安装包…

理解ADC:为什么量化噪声也会产生谐波?附带介绍 Dither(抖动)

前言 今天继续从经典的 ADI 《MT-001》说起&#xff0c;通常情况下量化噪声是白噪声&#xff0c;但如果量化噪声与输入信号之间存在相关性&#xff0c;就不能被当做白噪声对待。 文中举了一个有意思的例子&#xff1a;理想 ADC 的采样频率为 80 MSPS &#xff0c;一种情况输入…

外包干了7天,技术明显退步。。。。。

先说一下自己的情况&#xff0c;本科生&#xff0c;22年通过校招进入南京某软件公司&#xff0c;干了接近2年的功能测试&#xff0c;今年年初&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了2年的功能测试&…

vue组件在项目中的常用业务逻辑(1)

若要使用一个组件&#xff08;已有基本结构&#xff09; 1.在api>index.js获取接口数据&#xff08;这里是模拟数据&#xff09; 2.去vuex仓库&#xff08;store>home.js&#xff09;存储数据&#xff08;state mutations actions三连环&#xff09; &#xff08;准备…

Linux网络命令:系统中用于显示和操作 ARP缓存表的命令arp详解

目录 一、概述 二、用法 1、基本语法 2、常用选项 3、获取帮助 三、示例 1. 显示所有 ARP 表项 2. 以数字形式显示 IP 地址 3. 删除指定的 ARP 表项 4. 添加一个静态 ARP 表项 5. 显示详细信息 四、详细说明 1、ARP 缓存表 2、静态 ARP 表项 3、动态 ARP 表项 五、常…

如何在短时间内入门并掌握深度学习?

如何在短时间内快速入门并掌握深度学习&#xff0c;是很多读者的困惑——晦涩难懂的数学 知识、复杂的算法、烦琐的编程……深度学习虽然让无数读者心怀向往&#xff0c;却也让不少人望而生畏&#xff0c;深感沮丧&#xff1a;时间没少花&#xff0c;却收效甚微。 如何才能更好…

图像分割从基础到进阶:阈值化、K-means和Mean-Shift算法的应用

图像分割是计算机视觉中的一项关键技术&#xff0c;用来将图像划分为若干个 有意义 的区域&#xff0c;以便后续的图像处理和分析工作。根据任务的不同&#xff0c;图像分割可以进一步细分为语义分割、实例分割和全景分割&#xff1a; 语义分割 (Semantic Segmentation) 对图像…

JavaEE进阶----18.<Mybatis补充($和#的区别+数据库连接池)>

详解了 1.$和#的区别 2.数据库连接池。 3.简单了解MySQL企业开发规范 一、Mybatis面试题&#xff1a;$和#的区别是什么&#xff1f; MyBatis 参数赋值有两种方式&#xff0c;咱们前面使用了 #{} 进行赋值&#xff0c;接下来我们看下二者的区别。 1.1 #是预编译SQL&#xff0c;$…

瑞格智慧心理服务平台 NPreenSMSList.asmx sql注入漏洞复现

0x01 产品描述&#xff1a; ‌ 瑞格智慧心理服务平台‌是一个集心理测评、心理咨询、心理危机干预、心理放松训练等功能于一体的综合性心理健康服务平台。该平台由北京瑞格心灵科技有限公司开发&#xff0c;旨在为用户提供全方位的心理健康服务。0x02 漏洞描述&#xff1a;…

Webserver(1.8)操作函数

目录 文件属性操作函数access函数chmod函数chown函数truncate函数 目录操作函数mkdir函数rmdir函数rename函数chdir函数*getcwd函数 目录遍历函数*opendir函数*readdir函数closedir函数 dup、dup2函数dupdup2 fcntl函数 文件属性操作函数 access函数 判断某个文件是否有某个权…

(49)MATLAB实现迫零均衡器原理与代码

文章目录 前言一、迫零均衡器设计说明二、迫零均衡器MATLAB源代码1.函数说明2.代码实现3.辅助函数 前言 使用MATLAB实现迫零均衡器。给出完整的MATLAB设计源代码。 一、迫零均衡器设计说明 理想的迫零均衡器有无限多个抽头权系数&#xff0c;是不能实现的&#xff0c;本文考虑…