当前位置: 首页 > news >正文

动漫制作专业电脑推荐上海百度搜索排名优化

动漫制作专业电脑推荐,上海百度搜索排名优化,西安网站关键词优化推荐,教育局网站建设#xff1c;c开发#xff1e;通信工具 -之-SOME/IP移植ubuntu部署 第一篇文章 一 前言 SOME/IP (Scalable service-Oriented MiddlewarE over IP) 是一种通信协议#xff0c;主要用于嵌入式系统和车载网络中的服务导向通信。SOME/IP是AUTOSAR#xff08;AUTomotive Open …c开发通信工具 -之-SOME/IP移植ubuntu部署 第一篇文章 一 前言 SOME/IP (Scalable service-Oriented MiddlewarE over IP) 是一种通信协议主要用于嵌入式系统和车载网络中的服务导向通信。SOME/IP是AUTOSARAUTomotive Open System ARchitecture汽车开放系统架构标准的一部分AUTOSAR是由主要汽车制造商和供应商共同制定的开放式汽车电子架构标准。 SOME/IP协议定义了一种基于IP的服务导向的通信机制。在SOME/IP中服务是一种可以被远程调用的功能每个服务由一组方法和事件组成。服务由服务ID和实例ID唯一标识方法和事件由方法ID和事件ID标识。 SOME/IP协议支持一对一、一对多和多对多的通信模式可以使用UDP或TCP作为传输协议。SOME/IP还支持多播和事件订阅机制可以有效地支持大规模的设备通信。 SOME/IP消息由一个头部和一个或多个负载部分组成。头部包含了消息的基本信息如服务ID、实例ID、方法ID、消息类型请求、请求应答、通知等。负载部分则包含了实际的数据。 SOME/IP还定义了一种服务发现机制设备可以通过这种机制来发现网络中可用的服务。这种服务发现机制基于SOME/IP-SDService Discovery协议是SOME/IP的一个重要组成部分。 总的来说SOME/IP是一种灵活、可扩展的服务导向通信协议适用于嵌入式系统和车载网络等环境。 二 SOME/IP部署 本文主要是在ubuntu PC中部署SOME/IP环境并编写一些测试程序进行通信测试。 2.1 some/ip源码下载 使用some/ip前需要安装一些依赖库如下 sudo apt-get install libboost-system-dev libboost-thread-dev libboost-log-dev libboost-program-options-dev libboost-test-dev新建一个目录并使用命令行打开然后输入以下命令 获取some/ip的源码如下 git clone https://github.com/GENIVI/vsomeip.git2.2 some/ip源码编译 some/ip源码编译并安装到ubuntu中命令如下 cd vsomeip mkdir build cd build cmake .. make sudo make install由上面输出截图可知默认安装some/ip的库和头文件是在 /usr/local/lib/xxxx 和 /usr/local/include/xxx 目录下。 如果熟悉cmake的同学可执行设置编译参数可指定 安装路径。 三 SOME/IP 代码编写 基于上述安装好some/ip后我们就可以编写测试程序了。 这里编写一个server实现加法运算并将结果返回给client; 编写一个client将要相加的两个数传递给服务端并打印 服务端返回的结果值。 3.1 server源码 新建server.cpp文件并输入以下内容 #include vsomeip/vsomeip.hpp// 定义服务和方法的ID #define SAMPLE_SERVICE_ID 0x1234 #define SAMPLE_INSTANCE_ID 0x5678 #define SAMPLE_METHOD_ID 0x9ABCclass SampleService { public:SampleService() {app_ vsomeip::runtime::get()-create_application();}void offer_service() {app_-init();app_-offer_service(SAMPLE_SERVICE_ID, SAMPLE_INSTANCE_ID);app_-register_message_handler(SAMPLE_SERVICE_ID, SAMPLE_INSTANCE_ID, SAMPLE_METHOD_ID,std::bind(SampleService::on_request, this, std::placeholders::_1));app_-start();}void on_request(const std::shared_ptrvsomeip::message request) {std::shared_ptrvsomeip::message response vsomeip::runtime::get()-create_response(request);int a request-get_payload()-get_data()[0];int b request-get_payload()-get_data()[1];int result a b;std::shared_ptrvsomeip::payload payload vsomeip::runtime::get()-create_payload();payload-set_data(std::vectorvsomeip::byte_t{result});response-set_payload(payload);app_-send(response);}private:std::shared_ptrvsomeip::application app_; };int main() {SampleService service;service.offer_service();return 0; }3.2 client源码 新建client.cpp文件并输入以下内容 #include vsomeip/vsomeip.hpp #include iostream #include stdio.h #include string.h #include stdlib.h #include string #include thread #include unistd.h #include signal.h// 定义服务和方法的ID #define SAMPLE_SERVICE_ID 0x1234 #define SAMPLE_INSTANCE_ID 0x5678 #define SAMPLE_METHOD_ID 0x9ABCusing namespace std;class SampleClient { public:SampleClient() {app_ vsomeip::runtime::get()-create_application();}void request_service() {app_-init();app_-register_availability_handler(SAMPLE_SERVICE_ID, SAMPLE_INSTANCE_ID, std::bind(SampleClient::on_availability, this, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3));app_-register_message_handler(SAMPLE_SERVICE_ID, SAMPLE_INSTANCE_ID, vsomeip::ANY_METHOD,std::bind(SampleClient::on_response, this, std::placeholders::_1));app_-request_service(SAMPLE_SERVICE_ID, SAMPLE_INSTANCE_ID);app_-start();}void on_availability(vsomeip::service_t service, vsomeip::instance_t instance, bool is_available) {if (is_available) {// std::shared_ptrvsomeip::message request vsomeip::runtime::get()-create_request();request-set_service(service);request-set_instance(instance);request-set_method(SAMPLE_METHOD_ID);std::shared_ptrvsomeip::payload payload vsomeip::runtime::get()-create_payload();payload-set_data(std::vectorvsomeip::byte_t{15, 20}); // 传递两个整数request-set_payload(payload);app_-send(request);int i 0;/* TEST vsomeip*/while (1){std::this_thread::sleep_for(std::chrono::milliseconds(1000));std::cout i: i std::endl;std::shared_ptrvsomeip::payload payload vsomeip::runtime::get()-create_payload();payload-set_data(std::vectorvsomeip::byte_t{i, 20}); // 传递两个整数request-set_payload(payload);app_-send(request);if(i100)i 0;}}}void on_response(const std::shared_ptrvsomeip::message response) {if (response) {int result response-get_payload()-get_data()[0];std::cout Result: result std::endl;}}private:std::shared_ptrvsomeip::application app_;std::shared_ptrvsomeip::message request; };int main() {SampleClient client;client.request_service();return 0; }四 编译运行 4.1 编译 server编译 g server.cpp -o server -lvsomeip3client编译(其中-lpthread 是因为用到了一个延时) g client.cpp -o client -lvsomeip3 -lpthread4.2 运行 运行前需要设置以下lib的环境变量否则会报错终端临时设置lib环境变量命令如下 export LD_LIBRARY_PATH/usr/local/lib/library:$LD_LIBRARY_PATH注每次新打开终端都要设置同学们可自行将这个环境变量添加到 “ ~/.bashrc” 这文件中这样就会自动设置LD_LIBRARY_PATH环境变量了。 将上述export语句 添加到 “ ~/.bashrc” 文件末尾然后使用“source ~/.bashrc” 使更改生效即可。 server运行 ./serverclient 运行 ./client五 结论 通过上述在ubuntu环境中部署some/ip 能够对some/ip有个初步的认识也能进一步扩大我们对some/ip的兴趣。笔者本人更注重于实践运用对于理论说明就不太感冒。目的只有一个以用为主切入进行some/ip的使用说明。后续不定期继续说明some/ip的使用。 如有不足欢迎留言指正。
http://www.eeditor.cn/news/118885/

相关文章:

  • 做网站虚拟主机和云服务器建设银行网站服务功能
  • 网站建设企业资质做企业网站收费
  • 国外网站流量查询国外专门做视频翻译网站
  • 一站式织梦网站模板创业网站建设方案项目书
  • 湖北省网站建设山东省网站备案
  • 1企业网站案例美食网站建设毕业设计
  • 建设外贸型网站免费制作永久企业网站
  • 友情手机站做化妆刷的外贸网站
  • 做外贸选取哪个网站企业网站seo哪里好
  • 购买qq空间访客的网站网络营销网
  • 站长工具域名解析中交路桥建设有限公司是国企吗
  • 电子商务作业做网站网页微信手机登录
  • 昆山网站建设价格建网站要先建什么
  • 经典案例网站网站网络推广方式方法
  • 重庆网站建设公司模板龙岩网络图书馆注册
  • flex网站模板wordpress自定义背景颜色
  • 社交网站 备案网络科技公司属于什么行业
  • 东莞做网站最好的是哪家北京城建一建设发展有限公司网站
  • 做阿里网站需要的faq深圳公司注册地址可以是住宅吗
  • 租号网站建设富阳网站建设找哪家
  • 小馋网站建设书网页制作相关网站
  • 用织梦做的网站怎么上传虚拟怎么把产品卖到国外去
  • 商务网站建设流程200字html5网站开发工具有哪些
  • 那些行业做网站优化的比较多网页设计工程师工资
  • 第一章 网站建设基本概述宁波网站搭建定制非模板网站建设
  • 户外拓展网站源码重庆网站建设 快速建站
  • 怎么问客户做不做网站徐州做外贸网站
  • xp 做网站服务器吗重庆公司章程电子版在哪里下载
  • 北京好的网站建设网站开发公司的log
  • 苏州关键词网站排名 百度一下