Windows 系统下使用VSomeip dll 开发应用程序

        基于VSomeip 的dll 来开发应用程序,实现和ECU之间的交互。首先需要基于系统编译出来需dll,我这边使用的Windows 系统64位的的dll ,编译出来的dll如下图:

 Windows 上的应用程序是使用QT 开发的,所以需要用到头文件,lib 和dll。头文件在源码的interface文件夹下面

 在QT的 pro 文件中添加头文件和lib 的设置。

INCLUDEPATH += $$PWD/include/vsomeip/interface

LIBS += -L$$PWD/include/vsomeip/ -lvsomeip3

 VSomeip dll 的使用需要先了解 config 文件: 

 

 unicast 中的ip 地址是本机的ip 这个ip和需要通信的ecu 的ip必须是可以ping 通的

multicast: 239.127.3.1 这个是sd 消息的广播地址

port: 30490 这个是 sd 消息的port

protocol: udp 这个是 someip 使用的ip协议类型

从源码中给的列子中可以看出需要设定config文件的地址

env VSOMEIP_CONFIGURATION=../../config/vsomeip-local.json VSOMEIP_APPLICATION_NAME=client-sample ./subscribe-sample

我们在QT 的使用中也就要先把相关的设置定义好:

    qputenv("PATH",path.toStdString().c_str());
    qputenv("VSOMEIP_CONFIGURATION",visomeipConfig.toStdString().c_str());

Path 设置好VSomeip dll和boost dll 的地址

VSOMEIP_CONFIGURATION 设置好config 文件的地址,本例中的config文件是vsomeip-local.json

工具中设置好相关的地址

自己定义一个class 来调用相关的dll

class 中首先定义一个指针 app_

private:
    std::shared_ptr< vsomeip::application > app_;

初始化在类的初始化列表中:

app_(vsomeip::runtime::get()->create_application("client-sample"))

 使用的名称和config文件中的对应上:

           "id": "0x102e",
            "name": "client-sample"

 然后需要调用初始化函数和注册回调函数处理接收到的数据:

   if (!app_->init()) {
        LOG(INFO) << "Couldn't initialize application" ;
        return false;
    }

  std::cout<<"get_client"<<app_->get_client()<<std::endl;

   LOG(INFO) << "Client settings [protocol="
            << (use_tcp_ ? "TCP" : "UDP")
            << "]"
            << std::endl;

   app_->register_state_handler(
           std::bind(&subscribe::on_state, this,
                   std::placeholders::_1));

   app_->register_message_handler(
           vsomeip::ANY_SERVICE, instanceID, vsomeip::ANY_METHOD,
           std::bind(&subscribe::on_message, this,
                   std::placeholders::_1));

   app_->register_availability_handler(serviceID, instanceID,
           std::bind(&subscribe::on_availability,
                     this,
                     std::placeholders::_1, std::placeholders::_2
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值