欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 明星 > SOME/IP中”客户端消费“及”服务端提供”的解析

SOME/IP中”客户端消费“及”服务端提供”的解析

2025/4/19 8:46:09 来源:https://blog.csdn.net/m0_65827944/article/details/146916749  浏览:    关键词:SOME/IP中”客户端消费“及”服务端提供”的解析

先上结论

AREthAddConsumedEventGroup-->客户端的函数-->谁调用 Consumed函数,谁就是消费者

AREthAddProvidedEventGroup-->服务端的函数-->谁调用 Provided函数,谁就是服务端


Server 端:AREthAddProvidedEventGroup → 声明 "我能提供这些事件"。

Client 端:AREthAddConsumedEventGroup → 声明 "我要订阅这些事件"。

只有两者匹配,SOME/IP 事件订阅才能正常工作。

代码应用展示,参考:SomeIP:服务端or客户端发送event或method源码参考via CAPL-CSDN博客



示例:车窗升降控制

1. 角色定义

  • 服务端(Server):
    实际控制硬件的节点(比如车门控制模块 ECU),它实现了车窗升降的具体功能(如驱动电机、检测车窗位置等)。

    • 它提供(Provided) "车窗控制服务"(包含方法调用、事件通知等)。

  • 客户端(Client):
    发起请求或接收状态的节点(比如中控屏或车身控制器),它需要使用(Consumed)车窗服务,但不直接控制硬件。

    • 它消费(Consumed) Server 提供的服务(例如:发送升降指令、接收车窗状态事件)。


2. 具体交互场景

场景 1:客户端控制车窗升降(方法调用)

  1. 客户端(中控屏):

    • 用户点击“升窗”按钮 → 客户端调用 RPC方法(如 WindowControl_MoveUp())。

    • 这个方法的实现在服务端,客户端只是调用(消费)它。

  2. 服务端(车门ECU):

    • 收到请求后,执行硬件操作(如启动电机升窗)。

    • 返回执行结果(SUCCESS 或 FAILED)给客户端。


场景 2:服务端主动通知车窗状态(事件订阅)

  1. 服务端(车门ECU):

    • 实时监测车窗位置(如 0%~100%)。

    • 通过 AREthAddProvidedEventGroup() 声明支持 "车窗位置事件"。

    • 当位置变化时,主动推送事件(如 WindowPosition_Event(75%))。

  2. 客户端(仪表盘):

    • 调用 AREthAddConsumedEventGroup() 订阅 "车窗位置事件"。

    • 收到事件后更新UI(如显示车窗位置进度条)。


3. 服务端实现,客户端使用

  • 服务端(Server):

    • 拥有硬件控制权(如电机、传感器)。

    • 实现服务逻辑(如 WindowControl_MoveUp() 的具体代码)。

    • 决定数据何时发送(如车窗位置变化时触发事件)。

  • 客户端(Client):

    • 无权直接操作硬件,只能通过调用服务端的接口。

    • 依赖服务端的数据(如订阅事件获取车窗状态)。

    • 如果服务端未提供某个功能,客户端无法自行实现。


4. 关键区别:控制权与依赖关系


5.示例小结

  • 服务端(车门ECU):

    • 控制车窗升降(实际驱动电机)。

    • 提供 WindowControl 服务(包含方法、事件)。

  • 客户端(中控屏):

    • 调用升降方法(如 MoveUp()),但不直接控制电机。

    • 接收车窗状态事件(如 Position_Event),但不主动读取传感器。


总结

  • 服务端(Provided) = "我有能力,你来找我"
    (实现功能、控制硬件、主动推送数据)。

  • 客户端(Consumed) = "我需要能力,但我依赖你"
    (请求功能、接收数据,但无直接控制权)

这种设计保证了:

  1. 硬件安全(只有服务端能直接操作硬件)。

  2. 职责分离(客户端只关注交互,服务端专注控制)。

  3. 灵活性(多个客户端可共享同一服务端的功能)

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词