给新手----编译VSOMEIP保姆级别教程
前言:当你学习了SOMEIP理论基础后,一定很希望上手实操一波吧,本文档以SOMEIP协议里比较成熟的VSOMEIP开源框架为例,带你从0到1实现开源框架的下载到上手,坐稳啦,开车!!!!
1. 下载源码:
在linux终端输入或者windows的minGW里输入:
git clone Gitee 极速下载/vsomeipGitee 极速下载/vsomeiphttps://gitee.com/mirrors/vsomeip.git
完成所有编译工作后的目录结构如下:
2. 必要包的安装:
由于linux版本之间有差异性,难以全部罗列,统一以ubuntu20.04举例说明:
请敲以下命令完成boost以及其他
代码 |
sudo apt-get install libboost-system-dev libboost-thread-dev libboost-log-dev sudo apt-get install asciidoc source-highlight doxygen graphviz sudo apt-get install gcc g++ make |
3. 编译vsomeip:
进入vsomeip路径下。编译vsomeip库,请执行以下命令:
代码 |
mkdir build
cd build
cmake ..
make
sudo make install |
完成所有工作后的记录如下:
4. 编译官方提供的helloworld测试案例(熟手跳过)
(可以参考官方关于helloworld案例的readme提示:../vsomeip/examples/hello_world/readme)
请cd 到/examples/hello_world路径下:执行同样的编译命令
代码 |
mkdir build
cd build
cmake ..
make |
编译过程如下图所示:
5. 执行helloworld测试用例:
5.1 请注意,官方helloworld教程关于“Running Hello World Example”部分有误,需要按照以下方式修改:
把helloworld目录下的helloworld-local.json 复制到build目录里去。
给小白的提示:假设您现在处以 /vsomeip/examples/hello_world/build 路径下,请执行以下代码:
代码 |
cp ../helloworld-local.json ./ |
复制完成后helloworld的build应该和我一样。如下图所示:
5.2 开两个终端,执行程序:(直接复制粘贴代码)
终端1运行 service端:
env VSOMEIP_CONFIGURATION=./helloworld-local.json \
VSOMEIP_APPLICATION_NAME=hello_world_service \
./hello_world_service
终端2运行 client端:
env VSOMEIP_CONFIGURATION=./helloworld-local.json \
VSOMEIP_APPLICATION_NAME=hello_world_client \
./hello_world_client
Tips:如果提示:Configuration module could not be loaded!请在../vsomeip/examples/hello_world/build路径下输入以下命令完成链接工作,再执行上述执行命令。
代码 |
sudo ldconfig |
5.3 测试结果:
服务端:
2023-03-16 11:14:47.394718 [info] vSomeIP 3.3.0 | (default)
2023-03-16 11:14:57.400489 [info] vSomeIP 3.3.0 | (default)
2023-03-16 11:14:58.263600 [info] Application/Client 5555 is registering.
2023-03-16 11:14:58.264118 [info] Client [4444] is connecting to [5555] at /tmp/vsomeip-5555
2023-03-16 11:14:58.268696 [info] REGISTERED_ACK(5555)
2023-03-16 11:14:58.376506 [info] REQUEST(5555): [1111.2222:255.4294967295]
2023-03-16 11:14:58.387110 [info] RELEASE(5555): [1111.2222]
2023-03-16 11:14:58.388448 [info] Application/Client 5555 is deregistering.
2023-03-16 11:14:58.399715 [info] receive_cbk local_uds_client_endpoint: connection_reset/EOF/bad_descriptor
2023-03-16 11:14:58.496182 [info] Client [4444] is closing connection to [5555]
2023-03-16 11:15:03.385937 [info] STOP OFFER(4444): [1111.2222:0.0] (true)
2023-03-16 11:15:03.387130 [info] Stopping vsomeip application "hello_world_service" (4444).
客户端:
私人信息脱敏/someipCode/vsomeip/examples/hello_world/build$ env VSOMEIP_CONFIGURATION=./helloworld-local.json \
> VSOMEIP_APPLICATION_NAME=hello_world_client \
> ./hello_world_client
2023-03-16 11:14:58.257083 [info] Using configuration file: "./helloworld-local.json".
2023-03-16 11:14:58.257952 [info] Parsed vsomeip configuration in 0ms
2023-03-16 11:14:58.258019 [info] Configuration module loaded.
2023-03-16 11:14:58.258052 [info] Initializing vsomeip application "hello_world_client".
2023-03-16 11:14:58.258194 [info] Instantiating routing manager [Proxy].
2023-03-16 11:14:58.258368 [info] Client [5555] is connecting to [0] at /tmp/vsomeip-0
2023-03-16 11:14:58.258511 [info] Application(hello_world_client, 5555) is initialized (11, 100).
2023-03-16 11:14:58.258655 [info] Starting vsomeip application "hello_world_client" (5555) using 2 threads I/O nice 255
2023-03-16 11:14:58.259440 [info] shutdown thread id from application: 5555 (hello_world_client) is: 7f516931d700 TID: 78921
2023-03-16 11:14:58.260555 [info] io thread id from application: 5555 (hello_world_client) is: 7f5169bc0000 TID: 78919
2023-03-16 11:14:58.260802 [info] io thread id from application: 5555 (hello_world_client) is: 7f5168b1c700 TID: 78922
2023-03-16 11:14:58.262858 [info] create_local_server: Listening @ /tmp/vsomeip-5555
2023-03-16 11:14:58.263042 [info] Client 5555 (hello_world_client) successfully connected to routing ~> registering..
2023-03-16 11:14:58.263117 [info] Registering to routing manager @ vsomeip-0
2023-03-16 11:14:58.263629 [info] main dispatch thread id from application: 5555 (hello_world_client) is: 7f5169b1e700 TID: 78920
2023-03-16 11:14:58.268148 [info] Application/Client 5555 (hello_world_client) is registered.
2023-03-16 11:14:58.378331 [info] ON_AVAILABLE(5555): [1111.2222:0.0]
Sending: World
2023-03-16 11:14:58.379275 [info] Client [5555] is connecting to [4444] at /tmp/vsomeip-4444
Received: Hello World
2023-03-16 11:14:58.386383 [info] Stopping vsomeip application "hello_world_client" (5555).
2023-03-16 11:14:58.389704 [info] Application/Client 5555 (hello_world_client) is deregistered.
2023-03-16 11:14:58.390784 [info] Client [5555] is closing connection to [4444]
相关文章:
给新手----编译VSOMEIP保姆级别教程
前言:当你学习了SOMEIP理论基础后,一定很希望上手实操一波吧,本文档以SOMEIP协议里比较成熟的VSOMEIP开源框架为例,带你从0到1实现开源框架的下载到上手,坐稳啦,开车!!!&…...
MarkDown设置上下标
上标:$a^{2-5}$ 下标:$a_{n-1}$显示:结果 上标:a2−5a^{2-5}a2−5 下标:an−1a_{n-1}an−1 如果上下标中需要多个显示,需要用{}括起来,否则就像下面一样 上标:$a^2-5$ 下标&…...
Python批量爬取游戏卡牌信息
文章目录前言一、需求二、分析三、处理四、运行结果前言 本系列文章来源于真实的需求本系列文章你来提我来做本系列文章仅供学习参考阅读人群:有Python基础、Scrapy框架基础 一、需求 全站爬取游戏卡牌信息 二、分析 查看网页源代码,图片资源是否存在…...
什么是PCB走线的3W原则
在设计PCB的时候我们会经常说到3W原则, 它指的是两个PCB走线它们的中心间距不小于3倍线宽,这个W就是PCB走线的宽度。这样做的目的主要是为了减小走线1和走线2之间的串扰,一般对于时钟信号,复位信号等一些关键信号需要遵循3W原则。…...
计算机网络面试总结
计算机网络 1.计算机网络 2.计算机网络拓扑结构 3.计算机网络覆盖 4.时延 5.交换技术 6.单工、半双工、全双工 7.OSI模型 8.TCP/IP模型 9.物理层有哪些设备 10.数据链路层介质访问控制 11.数据链路层有哪些设备 12.数据链路层流量控制 13.数据链路层的三个基本问题和解决方法 1…...
VsCode SSH远程连接服务器【内网穿透公网连接】
文章目录1.前言2.VS code的安装和设置2.1 VS code的下载安装2.2 OpenSSH的启用2.3 为VS code配置ssh2.4 局域网内测试VS code的ssh连接2.5 Cpolar下载安装3.Cpolar端口设置3.1 Cpolar云端设置3.2 Cpolar本地设置4.公网访问测试5.结语1.前言 记得笔者小时候看电视,看…...
十八、动画与canvas
1.RequestAnimationFrame 早期定时动画 setTimeout和setInterval不能保证时间精度,第二个参数只能保证何时将代码添加到浏览器的任务队列 requestAnimationFrame(cb)的cb在浏览器重绘屏幕前调用 function updateProgress(){const div document.getElementById(d…...
自动化测试学习-Day4-selenium的安装和8种定位方法
哈喽,大家好! 本人21年毕业,软件工程专业,毕业后一直从事金融行业的软件测试。 希望大家一起见证一名卑微测试的成长之路。 目录 一、环境准备 1.浏览器下载 2.浏览器驱动下载 3.下载selenium 二、Selenium定位元素的8种方法…...
【Kubernetes】第二十五篇 - 布署 nodejs 后端项目(下)
一,前言 上一篇,介绍了部署后端项目之前,需要的准备的相关配置信息; 本篇,创建 Deployment、Service 完成后端项目布署; 二,解决 jenkins 安全问题 构建 docker 镜像之后,登录 do…...
贪心算法之区间问题总结
一、跳跃游戏跳跃游戏类的问题,不关心每一步怎么跳,只需要关心最大覆盖范围这里注意i是在当前最大可覆盖范围内遍历,如{2,1,0,1},就是在0~2范围内遍历,千万不能0~numsSize-1范围内遍历!!&#x…...
无线WiFi安全渗透与攻防(七)之WIFI07-WEP-wifite自动化渗透WEP加密
WIFI07-WEP-wifite自动化渗透WEP加密 1.wifite介绍 wifite是一款自动化wep、wpa以及wps破解工具,不支持windows和osx。wifite的特点是可以同时攻击多个采用wep和wpa加密的网络。wifite只需简单的配置即可自动化运行,期间无需人工干预。 目前支持任何li…...
震撼,支持多模态模型的ChatGPT 4.0发布了
最近几个月,互联网和科技圈几乎ChatGPT刷屏了,各种关于ChatGPT的概念和应用的帖子也是围绕在周围。当去年年底ChatGPT发布的那几天,ChatGPT确实震撼到了所有人,原来AI还可以这么玩,并且对国内的那些所谓的人工智能公司…...
IDEA常用插件列表
一 背景 IDEA常用插件列表,用来提供工作效率。你都安装了吗 IntelliJ IDEA 默认安装并提供了非常多的工具,比如 Maven Integration、Markdown support、SSH Remote Run 等。其中有很多好用,但是不为人知的工具。 二 插件列表 阿里代码规约…...
比df更好用的命令!
大家好,我是良许。 对于分析磁盘使用情况,有两个非常好用的命令:du 和 df 。简单来说,这两个命令的作用是这样的: du 命令:它是英文单词 disk usage 的简写,主要用于查看文件与目录占用多少磁…...
【Git使用学习】记录学习过程(1)
安装就省略了,安装结果如下。 Git Bash:这是一个模拟Linux环境的命令行工具,可以使用Git的所有功能。Git GUI:这是一个图形化界面的工具,可以方便地执行Git的常用操作。Git CMD:这是一个Windows命令行工具&…...
K_A18_001 基于STM32等单片机采集MQ2传感参数串口与OLED0.96双显示
K_A18_001 基于STM32等单片机采集MQ2传感参数串口与OLED0.96双显示一、资源说明二、基本参数参数引脚说明三、驱动说明IIC地址/采集通道选择/时序对应程序:四、部分代码说明1、接线引脚定义1.1、STC89C52RCMQ2传感参模块1.2、STM32F103C8T6MQ2传感参模块五、基础知识学习与相关…...
【云原生·Docker】常用命令
目录 🍁1、管理命令 🍁2、帮助命令 🍁3、镜像命令 🍁4、容器命令 🍂4.1.查看容器 🍂4.2.创建容器 🍂4.3.删除容器 🍂4.4.拷贝文件 🍂4.5.查看容器IP 🍁5、部署…...
户外露营储能电源芯片CSU3AF10
户外露营的项目有很多,随着户外储能电源的发展,越来越多的电子产品可以在户外使用,也不用担心因为在户外时间过长而手机或者其他电子产品电量耗尽。户外储能电源可保证人们随时随地的用电需求,同时也可以满足家电炊具的供电需求&a…...
无线WiFi安全渗透与攻防(八)之WEP-Hirte渗透WEP加密
WEP-渗透WEP新思路–Hirte 1.Hirte介绍 Hirte是破解无线网络WEP Key的一种攻击类型 只要客户端设备(笔记本电脑,手机等)连接过的无线网络,那些WIFI即使是不在攻击者范围内也都能被破解,因为该wifi的WEP密钥和配置文…...
前端常考面试题整理
display:none与visibility:hidden的区别 这两个属性都是让元素隐藏,不可见。两者区别如下: (1)在渲染树中 display:none会让元素完全从渲染树中消失,渲染时不会占据任何空间;visibility:hidden不会让元素…...
二十二、身份验证与权限
一、 准备工作 为了讲清楚身份验证与权限,我们再创建一个应用projects,设计模型如下: class Project(models.Model):name models.CharField(项目名称, max_length20, help_text项目名称)desc models.CharField(项目描述, max_length200, help_text项目…...
k8s pod 升级与回滚
当集群中的某个服务需要升级时,我们需要停止目前与该服务相关的所有pod,然后下载新版本镜像并创建新的pod。如果集群规模比较大,则这个工作变成了一个挑战,而且先全部停止然后逐步升级的方式会导致较长时间的服务不可用。kubernet…...
【Go】Go语言开发环境安装
【Go】Go语言开发环境安装 导入 安装环境:Winowds 我现在是win7安装的,与win10整体步骤是一样的,只是部分显示的时候有点差异不影响; 【名词】 编译器:先将代码编译成可执行文件,再执行; —…...
el-switch使用
效果图: 1.表格代码,给el-waitch加上change事件 <el-table-column prop"status" label"状态" align"center" width"150"> <template slot-sc…...
【算法入门】字符串基础
目录 一.字符串引言1.字符串基础二.洛谷P5734详解1.字符串相关库函数💫(1) strcpy函数 💫💫(2) strcat函数 💫💫(3)strstr函数 💫2.题…...
前端面试题 —— 浏览器原理(二)
目录 一、有哪些可能引起前端安全的问题? 二、网络劫持有哪几种,如何防范? 三、浏览器渲染进程的线程有哪些 四、僵尸进程和孤儿进程是什么? 五、为什么需要浏览器缓存? 六、对浏览器的理解 七、CSS 如何阻塞文档解析&…...
对于植物神经紊乱的治疗 中医采用辩证论治的方法
植物神经紊乱是由于心理压力过大、长期生活不规律所导致的一种疾病,这种疾病的发生往往是症状多样、涉及广泛的。当患有植物神经紊乱之后,主要的症状会以躯体化障碍为常见症状,但是很多患者还会出现情绪失控、睡眠障碍等问题。 对于植物神经紊…...
chatGPT之Python API启用上下文管理
chatGPT已经爆火一段时间了,我想大多数的开发者都在默默的在开发和测试当中,可能也是因为这个原因所以现在很难找到关于开发中遇到的一些坑或者方法和技巧。为什么别人的机器人能联想之前的语料,而你的却像个每次都只如初见的高冷机器人&…...
油田钻井实时在线监测系统
油田钻井的井下油层的压力不断变化,环境深度和压力巨大,且井下原油具有一定的流动性,实时在线压力监测是石油开采行业的难点。为更好地了解油田开采过程中油层的状况,提高油田开采效率和产量,油田钻井实时在线监测系统…...
经典PID控制算法原理以及优化思路
文章目录0、概念1、理解2、实现3、优化4、引用0、概念 PID算法是工业应用中最广泛算法之一,在闭环系统的控制中,可自动对控制系统进行准确且迅速的校正。PID控制,即Proportional – Integral(I) – Derivative(D) Control, 实际上是三种反馈…...
双十一网站怎么做/企业建站系统
一周前看的忘记写了,之前用jgit感觉有点头大,所以了解了一下,jgit里面有tree-walker啊这种东西,不了解git的底层就不能明白到底啥意思 git事实上是一个k-v store 里面存几种object commit object tree object blob object tree ob…...
wordpress创建搜索框/seo自学
POJ-1363 地址:http://poj.org/problem?id1363 直接贴关键代码来分析: int j0;for(int i0;i<n;i){s.push(i1);while(!s.empty() && s.top()num[j]){s.pop();j;}} 上面这个for循环模拟,可以判断出栈顺序的合法性,比较s.top和num[j],其中,主要看计数器j的次数是否与n…...
自己做的网站网页打开速度慢/现在感染症状有哪些
LT项目使用的EIP是运行在JETTY上,此文供开发和实施参考 1、windows下 win下部署多个jetty8很简单,首先将jetty8复制多个文件夹,其次按分配的端口号修改[JETTY_HOME]/etc/jetty.xml和jetty-proxy.xml。如该文件夹下的jetty分配8888端口 jetty.…...
js代码网站大全/珠海企业网站建设
RT1052之GPIO与IOMUX原文链接:https://blog.csdn.net/weixin_44021648/article/details/113839882 前提提一句,i.MX RT1052与imx6ul的很多片内外设的架构长的都是一样的。 RT1052 GPIO和IOMUX 一、简介 按照编写STM32程序的思维,其实GPIO和I…...
网站建设运营方案/域名停靠网页推广大全2021
实战需求 SwiftUI 制作个音乐播放器 本文价值与收获 看完本文后,您将能够作出下面的界面 截屏2020-08-18 下午3.59.50.png看完本文您将掌握的技能...
宁波最靠谱的网站建设/seo关键词优化经验技巧
本文发布于我的个人网站:https://wintc.top/article/58,转载请注明。 多行文本超过指定行数隐藏超出部分并显示“...查看全部”是一个常遇到的需求,网上也有人实现过类似的功能,不过还是想自己写写看,于是就写了一个Vu…...