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

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

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

相关文章

WSL2-轻量级AI训练场景最佳生产环境

WSL2 只适用于 Win 10 、Win11 在运行 AI 软件、AI 模型训练&#xff0c;Linux 是最佳的操作系统。 在运行各种软件&#xff0c;如&#xff1a;Stable Diffusion Web UI 等&#xff0c;使用 Docker 容器运行也更方便后期的快速复用&#xff0c;同样的 Docker 容器在 Linux 中…

基于springboot的网上服装商城推荐系统的设计与实现

基于springboot的网上服装商城推荐系统的设计与实现 开发语言&#xff1a;Java 框架&#xff1a;springboot JDK版本&#xff1a;JDK1.8 服务器&#xff1a;tomcat7 数据库&#xff1a;mysql 5.7 数据库工具&#xff1a;Navicat11 开发软件&#xff1a;idea 源码获取&#xf…

安灯系统助力汽车零部件工厂快速解决生产异常

在汽车零部件制造领域&#xff0c;高效的生产管理和快速解决异常情况是确保产品质量和生产进度的关键。而安灯系统的应用&#xff0c;正为汽车零部件工厂带来了全新的变革&#xff0c;助力其快速解决生产异常。 汽车零部件工厂的生产报工产线看板直观地反映出生产的各项关键数据…

富格林:曝光有利追损操作方式

富格林指出&#xff0c;现货黄金交易从曝光其交易时间灵活、可双向交易等交易优势以来便深受投资者的关注&#xff0c;但其交易风险也不容小觑。与大多数投资交易相似&#xff0c;现货黄金交易也同样会面临要追损的情况。事实上&#xff0c;追损的最好方式学会正确交易合理止损…

基于SpringBoot的“心灵治愈交流平台”的设计与实现(源码+数据库+文档+PPT)

基于SpringBoot的“心灵治愈交流平台”的设计与实现&#xff08;源码数据库文档PPT) 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;SpringBoot 工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 系统展示 系统功能界面图 登录、用户注册界面图 心灵专…

Dockerfile + docker-compose 构建java镜像并运行服务

&#x1f3dd;️ 博主介绍 大家好&#xff0c;我是一个搬砖的农民工&#xff0c;很高兴认识大家 &#x1f60a; ~ &#x1f468;‍&#x1f393; 个人介绍&#xff1a;本人是一名后端Java开发工程师&#xff0c;坐标北京 ~ &#x1f389; 感谢关注 &#x1f4d6; 一起学习 &…

使用flask构建一个简单的文件同步系统

使用Python构建文件同步系统&#xff1a;步骤指南 在当今互联网时代&#xff0c;能够在本地机器和远程服务器之间同步文件的能力变得至关重要。无论是备份重要文档、与团队成员共享大文件&#xff0c;还是在多个设备间保持数据一致性&#xff0c;一个强大的文件同步系统都能发…

【有啥问啥】智能座舱中的儿童遗留检测(CPD,Child Presence Detection)技术详解

智能座舱中的儿童遗留检测&#xff08;CPD&#xff0c;Child Presence Detection&#xff09;技术详解 引言 儿童遗留检测&#xff08;CPD&#xff0c;Child Presence Detection&#xff09;系统是一项旨在保护儿童免受因被遗忘在车内而导致的热中暑危险的重要安全技术。近年…

HCIP-HarmonyOS Application Developer 习题(十五)

&#xff08;判断&#xff09;1、在HarmonyOs中发布带权限公共事件&#xff0c;发布者首先要在config.json中申请所需的权限。 答案&#xff1a;正确 分析&#xff1a;发布携带权限的公共事件&#xff1a;构造CommonEventPublishInfo对象&#xff0c;设置订阅者的权限。 &#…

基于pytorch搭建CNN

先上代码 import torch import torch.nn as nn import torch.optim as optim import torch.nn.functional as F from torchvision import datasets, transforms import matplotlib.pyplot as plt import numpy as np import pandas as pd import matplotlibmatplotlib.use(tkA…

书生营 L0G4000 玩转HF/魔搭/魔乐社区

模型下载 在codespace上给环境装包&#xff0c;按照教材即可 运行后下载成功 建立下载json文件 新建下载internlm2_5-chat-1_8b的json文件 运行结果 基本上没啥问题&#xff0c;照着教程来就行 模型上传&#xff08;可选&#xff09; push的时候需要先认证token 最后的…

代码随想录:59. 螺旋矩阵 II

59. 螺旋矩阵 II x,y记录当前位置&#xff0c;b记录外层有多宽走完了。 接着模拟就行。向右向下向左向上四个方向一直走&#xff0c;直到不能走为止换方向。 注意换方向之间调整一下x,y的位置 class Solution {public int[][] generateMatrix(int n) {int answer[][]new int[…

vue使用 jsplumb 生成流程图

1、安装jsPlumb&#xff1a; npm install jsplumb 2、 在使用的 .vue 文件中引入 import { jsPlumb } from "jsplumb"; 简单示例&#xff1a; 注意&#xff1a;注意看 id 为"item-3"和"item-9"那条数据的连线配置 其中有几个小图片&#x…

Linux 权限的理解

内容摘要 本文内容包括shell的运行原理&#xff0c;包括外壳程序的原理、理解、和意义&#xff0c;以及从两个方面对于权限的理解&#xff08;人和事物的属性&#xff09;、修改文件的权限&#xff0c;包括修改文件的拥有者、修改文件拥有者所在的组的用户以及修改文件的三类用…

域渗透AD渗透攻击利用 MS14-068漏洞利用过程 以及域渗透中票据是什么 如何利用

目录 wmi协议远程执行 ptt票据传递使用 命令传递方式 明文口令传递 hash口令传递 票据分类 kerberos认证的简述流程 PTT攻击的过程 MS14-068 漏洞 执行过程 wmi协议远程执行 wmi服务是比smb服务高级一些的&#xff0c;在日志中是找不到痕迹的&#xff0c;但是这个主…

鸿蒙中富文本编辑与展示

富文本在鸿蒙系统如何展示和编辑的&#xff1f;在文章开头我们提出这个疑问&#xff0c;带着疑问来阅读这篇文章。 富文本用途可以展示图文混排的内容&#xff0c;在日常App 中非常常见&#xff0c;比如微博的发布与展示&#xff0c;朋友圈的发布与展示&#xff0c;都在使用富文…

【树莓派 5B】anaconda换源 更换清华源

【树莓派 5B】anaconda换源 更换清华源 前言 本文基于树莓派5B上运行的 Raspberrypi-OS-64bit &#xff08;Debian 12 Bookworm&#xff09;平台&#xff0c;更换 Anaconda 官方源为清华大学镜像源&#xff0c;旨在解决网络连接超时、连接官方源失败、下载速度慢的问题。 参…

spring (Aop) day 1024

ok了家人们&#xff0c;继续学习spring &#xff0c;这段知识点有点绕&#xff0c;建议搭配b站的视频去学&#xff0c;passion&#xff01;&#xff01;&#xff01; 八.AOP-面向切面编程 8.1 动态代理 8.1.1 概述 什么是代理&#xff1f;在现实生活中&#xff0c;代理很常见…

Python多进程编程:使用`multiprocessing.Queue`进行进程间通信

Python多进程编程&#xff1a;使用multiprocessing.Queue进行进程间通信 1. 什么是multiprocessing.Queue&#xff1f;2. 为什么需要multiprocessing.Queue&#xff1f;3. 如何使用multiprocessing.Queue&#xff1f;3.1 基本用法3.2 队列的其他操作3.3 队列的阻塞与超时 4. 适…

学习虚幻C++开发日志——TSet

TSet 官方文档&#xff1a;虚幻引擎中的Set容器 | 虚幻引擎 5.5 文档 | Epic Developer Community (epicgames.com) TSet 是通过对元素求值的可覆盖函数&#xff0c;使用数据值本身作为键&#xff0c;而不是将数据值与独立的键相关联。 默认情况下&#xff0c;TSet 不支持重…