参考: https://at.projects.genivi.org/wiki/pages/viewpage.action?pageId=5472316


目录结构 存放文件 解释说明
mkdir project 项目目录
mkdir cgen 存放代码生成器
commonapi-generator
commonapi_someip_generator
mkdir fidl 存放*.fidl+*.fdepl文件
vim HelloWorld.fidl
vim HelloWorld.fdepl
src-gen 执行代码生成器,自动生成的目录,存放代码生成器生成的代码
mkdir src 存放应用程序代码
vim HelloWorldClient.cpp
vim HelloWorldService.cpp
vim HelloWorldStubImpl.hpp
vim HelloWorldStubImpl.cpp
vim CMakeLists.txt 用于cmake编译
mkdir build 用于编译+存放最终生成的可执行文件
cd build
cmake
make

  1. 编写HelloWorld.fidl文件
    例如:

    然后执行代码生成器的可执行文件,根据HelloWorld.fidl文件生成CommonAPI级别的代码;生成的代码的存放位置与HelloWorld.fidl此文件的放置位置无关,因为从该文件生成的代码将始终放置在自动创建的src-gen文件夹中。
    在选择版本时,可用通过执行uname -m来查看自己所使用的服务器的版本。

    ./cgen/commonapi-generator/commonapi-generator-linux-x86_64 -sk ./fidl/HelloWorld.fidl

    HelloWorld.hpp
    HelloWorldProxyBase.hpp
    HelloWorldProxy.hpp
    HelloWorldStub.hpp
    HelloWorldStubDefault.hpp
    HelloWorldStubDefault.cpp

2. 编写HelloWorld.fdepl文件
例如:

然后执行代码生成器的可执行文件,根据HelloWorld.fdepl文件生成所需的粘合代码。
同上,也是要根据自己的版本执行相应的可执行文件.
./cgen/commonapi_someip_generator/commonapi-someip-generator-linux-x86_64 -ll verbose ./fidl/HelloWorld.fdepl

HelloWorldSomeIPDeployment.hpp
HelloWorldSomeIPDeployment.cpp
HelloWorldSomeIPProxy.hpp
HelloWorldSomeIPProxy.cpp
HelloWorldSomeIPStubAdapter.hpp
HelloWorldSomeIPStubAdapter.cpp

3. 编写应用程序
在本教程中,我们将创建一个客户端和一个服务,以便能够看到正在进行的通信。
首先通过HelloWorldProxy.cpp在项目中创建新的源文件来实现客户端。确保有一个主要方法来启动客户端应用程序。
(1)在这里,将需要两个包含项才能访问CommonAPI客户端功能:

请注意,必须始终包含CommonAPI.hpp用于访问CommonAPI和生成的代理的运行时部分。如果定义的接口具有版本号,则可以在接口类的名称空间和目录结构中找到该版本。
每个CommonAPI应用程序要做的第一件事之一就是获取指向运行时对象的指针:

为了能够与特定服务进行通信,我们需要一个代理:

此代理将处理哪个存根,由域和实例名称与生成的代理类一起作为模板参数显示确定。
该连接是一个可选参数。此参数允许将多个代理归为一个所谓的连接。如果没有主循环集成,则内部连接对应一个接收器线程。
通过代理的实例化,客户端已建立并可以使用。在此示例中,我们等待服务可用,然后开始发出呼叫:


(2)服务的实现与客户端大致相同。所需的包括以下内容:

在服务的主要功能中,要做的第一件事就是获取运行时对象。

我们必须实例化存根实现(在此处HelloWorldStubImpl),然后注册它:

生成的存根方法的实现sayHello如下所示:


(3)完整的代码展示
HelloWorldClient.cpp

HelloWorldService.cpp

HelloWorldStruImpl.hpp

HelloWorldStruImpl.cpp


4. 编写CMakeLists.txt编译文件

5. 编写完所有的代码,最后进行编译


6. 编写vsomeip的.json配置文件


7. 设置环境变量并启动服务器与客户端

CommonAPI使用例子-HelloWorld相关推荐

  1. 【ROS】学习笔记一 ubuntu16.04下vs code配置ros环境并编写helloworld程序

    [ROS]ubuntu16.04下vs code配置ros环境并编写helloworld程序 一.vs code下载 1.相关配置要求: (1)系统为ubuntu16.04 (2)已安装好kineti ...

  2. java中HelloWorld原来还可以这样玩

    大家可能看到HelloWorld例子是不是都觉得博主脑子是不是有问题,怎么拿这么一个弱智的问题和例子拿来讲.实际上并不是这样的,如果是这样的我相信我就没有写这篇博客意思了.因为当我第一次看到java中 ...

  3. 让我们一起认识一下Nodejs

    Nodejs Nodejs是一个运行在chrome Javascript运行环境下(俗称GoogleV8引擎)的开发平台,用来方便快捷的创建服务器端网络应用程序.可以把它理解为一个轻量级的JSP或PH ...

  4. tornado源码分析

    tornado源码分析 本源码为tornado1.0版本 源码附带例子helloworld import tornado.httpserver import tornado.ioloop import ...

  5. java- ASM 字节码操控框架

    我们知道Java是静态语言,而python.ruby是动态语言,Java程序一旦写好很难在运行时更改类的行为,而python.ruby可以. 不过基于bytecode层面上我们可以做一些手脚,来使Ja ...

  6. Google Ajax Search 参考

    Google AJAX Search API参考 Google AJAX Search API是一种允许您设置Google查寻到您的网页和其他 Web应用程序上的Javascript类库.要使用API ...

  7. node.js(npm)|bower(bootstrap)|git

    为什么80%的码农都做不了架构师?>>>    node.js 安装步骤:http://www.runoob.com/nodejs/nodejs-install-setup.htm ...

  8. 在Struts 2.0中国际化(i18n)您的应用程序

    国际化是商业系统中不可或缺的一部分,所以无论您学习的是什么Web框架,它都是必须掌握的技能. 其实,Struts 1.x在此部分已经做得相当不错了.它极大地简化了我们程序员在做国际化时所需的工作,例如 ...

  9. java获取小数位数_Java获取小数位数

    最近搞Struts2弄得有点头昏脑胀,第一个例子"HelloWorld"总不成功,有点郁闷. 想起前几天上cpld/fpga课时老师说得判断小数位数的例子,闲来无事用Java实现一 ...

最新文章

  1. python 解码json数据并在一个OrderdDict中保留其顺序
  2. redhat7防火墙关闭_Linux7关闭防火墙
  3. Oracle数据库入门——常用的数据字典
  4. 可编辑的表格:jQuery+PHP实现实时编辑表格字段内容
  5. 应用程序_构建应用程序12 条参考准则
  6. ubuntu20.10下mysql8数据库的安装(亲测)
  7. 什么样性格的人最有可能成为领导者?
  8. php数组如何插入,PHP如何在数组指定位置插入单元
  9. 抓取html的地址怎么写,跪求一个获取URL地址html代码的写法
  10. 室内定位发展趋势分析
  11. Linux就这个范儿 第10章 生死与共的兄弟
  12. ICM20602互补滤波
  13. 计算机内部复制粘贴文件速度慢,电脑复制粘贴速度慢为什么
  14. java POI为excel添加水印
  15. 怎么给PDF插入一个文本框写注释?PDF添加注释文本框教程
  16. Crout分解法 | matlab
  17. GNU 和 UNIX 命令
  18. ffmpeg源码精读1,音视频处理概述
  19. [转]用Eclipse进行可视化Java界面设计
  20. x-admin前端模板左侧菜单栏消除记忆功能(清除缓存)

热门文章

  1. 计算机之间的通信原理
  2. LaTeX技巧-排版大括号
  3. 使用spacedesk实现两台笔记本的双屏显示
  4. 联想电脑中的数据丢失怎么办?分享实用有效的技巧
  5. 2.5 C语言入职例程二:指针
  6. 局域网中的IP是怎么确定和分配下来的
  7. Excel的Sumif函数
  8. 第17章 国际贸易与资本流动
  9. Power BI+Power Apps联动初尝试
  10. 教你做表格(史上最全)